forked from LeenkxTeam/LNXSDK
		
	Update Files
This commit is contained in:
		
							
								
								
									
										37
									
								
								Kha/Tools/macos/std/eval/_std/EReg.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Kha/Tools/macos/std/eval/_std/EReg.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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. | ||||
|  */ | ||||
| // We need this class so that calls to the empty standard implementations | ||||
| // don't get optimized away. | ||||
| @:coreApi | ||||
| extern class EReg { | ||||
| 	function new(r:String, opt:String):Void; | ||||
| 	function match(s:String):Bool; | ||||
| 	function matched(n:Int):String; | ||||
| 	function matchedLeft():String; | ||||
| 	function matchedRight():String; | ||||
| 	function matchedPos():{pos:Int, len:Int}; | ||||
| 	function matchSub(s:String, pos:Int, len:Int = -1):Bool; | ||||
| 	function split(s:String):Array<String>; | ||||
| 	function replace(s:String, by:String):String; | ||||
| 	function map(s:String, f:EReg->String):String; | ||||
| 	static function escape(s:String):String; | ||||
| } | ||||
							
								
								
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/StringBuf.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/StringBuf.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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. | ||||
|  */ | ||||
| @:coreApi | ||||
| extern class StringBuf { | ||||
| 	var length(get, never):Int; | ||||
| 	function new():Void; | ||||
| 	private function get_length():Int; | ||||
| 	function add<T>(x:T):Void; | ||||
| 	function addChar(c:Int):Void; | ||||
| 	function addSub(s:String, pos:Int, ?len:Int):Void; | ||||
| 	function toString():String; | ||||
| } | ||||
							
								
								
									
										96
									
								
								Kha/Tools/macos/std/eval/_std/Sys.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								Kha/Tools/macos/std/eval/_std/Sys.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,96 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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. | ||||
