ソースを参照

Preliminary implementation of python's threading externs (#5730)

* Preliminary implementation of python's threading externs

* Add local()

* Make optional args optional

* Use Dict when appropriate
Kevin Leung 9 年 前
コミット
f5e7c3e252

+ 40 - 0
std/python/lib/Threading.hx

@@ -0,0 +1,40 @@
+/*
+ * Copyright (C)2005-2016 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+package python.lib;
+
+import python.lib.threading.Thread;
+
+@:pythonImport("threading")
+extern class Threading {
+
+	public static function active_count():Int;
+	public static function current_thread():Thread;
+	public static function get_ident():Int;
+	public static function enumerate():Array<Thread>;
+	public static function main_thread():Thread;
+	public static function settrace(func:Dynamic):Void;
+	public static function setprofile(func:Dynamic):Void;
+	public static function stack_size(?size:Int):Int;
+	public static function local():Dynamic;
+	public static var TIMEOUT_MAX:Float;
+	
+}

+ 29 - 0
std/python/lib/threading/Lock.hx

@@ -0,0 +1,29 @@
+/*
+ * Copyright (C)2005-2016 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+package python.lib.threading;
+
+@:pythonImport("threading", "Lock")
+extern class Lock {
+  public function new():Void;
+  public function acquire(?blocking:Bool, ?timeout:Float):Bool;
+  public function release():Void;
+}

+ 29 - 0
std/python/lib/threading/RLock.hx

@@ -0,0 +1,29 @@
+/*
+ * Copyright (C)2005-2016 Haxe Foundation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+package python.lib.threading;
+
+@:pythonImport("threading", "RLock")
+extern class RLock {
+  public function new():Void;
+  public function acquire(?blocking:Bool, ?timeout:Float):Bool;
+  public function release():Void;
+}

+ 17 - 0
std/python/lib/threading/Thread.hx

@@ -21,6 +21,23 @@
  */
 package python.lib.threading;
 
+typedef ThreadOptions = {
+	@:optional var group : Dynamic;
+	@:optional var target : Dynamic;
+	@:optional var name : String;
+	@:optional var args : Tuple<Dynamic>;
+	@:optional var kwargs : Dict<String,Dynamic>;
+	@:optional var daemon : Dynamic;
+}
+
 @:pythonImport("threading", "Thread")
 extern class Thread {
+  public var name:String;
+  public var ident:Int;
+  public var daemon:Bool;
+  public function new (?options:KwArgs<ThreadOptions>):Void;
+  public function start():Void;
+  public function run():Void;
+  public function join(?timeout:Float):Void;
+  public function is_alive():Bool;
 }