|  */ | ||||
|  | ||||
| import haxe.SysTools; | ||||
|  | ||||
| @:require(sys) | ||||
| @:coreApi | ||||
| class Sys { | ||||
| 	extern static public function print(v:Dynamic):Void; | ||||
|  | ||||
| 	extern static public function println(v:Dynamic):Void; | ||||
|  | ||||
| 	extern static public function args():Array<String>; | ||||
|  | ||||
| 	extern static public function getEnv(s:String):String; | ||||
|  | ||||
| 	extern static public function putEnv(s:String, v:String):Void; | ||||
|  | ||||
| 	extern static public function environment():Map<String, String>; | ||||
|  | ||||
| 	extern static public function sleep(seconds:Float):Void; | ||||
|  | ||||
| 	extern static public function setTimeLocale(loc:String):Bool; | ||||
|  | ||||
| 	extern static public function getCwd():String; | ||||
|  | ||||
| 	extern static public function setCwd(s:String):Void; | ||||
|  | ||||
| 	extern static public function systemName():String; | ||||
|  | ||||
| 	extern static function _command(cmd:String):Int; | ||||
|  | ||||
| 	static public function command(cmd:String, ?args:Array<String>):Int { | ||||
| 		if (args == null) { | ||||
| 			return _command(cmd); | ||||
| 		} else { | ||||
| 			switch (systemName()) { | ||||
| 				case "Windows": | ||||
| 					cmd = [ | ||||
| 						for (a in [StringTools.replace(cmd, "/", "\\")].concat(args)) | ||||
| 							SysTools.quoteWinArg(a, true) | ||||
| 					].join(" "); | ||||
| 					return _command(cmd); | ||||
| 				case _: | ||||
| 					cmd = [cmd].concat(args).map(SysTools.quoteUnixArg).join(" "); | ||||
| 					return _command(cmd); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	static public function executablePath():String { | ||||
| 		return programPath(); | ||||
| 	} | ||||
|  | ||||
| 	extern static public function exit(code:Int):Void; | ||||
|  | ||||
| 	extern static public function time():Float; | ||||
|  | ||||
| 	extern static public function cpuTime():Float; | ||||
|  | ||||
| 	extern static public function programPath():String; | ||||
|  | ||||
| 	extern static public function getChar(echo:Bool):Int; | ||||
|  | ||||
| 	extern static public function stdin():haxe.io.Input; | ||||
|  | ||||
| 	extern static public function stdout():haxe.io.Output; | ||||
|  | ||||
| 	extern static public function stderr():haxe.io.Output; | ||||
|  | ||||
| 	static function __init__():Void { | ||||
| 		// This nonsense causes the classes to be loaded. Otherwise they might not make | ||||
| 		// it into the interpreter, and then stderr() et. al. don't work. | ||||
| 		var _ = (null : sys.io.FileOutput); | ||||
| 		var _ = (null : sys.io.FileInput); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										89
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Exception.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Exception.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | ||||
| package haxe; | ||||
|  | ||||
| @:coreApi | ||||
| class Exception { | ||||
| 	public var message(get,never):String; | ||||
| 	public var stack(get,never):CallStack; | ||||
| 	public var previous(get,never):Null<Exception>; | ||||
| 	public var native(get,never):Any; | ||||
|  | ||||
| 	@:noCompletion var __exceptionMessage:String; | ||||
| 	@:noCompletion var __exceptionStack:Null<CallStack>; | ||||
| 	@:noCompletion var __nativeStack:CallStack; | ||||
| 	@:noCompletion @:ifFeature("haxe.Exception.get_stack") var __skipStack:Int = 0; | ||||
| 	@:noCompletion var __nativeException:Any; | ||||
| 	@:noCompletion var __previousException:Null<Exception>; | ||||
|  | ||||
| 	static function caught(value:Any):Exception { | ||||
| 		if(Std.isOfType(value, Exception)) { | ||||
| 			return value; | ||||
| 		} else { | ||||
| 			return new ValueException(value, null, value); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	static function thrown(value:Any):Any { | ||||
| 		if(Std.isOfType(value, Exception)) { | ||||
| 			return (value:Exception).native; | ||||
| 		} else { | ||||
| 			var e = new ValueException(value); | ||||
| 			e.__shiftStack(); | ||||
| 			return e; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public function new(message:String, ?previous:Exception, ?native:Any) { | ||||
| 		__exceptionMessage = message; | ||||
| 		__previousException = previous; | ||||
| 		if(native != null) { | ||||
| 			__nativeStack = NativeStackTrace.exceptionStack(); | ||||
| 			__nativeException = native; | ||||
| 		} else { | ||||
| 			__nativeStack = NativeStackTrace.callStack(); | ||||
| 			__nativeException = this; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	function unwrap():Any { | ||||
| 		return __nativeException; | ||||
| 	} | ||||
|  | ||||
| 	@:ifFeature("haxe.Exception.thrown") | ||||
| 	public function toString():String { | ||||
| 		return message; | ||||
| 	} | ||||
|  | ||||
| 	public function details():String { | ||||
| 		return inline CallStack.exceptionToString(this); | ||||
| 	} | ||||
|  | ||||
| 	@:noCompletion | ||||
| 	@:ifFeature("haxe.Exception.get_stack") | ||||
| 	inline function __shiftStack():Void { | ||||
| 		__skipStack++; | ||||
| 	} | ||||
|  | ||||
| 	function get_message():String { | ||||
| 		return __exceptionMessage; | ||||
| 	} | ||||
|  | ||||
| 	function get_previous():Null<Exception> { | ||||
| 		return __previousException; | ||||
| 	} | ||||
|  | ||||
| 	final function get_native():Any { | ||||
| 		return __nativeException; | ||||
| 	} | ||||
|  | ||||
| 	function get_stack():CallStack { | ||||
| 		return switch __exceptionStack { | ||||
| 			case null: | ||||
| 				__exceptionStack = if(__skipStack > 0) { | ||||
| 					__nativeStack.asArray().slice(__skipStack); | ||||
| 				} else { | ||||
| 					__nativeStack; | ||||
| 				} | ||||
| 			case s: s; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										32
									
								
								Kha/Tools/macos/std/eval/_std/haxe/NativeStackTrace.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Kha/Tools/macos/std/eval/_std/haxe/NativeStackTrace.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | ||||
| package haxe; | ||||
|  | ||||
| import haxe.CallStack.StackItem; | ||||
|  | ||||
| /** | ||||
| 	Do not use manually. | ||||
| **/ | ||||
| @:dox(hide) | ||||
| @:noCompletion | ||||
| class NativeStackTrace { | ||||
| 	@:ifFeature('haxe.NativeStackTrace.exceptionStack') | ||||
| 	static public inline function saveStack(exception:Any):Void { | ||||
| 	} | ||||
|  | ||||
| 	static public function callStack():Array<StackItem> { | ||||
| 		return _callStack(); | ||||
| 	} | ||||
|  | ||||
| 	//implemented in the compiler | ||||
| 	static function _callStack():Array<StackItem> { | ||||
| 		return null; | ||||
| 	} | ||||
|  | ||||
| 	//implemented in the compiler | ||||
| 	static public function exceptionStack():Array<StackItem> { | ||||
| 		return null; | ||||
| 	} | ||||
|  | ||||
| 	static public inline function toHaxe(stack:Array<StackItem>, skip:Int = 0):Array<StackItem> { | ||||
| 		return skip > 0 ? stack.slice(skip) : stack; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										30
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Resource.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Resource.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe; | ||||
|  | ||||
| @:coreApi | ||||
| extern class Resource { | ||||
| 	static function listNames():Array<String>; | ||||
| 	static function getString(name:String):String; | ||||
| 	static function getBytes(name:String):haxe.io.Bytes; | ||||
| } | ||||
							
								
								
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Utf8.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/haxe/Utf8.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe; | ||||
|  | ||||
| @:coreApi | ||||
| @:deprecated('haxe.Utf8 is deprecated. Use UnicodeString instead.') | ||||
| extern class Utf8 { | ||||
| 	function new(?size:Int):Void; | ||||
| 	function addChar(c:Int):Void; | ||||
| 	function toString():String; | ||||
| 	static function iter(s:String, chars:Int->Void):Void; | ||||
| 	static function encode(s:String):String; | ||||
| 	static function decode(s:String):String; | ||||
| 	static function charCodeAt(s:String, index:Int):Int; | ||||
| 	static function validate(s:String):Bool; | ||||
| 	static function length(s:String):Int; | ||||
| 	static function compare(a:String, b:String):Int; | ||||
| 	static function sub(s:String, pos:Int, len:Int):String; | ||||
| } | ||||
							
								
								
									
										58
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/Bytes.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/Bytes.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe.io; | ||||
|  | ||||
| // @:coreApi | ||||
| extern class Bytes { | ||||
| 	function new(length:Int, b:BytesData):Void; | ||||
| 	var length(default, null):Int; | ||||
| 	function get(pos:Int):Int; | ||||
| 	function set(pos:Int, v:Int):Void; | ||||
| 	function blit(pos:Int, src:Bytes, srcpos:Int, len:Int):Void; | ||||
| 	function fill(pos:Int, len:Int, value:Int):Void; | ||||
| 	function sub(pos:Int, len:Int):Bytes; | ||||
| 	function compare(other:Bytes):Int; | ||||
| 	function getDouble(pos:Int):Float; | ||||
| 	function getFloat(pos:Int):Float; | ||||
| 	function setDouble(pos:Int, v:Float):Void; | ||||
| 	function setFloat(pos:Int, v:Float):Void; | ||||
| 	function getUInt16(pos:Int):Int; | ||||
| 	function setUInt16(pos:Int, v:Int):Void; | ||||
| 	function getInt32(pos:Int):Int; | ||||
| 	function getInt64(pos:Int):haxe.Int64; | ||||
| 	function setInt32(pos:Int, v:Int):Void; | ||||
| 	function setInt64(pos:Int, v:haxe.Int64):Void; | ||||
| 	function getString(pos:Int, len:Int, ?encoding:Encoding):String; | ||||
| 	function toString():String; | ||||
| 	function toHex():String; | ||||
| 	function getData():BytesData; | ||||
| 	static function alloc(length:Int):Bytes; | ||||
| 	@:pure | ||||
| 	static function ofString(s:String, ?encoding:Encoding):Bytes; | ||||
| 	static function ofData(b:BytesData):Bytes; | ||||
| 	static function ofHex(s:String):Bytes; | ||||
| 	static function fastGet(b:BytesData, pos:Int):Int; | ||||
| 	static function __init__():Void { | ||||
| 		haxe.io.Error; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/BytesBuffer.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/BytesBuffer.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe.io; | ||||
|  | ||||
| @:coreApi | ||||
| extern class BytesBuffer { | ||||
| 	var length(get, never):Int; | ||||
| 	function new():Void; | ||||
| 	private function get_length():Int; | ||||
| 	function addByte(byte:Int):Void; | ||||
| 	function add(src:Bytes):Void; | ||||
| 	function addString(v:String, ?encoding:Encoding):Void; | ||||
| 	function addInt32(v:Int):Void; | ||||
| 	function addInt64(v:haxe.Int64):Void; | ||||
| 	function addFloat(v:Float):Void; | ||||
| 	function addDouble(v:Float):Void; | ||||
| 	function addBytes(src:Bytes, pos:Int, len:Int):Void; | ||||
| 	function getBytes():Bytes; | ||||
| } | ||||
							
								
								
									
										34
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/BytesData.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								Kha/Tools/macos/std/eval/_std/haxe/io/BytesData.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe.io; | ||||
|  | ||||
| @:forward | ||||
| private abstract NativeBytesDataAbstract(Bytes) from Bytes to Bytes { | ||||
| 	@:arrayAccess public inline function get(i:Int) | ||||
| 		return this.get(i); | ||||
|  | ||||
| 	@:arrayAccess public inline function set(i:Int, v:Dynamic) | ||||
| 		this.set(i, v); | ||||
| } | ||||
|  | ||||
| typedef BytesData = NativeBytesDataAbstract; | ||||
							
								
								
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/haxe/zip/Compress.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/haxe/zip/Compress.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe.zip; | ||||
|  | ||||
| extern class Compress { | ||||
| 	function new(level:Int):Void; | ||||
| 	function execute(src:haxe.io.Bytes, srcPos:Int, dst:haxe.io.Bytes, dstPos:Int):{done:Bool, read:Int, wriet:Int}; | ||||
| 	function setFlushMode(f:FlushMode):Void; | ||||
| 	function close():Void; | ||||
| 	static function run(s:haxe.io.Bytes, level:Int):haxe.io.Bytes; | ||||
| } | ||||
							
								
								
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/haxe/zip/Uncompress.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Kha/Tools/macos/std/eval/_std/haxe/zip/Uncompress.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 haxe.zip; | ||||
|  | ||||
| extern class Uncompress { | ||||
| 	function new(?windowBits:Int):Void; | ||||
| 	function execute(src:haxe.io.Bytes, srcPos:Int, dst:haxe.io.Bytes, dstPos:Int):{done:Bool, read:Int, write:Int}; | ||||
| 	function setFlushMode(f:FlushMode):Void; | ||||
| 	function close():Void; | ||||
| 	static function run(src:haxe.io.Bytes, ?bufsize:Int):haxe.io.Bytes; | ||||
| } | ||||
							
								
								
									
										10
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Config.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Config.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| extern class Config { | ||||
| 	function new():Void; | ||||
|  | ||||
| 	function authmode(authmode:SslAuthmode):Void; | ||||
| 	function ca_chain(ca_chain:X509Crt):Void; | ||||
| 	function defaults(endpoint:SslEndpoint, transport:SslTransport, preset:SslPreset):Int; | ||||
| 	function rng<T>(p_rng:T):Void; | ||||
| } | ||||
							
								
								
									
										10
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/CtrDrbg.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/CtrDrbg.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
|  | ||||
| extern class CtrDrbg { | ||||
| 	function new():Void; | ||||
|  | ||||
| 	function random(output:Bytes, output_len:Int):Int; | ||||
| 	function seed(entropy:Entropy, ?custom:String):Int; | ||||
| } | ||||
							
								
								
									
										5
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Entropy.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Entropy.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| extern class Entropy { | ||||
| 	function new():Void; | ||||
| } | ||||
							
								
								
									
										5
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Error.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Error.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| class Error { | ||||
| 	extern static public function strerror(code:Int):String; | ||||
| } | ||||
							
								
								
									
										12
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/PkContext.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/PkContext.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
|  | ||||
| extern class PkContext { | ||||
| 	function new():Void; | ||||
|  | ||||
| 	function parse_key(key:Bytes, ?pwd:String):Int; | ||||
| 	function parse_keyfile(path:String, ?password:String):Int; | ||||
| 	function parse_public_key(key:Bytes):Int; | ||||
| 	function parse_public_keyfile(path:String):Int; | ||||
| } | ||||
							
								
								
									
										15
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Ssl.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/Ssl.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| import mbedtls.X509Crt; | ||||
| import haxe.io.Bytes; | ||||
|  | ||||
| extern class Ssl { | ||||
| 	function new():Void; | ||||
|  | ||||
| 	function get_peer_cert():Null<X509Crt>; | ||||
| 	function handshake():Int; | ||||
| 	function read(buf:Bytes, pos:Int, len:Int):Int; | ||||
| 	function set_hostname(hostname:String):Int; | ||||
| 	function setup(conf:Config):Int; | ||||
| 	function write(buf:Bytes, pos:Int, len:Int):Int; | ||||
| } | ||||
							
								
								
									
										8
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslAuthmode.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslAuthmode.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| @:native("mbedtls.SslAuthmode") | ||||
| extern enum abstract SslAuthmode(Int) { | ||||
| 	var SSL_VERIFY_NONE; | ||||
| 	var SSL_VERIFY_OPTIONAL; | ||||
| 	var SSL_VERIFY_REQUIRED; | ||||
| } | ||||
							
								
								
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslEndpoint.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslEndpoint.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| @:native("mbedtls.SslEndpoint") | ||||
| extern enum abstract SslEndpoint(Int) { | ||||
| 	var SSL_IS_CLIENT; | ||||
| 	var SSL_IS_SERVER; | ||||
| } | ||||
							
								
								
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslPreset.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslPreset.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| @:native("mbedtls.SslPreset") | ||||
| extern enum abstract SslPreset(Int) { | ||||
| 	var SSL_PRESET_DEFAULT; | ||||
| 	var SSL_PRESET_SUITEB; | ||||
| } | ||||
							
								
								
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslTransport.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/SslTransport.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| @:native("mbedtls.SslTransport") | ||||
| extern enum abstract SslTransport(Int) { | ||||
| 	var SSL_TRANSPORT_STREAM; | ||||
| 	var SSL_TRANSPORT_DATAGRAM; | ||||
| } | ||||
							
								
								
									
										12
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/X509Crt.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Kha/Tools/macos/std/eval/_std/mbedtls/X509Crt.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| package mbedtls; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
|  | ||||
| extern class X509Crt { | ||||
| 	function new():Void; | ||||
|  | ||||
| 	function next():Null<X509Crt>; | ||||
| 	function parse(buf:Bytes):Int; | ||||
| 	function parse_file(path:String):Int; | ||||
| 	function parse_path(path:String):Int; | ||||
| } | ||||
							
								
								
									
										52
									
								
								Kha/Tools/macos/std/eval/_std/sys/FileSystem.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Kha/Tools/macos/std/eval/_std/sys/FileSystem.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,52 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys; | ||||
|  | ||||
| // This class is here so it re-shadows other FileSystem classes in macros, | ||||
| // e.g. from hxnodejs. | ||||
| @:coreApi | ||||
| class FileSystem { | ||||
| 	extern static public function exists(path:String):Bool; | ||||
|  | ||||
| 	extern static public function rename(path:String, newPath:String):Void; | ||||
|  | ||||
| 	extern static public function stat(path:String):FileStat; | ||||
|  | ||||
| 	extern static public function fullPath(relPath:String):String; | ||||
|  | ||||
| 	static public function absolutePath(relPath:String):String { | ||||
| 		if (haxe.io.Path.isAbsolute(relPath)) | ||||
| 			return relPath; | ||||
| 		return haxe.io.Path.join([Sys.getCwd(), relPath]); | ||||
| 	} | ||||
|  | ||||
| 	extern static public function isDirectory(path:String):Bool; | ||||
|  | ||||
| 	extern static public function createDirectory(path:String):Void; | ||||
|  | ||||
| 	extern static public function deleteFile(path:String):Void; | ||||
|  | ||||
| 	extern static public function deleteDirectory(path:String):Void; | ||||
|  | ||||
| 	extern static public function readDirectory(path:String):Array<String>; | ||||
| } | ||||
							
								
								
									
										50
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/File.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/File.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.io; | ||||
|  | ||||
| @:coreApi | ||||
| class File { | ||||
| 	extern static public function getContent(path:String):String; | ||||
|  | ||||
| 	extern static public function saveContent(path:String, content:String):Void; | ||||
|  | ||||
| 	extern static public function getBytes(path:String):haxe.io.Bytes; | ||||
|  | ||||
| 	extern static public function saveBytes(path:String, bytes:haxe.io.Bytes):Void; | ||||
|  | ||||
| 	extern static public function read(path:String, binary:Bool = true):FileInput; | ||||
|  | ||||
| 	extern static public function write(path:String, binary:Bool = true):FileOutput; | ||||
|  | ||||
| 	extern static public function append(path:String, binary:Bool = true):FileOutput; | ||||
|  | ||||
| 	extern static public function update(path:String, binary:Bool = true):FileOutput; | ||||
|  | ||||
| 	static public function copy(srcPath:String, dstPath:String):Void { | ||||
| 		var s = read(srcPath, true); | ||||
| 		var d = write(dstPath, true); | ||||
| 		d.writeInput(s); | ||||
| 		s.close(); | ||||
| 		d.close(); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/FileInput.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/FileInput.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.io; | ||||
|  | ||||
| // This class is not extern because externs overriding non-externs messes with DCE | ||||
| @:coreApi | ||||
| class FileInput extends haxe.io.Input { | ||||
| 	extern public override function close():Void; | ||||
|  | ||||
| 	extern public function eof():Bool; | ||||
|  | ||||
| 	extern public function seek(p:Int, pos:FileSeek):Void; | ||||
|  | ||||
| 	extern public function tell():Int; | ||||
|  | ||||
| 	extern public override function readByte():Int; | ||||
|  | ||||
| 	extern public override function readBytes(bytes:haxe.io.Bytes, pos:Int, len:Int):Int; | ||||
| } | ||||
							
								
								
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/FileOutput.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/FileOutput.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.io; | ||||
|  | ||||
| // This class is not extern because externs overriding non-externs messes with DCE | ||||
| @:coreApi | ||||
| class FileOutput extends haxe.io.Output { | ||||
| 	extern public override function close():Void; | ||||
|  | ||||
| 	extern public override function flush():Void; | ||||
|  | ||||
| 	extern public function seek(p:Int, pos:FileSeek):Void; | ||||
|  | ||||
| 	extern public function tell():Int; | ||||
|  | ||||
| 	extern public override function writeByte(c:Int):Void; | ||||
|  | ||||
| 	extern public override function writeBytes(bytes:haxe.io.Bytes, pos:Int, len:Int):Int; | ||||
| } | ||||
							
								
								
									
										133
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/Process.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								Kha/Tools/macos/std/eval/_std/sys/io/Process.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,133 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.io; | ||||
|  | ||||
| private extern class NativeProcess { | ||||
| 	function new(cmd:String, ?args:Array<String>):Void; | ||||
|  | ||||
| 	function close():Void; | ||||
| 	function exitCode():Int; | ||||
| 	function getPid():Int; | ||||
| 	function kill():Void; | ||||
|  | ||||
| 	function readStderr(bytes:haxe.io.Bytes, pos:Int, len:Int):Int; | ||||
| 	function readStdout(bytes:haxe.io.Bytes, pos:Int, len:Int):Int; | ||||
|  | ||||
| 	function closeStdin():Void; | ||||
| 	function writeStdin(bytes:haxe.io.Bytes, pos:Int, len:Int):Int; | ||||
| } | ||||
|  | ||||
| private class Stdin extends haxe.io.Output { | ||||
| 	var proc:NativeProcess; | ||||
| 	var buf:haxe.io.Bytes; | ||||
|  | ||||
| 	public function new(proc:NativeProcess) { | ||||
| 		this.proc = proc; | ||||
| 		buf = haxe.io.Bytes.alloc(1); | ||||
| 	} | ||||
|  | ||||
| 	public override function close() { | ||||
| 		super.close(); | ||||
| 		proc.closeStdin(); | ||||
| 	} | ||||
|  | ||||
| 	public override function writeByte(c:Int) { | ||||
| 		buf.set(0, c); | ||||
| 		writeBytes(buf, 0, 1); | ||||
| 	} | ||||
|  | ||||
| 	public override function writeBytes(buf:haxe.io.Bytes, pos:Int, len:Int) { | ||||
| 		try { | ||||
| 			return proc.writeStdin(buf, pos, len); | ||||
| 		} catch (e:Dynamic) { | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| private class Stdout extends haxe.io.Input { | ||||
| 	var proc:NativeProcess; | ||||
| 	var out:Bool; | ||||
| 	var buf:haxe.io.Bytes; | ||||
|  | ||||
| 	public function new(proc:NativeProcess, out:Bool) { | ||||
| 		this.proc = proc; | ||||
| 		this.out = out; | ||||
| 		buf = haxe.io.Bytes.alloc(1); | ||||
| 	} | ||||
|  | ||||
| 	public override function readByte() { | ||||
| 		if (readBytes(buf, 0, 1) == 0) | ||||
| 			throw haxe.io.Error.Blocked; | ||||
| 		return buf.get(0); | ||||
| 	} | ||||
|  | ||||
| 	public override function readBytes(bytes:haxe.io.Bytes, pos:Int, len:Int):Int { | ||||
| 		try { | ||||
| 			if (out) { | ||||
| 				return proc.readStdout(bytes, pos, len); | ||||
| 			} else { | ||||
| 				return proc.readStderr(bytes, pos, len); | ||||
| 			} | ||||
| 		} catch (e:Dynamic) { | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @:coreApi | ||||
| class Process { | ||||
| 	public var stdout(default, null):haxe.io.Input; | ||||
| 	public var stderr(default, null):haxe.io.Input; | ||||
| 	public var stdin(default, null):haxe.io.Output; | ||||
|  | ||||
| 	var proc:NativeProcess; | ||||
|  | ||||
| 	public function new(cmd:String, ?args:Array<String>, ?detached:Bool):Void { | ||||
| 		if (detached) { | ||||
| 			throw "Detached process is not supported on this platform"; | ||||
| 		} | ||||
| 		proc = new NativeProcess(cmd, args); | ||||
| 		stdout = new Stdout(proc, true); | ||||
| 		stderr = new Stdout(proc, false); | ||||
| 		stdin = new Stdin(proc); | ||||
| 	} | ||||
|  | ||||
| 	public inline function getPid():Int { | ||||
| 		return proc.getPid(); | ||||
| 	} | ||||
|  | ||||
| 	public function exitCode(block:Bool = true):Null<Int> { | ||||
| 		if (block == false) | ||||
| 			throw "Non blocking exitCode() not supported on this platform"; | ||||
| 		return proc.exitCode(); | ||||
| 	} | ||||
|  | ||||
| 	public inline function close():Void { | ||||
| 		proc.close(); | ||||
| 	} | ||||
|  | ||||
| 	public inline function kill():Void { | ||||
| 		proc.kill(); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										53
									
								
								Kha/Tools/macos/std/eval/_std/sys/net/Host.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Kha/Tools/macos/std/eval/_std/sys/net/Host.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.net; | ||||
|  | ||||
| class Host { | ||||
| 	public var host(default, null):String; | ||||
| 	public var ip(default, null):Int; | ||||
|  | ||||
| 	public function new(name:String) { | ||||
| 		host = name; | ||||
| 		init(resolve(name)); | ||||
| 	} | ||||
|  | ||||
| 	public function toString() { | ||||
| 		return hostToString(ip); | ||||
| 	} | ||||
|  | ||||
| 	public function reverse() { | ||||
| 		return hostReverse(ip); | ||||
| 	} | ||||
|  | ||||
| 	function init(ip:Int) { | ||||
| 		this.ip = ip; | ||||
| 	} | ||||
|  | ||||
| 	extern static public function localhost(); | ||||
|  | ||||
| 	extern static function hostReverse(ip:Int); | ||||
|  | ||||
| 	extern static function hostToString(ip:Int); | ||||
|  | ||||
| 	extern static function resolve(name:String); | ||||
| } | ||||
							
								
								
									
										191
									
								
								Kha/Tools/macos/std/eval/_std/sys/net/Socket.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										191
									
								
								Kha/Tools/macos/std/eval/_std/sys/net/Socket.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,191 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.net; | ||||
|  | ||||
| import haxe.io.Error; | ||||
| import eval.vm.NativeSocket; | ||||
|  | ||||
| private class SocketOutput extends haxe.io.Output { | ||||
| 	var socket:NativeSocket; | ||||
|  | ||||
| 	public function new(socket:NativeSocket) { | ||||
| 		this.socket = socket; | ||||
| 	} | ||||
|  | ||||
| 	public override function writeByte(c:Int) { | ||||
| 		try { | ||||
| 			socket.sendChar(c); | ||||
| 		} catch (e:Dynamic) { | ||||
| 			if (e == "Blocking") | ||||
| 				throw Blocked; | ||||
| 			else if (e == "EOF") | ||||
| 				throw new haxe.io.Eof(); | ||||
| 			else | ||||
| 				throw Custom(e); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public override function writeBytes(buf:haxe.io.Bytes, pos:Int, len:Int) { | ||||
| 		return try { | ||||
| 			socket.send(buf, pos, len); | ||||
| 		} catch (e:Dynamic) { | ||||
| 			if (e == "Blocking") | ||||
| 				throw Blocked; | ||||
| 			else | ||||
| 				throw Custom(e); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public override function close() { | ||||
| 		super.close(); | ||||
| 		socket.close(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| private class SocketInput extends haxe.io.Input { | ||||
| 	var socket:NativeSocket; | ||||
|  | ||||
| 	public function new(socket:NativeSocket) { | ||||
| 		this.socket = socket; | ||||
| 	} | ||||
|  | ||||
| 	public override function readByte() { | ||||
| 		return try { | ||||
| 			socket.receiveChar(); | ||||
| 		} catch (e:Dynamic) { | ||||
| 			if (e == "Blocking") | ||||
| 				throw Blocked; | ||||
| 			else | ||||
| 				throw new haxe.io.Eof(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public override function readBytes(buf:haxe.io.Bytes, pos:Int, len:Int) { | ||||
| 		var r; | ||||
| 		try { | ||||
| 			r = socket.receive(buf, pos, len); | ||||
| 		} catch (e:Dynamic) { | ||||
| 			if (e == "Blocking") | ||||
| 				throw Blocked; | ||||
| 			else | ||||
| 				throw Custom(e); | ||||
| 		} | ||||
| 		if (r == 0) | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		return r; | ||||
| 	} | ||||
|  | ||||
| 	public override function close() { | ||||
| 		super.close(); | ||||
| 		socket.close(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @:coreApi | ||||
| class Socket { | ||||
| 	public var input(default, null):haxe.io.Input; | ||||
| 	public var output(default, null):haxe.io.Output; | ||||
| 	public var custom:Dynamic; | ||||
|  | ||||
| 	@:ifFeature("sys.net.Socket.select") var socket:NativeSocket; | ||||
|  | ||||
| 	public function new() { | ||||
| 		init(new NativeSocket()); | ||||
| 	} | ||||
|  | ||||
| 	private function init(socket:NativeSocket):Void { | ||||
| 		this.socket = socket; | ||||
| 		input = new SocketInput(socket); | ||||
| 		output = new SocketOutput(socket); | ||||
| 	} | ||||
|  | ||||
| 	public function close():Void { | ||||
| 		socket.close(); | ||||
| 	} | ||||
|  | ||||
| 	public function read():String { | ||||
| 		return input.readAll().toString(); | ||||
| 	} | ||||
|  | ||||
| 	public function write(content:String):Void { | ||||
| 		output.writeString(content); | ||||
| 	} | ||||
|  | ||||
| 	public function connect(host:Host, port:Int):Void { | ||||
| 		socket.connect(host.ip, port); | ||||
| 	} | ||||
|  | ||||
| 	public function listen(connections:Int):Void { | ||||
| 		socket.listen(connections); | ||||
| 	} | ||||
|  | ||||
| 	public function shutdown(read:Bool, write:Bool):Void { | ||||
| 		socket.shutdown(read, write); | ||||
| 	} | ||||
|  | ||||
| 	public function bind(host:Host, port:Int):Void { | ||||
| 		socket.bind(host.ip, port); | ||||
| 	} | ||||
|  | ||||
| 	public function accept():Socket { | ||||
| 		var nativeSocket = socket.accept(); | ||||
| 		var socket:Socket = Type.createEmptyInstance(Socket); | ||||
| 		socket.init(nativeSocket); | ||||
| 		return socket; | ||||
| 	} | ||||
|  | ||||
| 	@:access(sys.net.Host.init) | ||||
| 	public function peer():{host:Host, port:Int} { | ||||
| 		var info = socket.peer(); | ||||
| 		var host:Host = Type.createEmptyInstance(Host); | ||||
| 		host.init(info.ip); | ||||
| 		return {host: host, port: info.port}; | ||||
| 	} | ||||
|  | ||||
| 	@:access(sys.net.Host.init) | ||||
| 	public function host():{host:Host, port:Int} { | ||||
| 		var info = socket.host(); | ||||
| 		var host:Host = Type.createEmptyInstance(Host); | ||||
| 		host.init(info.ip); | ||||
| 		return {host: host, port: info.port}; | ||||
| 	} | ||||
|  | ||||
| 	public function setTimeout(timeout:Float):Void { | ||||
| 		socket.setTimeout(timeout); | ||||
| 	} | ||||
|  | ||||
| 	public function waitForRead():Void { | ||||
| 		select([this], null, null, -1); | ||||
| 	} | ||||
|  | ||||
| 	public function setBlocking(b:Bool):Void {} // TODO: Don't know how to implement this... | ||||
|  | ||||
| 	public function setFastSend(b:Bool):Void { | ||||
| 		socket.setFastSend(b); | ||||
| 	} | ||||
|  | ||||
| 	public static function select(read:Array<Socket>, write:Array<Socket>, others:Array<Socket>, | ||||
| 			?timeout:Float):{read:Array<Socket>, write:Array<Socket>, others:Array<Socket>} { | ||||
| 		return NativeSocket.select(read, write, others, timeout); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										102
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Certificate.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Certificate.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.ssl; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
| import sys.ssl.Mbedtls; | ||||
| import mbedtls.X509Crt; | ||||
|  | ||||
| @:coreApi | ||||
| class Certificate { | ||||
| 	var native:X509Crt; | ||||
|  | ||||
| 	function new(native:X509Crt) { | ||||
| 		this.native = native; | ||||
| 	} | ||||
|  | ||||
| 	public static function loadFile(file:String):Certificate { | ||||
| 		var cert = new X509Crt(); | ||||
| 		cert.parse_file(file); | ||||
| 		return new Certificate(cert); | ||||
| 	} | ||||
|  | ||||
| 	public static function loadPath(path:String):Certificate { | ||||
| 		var cert = new X509Crt(); | ||||
| 		cert.parse_path(path); | ||||
| 		return new Certificate(cert); | ||||
| 	} | ||||
|  | ||||
| 	public static function fromString(str:String):Certificate { | ||||
| 		var cert = new X509Crt(); | ||||
| 		trace(mbedtls.Error.strerror(cert.parse(Bytes.ofString(str)))); | ||||
| 		return new Certificate(cert); | ||||
| 	} | ||||
|  | ||||
| 	public static function loadDefaults():Certificate { | ||||
| 		var cert = new X509Crt(); | ||||
| 		Mbedtls.loadDefaultCertificates(cert); | ||||
| 		return new Certificate(cert); | ||||
| 	} | ||||
|  | ||||
| 	public var commonName(get, null):Null<String>; | ||||
|  | ||||
| 	public var altNames(get, null):Array<String>; | ||||
|  | ||||
| 	public var notBefore(get, null):Date; | ||||
|  | ||||
| 	public var notAfter(get, null):Date; | ||||
|  | ||||
| 	extern public function subject(field:String):Null<String>; | ||||
|  | ||||
| 	extern public function issuer(field:String):Null<String>; | ||||
|  | ||||
| 	public function next():Null<Certificate> { | ||||
| 		var cert = native.next(); | ||||
| 		if (cert == null) { | ||||
| 			return null; | ||||
| 		} | ||||
| 		return new Certificate(cert); | ||||
| 	} | ||||
|  | ||||
| 	public function add(pem:String):Void { | ||||
| 		native.parse(Bytes.ofString(pem)); | ||||
| 	} | ||||
|  | ||||
| 	public function addDER(der:Bytes):Void { | ||||
| 		native.parse(der); | ||||
| 	} | ||||
|  | ||||
| 	private function get_commonName():Null<String> { | ||||
| 		return subject("CN"); | ||||
| 	} | ||||
|  | ||||
| 	extern private function get_altNames():Array<String>; | ||||
|  | ||||
| 	extern private function get_notBefore():Date; | ||||
|  | ||||
| 	extern private function get_notAfter():Date; | ||||
|  | ||||
| 	private inline function getNative():X509Crt { | ||||
| 		return native; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										69
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Key.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Key.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,69 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.ssl; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
| import mbedtls.PkContext; | ||||
|  | ||||
| @:coreApi | ||||
| class Key { | ||||
| 	var native:PkContext; | ||||
|  | ||||
| 	function new() { | ||||
| 		native = new PkContext(); | ||||
| 	} | ||||
|  | ||||
| 	static public function loadFile(file:String, ?isPublic:Bool, ?pass:String):Key { | ||||
| 		var key = new Key(); | ||||
| 		var code = if (isPublic) { | ||||
| 			key.native.parse_public_keyfile(file); | ||||
| 		} else { | ||||
| 			key.native.parse_keyfile(file, pass); | ||||
| 		} | ||||
| 		if (code != 0) { | ||||
| 			throw(mbedtls.Error.strerror(code)); | ||||
| 		} | ||||
| 		return key; | ||||
| 	} | ||||
|  | ||||
| 	static function parse(data:Bytes, isPublic:Bool, ?pass:String):Key { | ||||
| 		var key = new Key(); | ||||
| 		var code = if (isPublic) { | ||||
| 			key.native.parse_public_key(data); | ||||
| 		} else { | ||||
| 			key.native.parse_key(data); | ||||
| 		} | ||||
| 		if (code != 0) { | ||||
| 			throw(mbedtls.Error.strerror(code)); | ||||
| 		} | ||||
| 		return key; | ||||
| 	} | ||||
|  | ||||
| 	static public function readPEM(data:String, isPublic:Bool, ?pass:String):Key { | ||||
| 		return parse(Bytes.ofString(data), isPublic, pass); | ||||
| 	} | ||||
|  | ||||
| 	static public function readDER(data:haxe.io.Bytes, isPublic:Bool):Key { | ||||
| 		return parse(data, isPublic); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										66
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Mbedtls.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Mbedtls.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| package sys.ssl; | ||||
|  | ||||
| import eval.vm.NativeSocket; | ||||
| import mbedtls.Ssl; | ||||
| import mbedtls.Entropy; | ||||
| import mbedtls.CtrDrbg; | ||||
| import mbedtls.X509Crt; | ||||
|  | ||||
| class Mbedtls { | ||||
| 	static var entropy:Null<Entropy>; | ||||
| 	static var ctr:Null<CtrDrbg>; | ||||
|  | ||||
| 	static public function getDefaultEntropy() { | ||||
| 		if (entropy == null) { | ||||
| 			entropy = new Entropy(); | ||||
| 		} | ||||
| 		return entropy; | ||||
| 	} | ||||
|  | ||||
| 	static public function getDefaultCtrDrbg() { | ||||
| 		if (ctr == null) { | ||||
| 			ctr = new CtrDrbg(); | ||||
| 			ctr.seed(getDefaultEntropy()); | ||||
| 		} | ||||
| 		return ctr; | ||||
| 	} | ||||
|  | ||||
| 	static public function loadDefaultCertificates(certificate:X509Crt) { | ||||
| 		if (loadDefaults(certificate) == 0) { | ||||
| 			return; | ||||
| 		} | ||||
| 		var defPaths = switch (Sys.systemName()) { | ||||
| 			case "Linux": | ||||
| 				[ | ||||
| 					"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc. | ||||
| 					"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL | ||||
| 					"/etc/ssl/ca-bundle.pem", // OpenSUSE | ||||
| 					"/etc/pki/tls/cacert.pem", // OpenELEC | ||||
| 					"/etc/ssl/certs", // SLES10/SLES11 | ||||
| 					"/system/etc/security/cacerts" // Android | ||||
| 				]; | ||||
| 			case "BSD": | ||||
| 				[ | ||||
| 					"/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly | ||||
| 					"/etc/ssl/cert.pem", // OpenBSD | ||||
| 					"/etc/openssl/certs/ca-certificates.crt", // NetBSD | ||||
| 				]; | ||||
| 			case "Android": | ||||
| 				["/system/etc/security/cacerts"]; | ||||
| 			default: | ||||
| 				[]; | ||||
| 		} | ||||
| 		for (path in defPaths) { | ||||
| 			if (sys.FileSystem.exists(path)) { | ||||
| 				if (sys.FileSystem.isDirectory(path)) | ||||
| 					certificate.parse_path(path); | ||||
| 				else | ||||
| 					certificate.parse_file(path); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	extern static public function setSocket(ssl:Ssl, socket:NativeSocket):Int; | ||||
|  | ||||
| 	extern static function loadDefaults(certificate:X509Crt):Int; | ||||
| } | ||||
							
								
								
									
										206
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Socket.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								Kha/Tools/macos/std/eval/_std/sys/ssl/Socket.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,206 @@ | ||||
| package sys.ssl; | ||||
|  | ||||
| import haxe.io.Bytes; | ||||
| import eval.vm.NativeSocket; | ||||
| import mbedtls.Config; | ||||
| import mbedtls.Ssl; | ||||
|  | ||||
| private class SocketInput extends haxe.io.Input { | ||||
| 	@:allow(sys.ssl.Socket) private var socket:Socket; | ||||
| 	var readBuf:Bytes; | ||||
|  | ||||
| 	public function new(s:Socket) { | ||||
| 		this.socket = s; | ||||
| 		readBuf = Bytes.alloc(1); | ||||
| 	} | ||||
|  | ||||
| 	public override function readByte() { | ||||
| 		socket.handshake(); | ||||
| 		var r = @:privateAccess socket.ssl.read(readBuf, 0, 1); | ||||
| 		if (r == -1) | ||||
| 			throw haxe.io.Error.Blocked; | ||||
| 		else if (r < 0) | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		return readBuf.get(0); | ||||
| 	} | ||||
|  | ||||
| 	public override function readBytes(buf:haxe.io.Bytes, pos:Int, len:Int):Int { | ||||
| 		if (pos < 0 || len < 0 || ((pos + len) : UInt) > (buf.length : UInt)) | ||||
| 			throw haxe.io.Error.OutsideBounds; | ||||
| 		socket.handshake(); | ||||
| 		var r = @:privateAccess socket.ssl.read(buf, pos, len); | ||||
| 		if (r == -1) | ||||
| 			throw haxe.io.Error.Blocked; | ||||
| 		else if (r <= 0) | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		return r; | ||||
| 	} | ||||
|  | ||||
| 	public override function close() { | ||||
| 		super.close(); | ||||
| 		if (socket != null) | ||||
| 			socket.close(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| private class SocketOutput extends haxe.io.Output { | ||||
| 	@:allow(sys.ssl.Socket) private var socket:Socket; | ||||
| 	var writeBuf:Bytes; | ||||
|  | ||||
| 	public function new(s:Socket) { | ||||
| 		this.socket = s; | ||||
| 		writeBuf = Bytes.alloc(1); | ||||
| 	} | ||||
|  | ||||
| 	public override function writeByte(c:Int) { | ||||
| 		socket.handshake(); | ||||
| 		writeBuf.set(0, c); | ||||
| 		var r = @:privateAccess socket.ssl.write(writeBuf, 0, 1); | ||||
| 		if (r == -1) | ||||
| 			throw haxe.io.Error.Blocked; | ||||
| 		else if (r < 0) | ||||
| 			throw new haxe.io.Eof(); | ||||
| 	} | ||||
|  | ||||
| 	public override function writeBytes(buf:haxe.io.Bytes, pos:Int, len:Int):Int { | ||||
| 		if (pos < 0 || len < 0 || ((pos + len) : UInt) > (buf.length : UInt)) | ||||
| 			throw haxe.io.Error.OutsideBounds; | ||||
| 		socket.handshake(); | ||||
| 		var r = @:privateAccess socket.ssl.write(buf, pos, len); | ||||
| 		if (r == -1) | ||||
| 			throw haxe.io.Error.Blocked; | ||||
| 		else if (r < 0) | ||||
| 			throw new haxe.io.Eof(); | ||||
| 		return r; | ||||
| 	} | ||||
|  | ||||
| 	public override function close() { | ||||
| 		super.close(); | ||||
| 		if (socket != null) | ||||
| 			socket.close(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @:coreApi | ||||
| class Socket extends sys.net.Socket { | ||||
| 	public static var DEFAULT_VERIFY_CERT:Null<Bool> = true; | ||||
|  | ||||
| 	public static var DEFAULT_CA:Null<Certificate>; | ||||
|  | ||||
| 	private var conf:Config; | ||||
| 	private var ssl:Ssl; | ||||
|  | ||||
| 	public var verifyCert:Null<Bool>; | ||||
|  | ||||
| 	private var caCert:Null<Certificate>; | ||||
| 	private var hostname:String; | ||||
|  | ||||
| 	private var handshakeDone:Bool; | ||||
| 	private var isBlocking:Bool = true; | ||||
|  | ||||
| 	override function init(socket:NativeSocket):Void { | ||||
| 		this.socket = socket; | ||||
| 		input = new SocketInput(this); | ||||
| 		output = new SocketOutput(this); | ||||
| 		if (DEFAULT_VERIFY_CERT && DEFAULT_CA == null) { | ||||
| 			DEFAULT_CA = Certificate.loadDefaults(); | ||||
| 		} | ||||
| 		verifyCert = DEFAULT_VERIFY_CERT; | ||||
| 		caCert = DEFAULT_CA; | ||||
| 	} | ||||
|  | ||||
| 	public override function connect(host:sys.net.Host, port:Int):Void { | ||||
| 		conf = buildConfig(false); | ||||
| 		ssl = new Ssl(); | ||||
| 		ssl.setup(conf); | ||||
| 		Mbedtls.setSocket(ssl, socket); | ||||
| 		handshakeDone = false; | ||||
| 		if (hostname == null) | ||||
| 			hostname = host.host; | ||||
| 		if (hostname != null) | ||||
| 			ssl.set_hostname(hostname); | ||||
| 		socket.connect(host.ip, port); | ||||
| 		if (isBlocking) | ||||
| 			handshake(); | ||||
| 	} | ||||
|  | ||||
| 	public function handshake():Void { | ||||
| 		if (!handshakeDone) { | ||||
| 			var r = ssl.handshake(); | ||||
| 			if (r == 0) | ||||
| 				handshakeDone = true; | ||||
| 			else if (r == -1) | ||||
| 				throw haxe.io.Error.Blocked; | ||||
| 			else | ||||
| 				throw mbedtls.Error.strerror(r); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	override function setBlocking(b:Bool):Void { | ||||
| 		super.setBlocking(b); | ||||
| 		isBlocking = b; | ||||
| 	} | ||||
|  | ||||
| 	public function setCA(cert:Certificate):Void { | ||||
| 		caCert = cert; | ||||
| 	} | ||||
|  | ||||
| 	public function setHostname(name:String):Void { | ||||
| 		hostname = name; | ||||
| 	} | ||||
|  | ||||
| 	public override function close():Void { | ||||
| 		super.close(); | ||||
| 		var input:SocketInput = cast input; | ||||
| 		var output:SocketOutput = cast output; | ||||
| 		@:privateAccess input.socket = output.socket = null; | ||||
| 		input.close(); | ||||
| 		output.close(); | ||||
| 	} | ||||
|  | ||||
| 	public override function bind(host:sys.net.Host, port:Int):Void { | ||||
| 		conf = buildConfig(true); | ||||
|  | ||||
| 		socket.bind(host.ip, port); | ||||
| 	} | ||||
|  | ||||
| 	public override function accept():Socket { | ||||
| 		var c = socket.accept(); | ||||
| 		var cssl = new Ssl(); | ||||
| 		cssl.setup(conf); | ||||
| 		Mbedtls.setSocket(cssl, c); | ||||
|  | ||||
| 		var s = Type.createEmptyInstance(sys.ssl.Socket); | ||||
| 		s.socket = c; | ||||
| 		s.ssl = cssl; | ||||
| 		s.input = new SocketInput(s); | ||||
| 		s.output = new SocketOutput(s); | ||||
| 		s.handshakeDone = false; | ||||
|  | ||||
| 		return s; | ||||
| 	} | ||||
|  | ||||
| 	public function addSNICertificate(cbServernameMatch:String->Bool, cert:Certificate, key:Key):Void { | ||||
| 		throw new haxe.exceptions.NotImplementedException(); | ||||
| 	} | ||||
|  | ||||
| 	public function peerCertificate():Certificate { | ||||
| 		return @:privateAccess new Certificate(ssl.get_peer_cert()); | ||||
| 	} | ||||
|  | ||||
| 	public function setCertificate(cert:Certificate, key:Key):Void { | ||||
| 		throw new haxe.exceptions.NotImplementedException(); | ||||
| 	} | ||||
|  | ||||
| 	private function buildConfig(server:Bool):Config { | ||||
| 		var conf = new Config(); | ||||
| 		conf.defaults(server ? SSL_IS_SERVER : SSL_IS_CLIENT, SSL_TRANSPORT_STREAM, SSL_PRESET_DEFAULT); | ||||
| 		conf.rng(Mbedtls.getDefaultCtrDrbg()); | ||||
|  | ||||
| 		if (caCert != null) { | ||||
| 			conf.ca_chain(@:privateAccess caCert.getNative()); | ||||
| 		} | ||||
| 		conf.authmode(if (verifyCert) SSL_VERIFY_REQUIRED else if (verifyCert == null) SSL_VERIFY_OPTIONAL else SSL_VERIFY_NONE); | ||||
| 		return conf; | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										140
									
								
								Kha/Tools/macos/std/eval/_std/sys/thread/EventLoop.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								Kha/Tools/macos/std/eval/_std/sys/thread/EventLoop.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,140 @@ | ||||
| package sys.thread; | ||||
|  | ||||
| import eval.luv.Loop; | ||||
| import eval.luv.Async; | ||||
| import eval.luv.Timer as LuvTimer; | ||||
|  | ||||
| @:coreApi | ||||
| enum NextEventTime { | ||||
| 	Now; | ||||
| 	Never; | ||||
| 	AnyTime(time:Null<Float>); | ||||
| 	At(time:Float); | ||||
| } | ||||
|  | ||||
| abstract EventHandler(RegularEvent) from RegularEvent to RegularEvent {} | ||||
|  | ||||
| private class RegularEvent { | ||||
| 	public var timer:Null<LuvTimer>; | ||||
| 	public var event:()->Void; | ||||
|  | ||||
| 	public function new(e:()->Void) { | ||||
| 		event = e; | ||||
| 	} | ||||
|  | ||||
| 	public function run() { | ||||
| 		event(); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @:coreApi | ||||
| class EventLoop { | ||||
| 	@:allow(eval.luv.Loop) | ||||
| 	final handle:Loop; | ||||
|  | ||||
| 	final mutex = new Mutex(); | ||||
| 	final oneTimeEvents = new Array<Null<()->Void>>(); | ||||
| 	var oneTimeEventsIdx = 0; | ||||
| 	final wakeup:Async; | ||||
| 	var promisedEventsCount = 0; | ||||
| 	var pending:Array<()->Void> = []; | ||||
| 	var looping = false; | ||||
|  | ||||
| 	public function new():Void { | ||||
| 		handle = Loop.init().resolve(); | ||||
| 		wakeup = Async.init(handle, consumePending).resolve(); | ||||
| 		wakeup.unref(); | ||||
| 	} | ||||
|  | ||||
| 	public function repeat(event:()->Void, intervalMs:Int):EventHandler { | ||||
| 		var e = new RegularEvent(event); | ||||
| 		mutex.acquire(); | ||||
| 		pending.push(() -> { | ||||
| 			e.timer = LuvTimer.init(handle).resolve(); | ||||
| 			e.timer.start(e.run, intervalMs, intervalMs < 1 ? 1 : intervalMs).resolve(); | ||||
| 		}); | ||||
| 		mutex.release(); | ||||
| 		wakeup.send(); | ||||
| 		return e; | ||||
| 	} | ||||
|  | ||||
| 	public function cancel(eventHandler:EventHandler):Void { | ||||
| 		mutex.acquire(); | ||||
| 		(eventHandler:RegularEvent).event = noop; | ||||
| 		pending.push(() -> { | ||||
| 			var timer = (eventHandler:RegularEvent).timer; | ||||
| 			timer.stop().resolve(); | ||||
| 			timer.close(noop); | ||||
| 		}); | ||||
| 		mutex.release(); | ||||
| 		wakeup.send(); | ||||
| 	} | ||||
| 	static final noop = function() {} | ||||
|  | ||||
| 	public function promise():Void { | ||||
| 		mutex.acquire(); | ||||
| 		++promisedEventsCount; | ||||
| 		pending.push(refUnref); | ||||
| 		mutex.release(); | ||||
| 		wakeup.send(); | ||||
| 	} | ||||
|  | ||||
| 	public function run(event:()->Void):Void { | ||||
| 		mutex.acquire(); | ||||
| 		pending.push(event); | ||||
| 		mutex.release(); | ||||
| 		wakeup.send(); | ||||
| 	} | ||||
|  | ||||
| 	public function runPromised(event:()->Void):Void { | ||||
| 		mutex.acquire(); | ||||
| 		--promisedEventsCount; | ||||
| 		pending.push(refUnref); | ||||
| 		pending.push(event); | ||||
| 		mutex.release(); | ||||
| 		wakeup.send(); | ||||
| 	} | ||||
|  | ||||
| 	function refUnref():Void { | ||||
| 		if(promisedEventsCount > 0) { | ||||
| 			wakeup.ref(); | ||||
| 		} else { | ||||
| 			wakeup.unref(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public function progress():NextEventTime { | ||||
| 		//TODO: throw if loop is already running | ||||
| 		if((handle:Loop).run(NOWAIT)) { | ||||
| 			return AnyTime(null); | ||||
| 		} else { | ||||
| 			return Never; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public function wait(?timeout:Float):Bool { | ||||
| 		//TODO: throw if loop is already running | ||||
| 		if(timeout == null) { | ||||
| 			var timer = LuvTimer.init(handle).resolve(); | ||||
| 			timer.start(() -> { | ||||
| 				timer.stop().resolve(); | ||||
| 				timer.close(() -> {}); | ||||
| 			}, Std.int(timeout * 1000)); | ||||
| 			return (handle:Loop).run(ONCE); | ||||
| 		} else { | ||||
| 			return (handle:Loop).run(ONCE); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public function loop():Void { | ||||
| 		//TODO: throw if loop is already running | ||||
| 		consumePending(); | ||||
| 		(handle:Loop).run(DEFAULT); | ||||
| 	} | ||||
|  | ||||
| 	function consumePending(?_:Async):Void { | ||||
| 		var p = pending; | ||||
| 		pending = []; | ||||
| 		for(fn in p) fn(); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										105
									
								
								Kha/Tools/macos/std/eval/_std/sys/thread/Thread.hx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								Kha/Tools/macos/std/eval/_std/sys/thread/Thread.hx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| /* | ||||
|  * Copyright (C)2005-2019 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 sys.thread; | ||||
|  | ||||
| import eval.vm.NativeThread; | ||||
|  | ||||
| private typedef ThreadImpl = NativeThread; | ||||
|  | ||||
| abstract Thread(ThreadImpl) from ThreadImpl { | ||||
| 	public var events(get,never):EventLoop; | ||||
|  | ||||
| 	static function __init__() { | ||||
| 		NativeThread.self().events = new EventLoop(); | ||||
| 	} | ||||
|  | ||||
| 	inline function new(h:NativeThread):Void { | ||||
| 		this = h; | ||||
| 	} | ||||
|  | ||||
| 	public inline function sendMessage(msg:Dynamic):Void { | ||||
| 		this.sendMessage(msg); | ||||
| 	} | ||||
|  | ||||
| 	public static inline function current():Thread { | ||||
| 		return new Thread(NativeThread.self()); | ||||
| 	} | ||||
|  | ||||
| 	public static inline function create(job:()->Void):Thread { | ||||
| 		return new Thread(new NativeThread(job)); | ||||
| 	} | ||||
|  | ||||
| 	public static function runWithEventLoop(job:()->Void):Void { | ||||
| 		var thread = NativeThread.self(); | ||||
| 		if(thread.events == null) { | ||||
| 			thread.events = new EventLoop(); | ||||
| 			try { | ||||
| 				job(); | ||||
| 				thread.events.loop(); | ||||
| 				thread.events = null; | ||||
| 			} catch(e) { | ||||
| 				thread.events = null; | ||||
| 				throw e; | ||||
| 			} | ||||
| 		} else { | ||||
| 			job(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	public static inline function createWithEventLoop(job:()->Void):Thread { | ||||
| 		return new Thread(new NativeThread(() -> { | ||||
| 			var thread = NativeThread.self(); | ||||
| 			thread.events = new EventLoop(); | ||||
| 			job(); | ||||
| 			thread.events.loop(); | ||||
| 		})); | ||||
| 	} | ||||
|  | ||||
| 	public static inline function readMessage(block:Bool):Dynamic { | ||||
| 		return NativeThread.readMessage(block); | ||||
| 	} | ||||
|  | ||||
| 	public static inline function yield():Void { | ||||
| 		NativeThread.yield(); | ||||
| 	} | ||||
|  | ||||
| 	@:op(A == B) | ||||
| 	public inline function equals(other:Thread):Bool { | ||||
| 		return getHandle().id() == other.getHandle().id(); | ||||
| 	} | ||||
|  | ||||
| 	inline function getHandle():NativeThread { | ||||
| 		return this; | ||||
| 	} | ||||
|  | ||||
| 	function get_events():EventLoop { | ||||
| 		if(this.events == null) | ||||
| 			throw new NoEventLoopException(); | ||||
| 		return this.events; | ||||
| 	} | ||||
|  | ||||
| 	@:keep | ||||
| 	static function processEvents():Void { | ||||
| 		NativeThread.self().events.loop(); | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user