|
@@ -21,35 +21,42 @@
|
|
*/
|
|
*/
|
|
@:coreApi class Reflect {
|
|
@:coreApi class Reflect {
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function hasField( o : Dynamic, field : String ) : Bool untyped {
|
|
public static function hasField( o : Dynamic, field : String ) : Bool untyped {
|
|
return o!=null && o.__HasField(field);
|
|
return o!=null && o.__HasField(field);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function field( o : Dynamic, field : String ) : Dynamic untyped {
|
|
public static function field( o : Dynamic, field : String ) : Dynamic untyped {
|
|
- return (o==null) ? null : o.__Field(field,false);
|
|
|
|
|
|
+ return (o==null) ? null : o.__Field(field,untyped __cpp__("hx::paccNever") );
|
|
}
|
|
}
|
|
|
|
|
|
- public inline static function setField( o : Dynamic, field : String, value : Dynamic ) : Void untyped {
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
|
|
+ public static function setField( o : Dynamic, field : String, value : Dynamic ) : Void untyped {
|
|
if (o!=null)
|
|
if (o!=null)
|
|
- o.__SetField(field,value,false);
|
|
|
|
|
|
+ o.__SetField(field,value,untyped __cpp__("hx::paccNever") );
|
|
}
|
|
}
|
|
|
|
|
|
- public static inline function getProperty( o : Dynamic, field : String ) : Dynamic {
|
|
|
|
- return (o==null) ? null : o.__Field(field,true);
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
|
|
+ public static function getProperty( o : Dynamic, field : String ) : Dynamic {
|
|
|
|
+ return (o==null) ? null : o.__Field(field,untyped __cpp__("hx::paccAlways") );
|
|
}
|
|
}
|
|
|
|
|
|
- public static inline function setProperty( o : Dynamic, field : String, value : Dynamic ) : Void {
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
|
|
+ public static function setProperty( o : Dynamic, field : String, value : Dynamic ) : Void {
|
|
if (o!=null)
|
|
if (o!=null)
|
|
- o.__SetField(field,value,true);
|
|
|
|
|
|
+ o.__SetField(field,value,untyped __cpp__("hx::paccAlways") );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
|
|
public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
|
|
if (func!=null && func.__GetType()==__global__.vtString)
|
|
if (func!=null && func.__GetType()==__global__.vtString)
|
|
- func = o.__Field(func,true);
|
|
|
|
|
|
+ func = o.__Field(func,untyped __cpp__("hx::paccDynamic"));
|
|
untyped func.__SetThis(o);
|
|
untyped func.__SetThis(o);
|
|
return untyped func.__Run(args);
|
|
return untyped func.__Run(args);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function fields( o : Dynamic ) : Array<String> untyped {
|
|
public static function fields( o : Dynamic ) : Array<String> untyped {
|
|
if( o == null ) return new Array();
|
|
if( o == null ) return new Array();
|
|
var a : Array<String> = [];
|
|
var a : Array<String> = [];
|
|
@@ -57,14 +64,17 @@
|
|
return a;
|
|
return a;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function isFunction( f : Dynamic ) : Bool untyped {
|
|
public static function isFunction( f : Dynamic ) : Bool untyped {
|
|
return f!=null && f.__GetType() == __global__.vtFunction;
|
|
return f!=null && f.__GetType() == __global__.vtFunction;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function compare<T>( a : T, b : T ) : Int {
|
|
public static function compare<T>( a : T, b : T ) : Int {
|
|
return ( a == b ) ? 0 : (((a:Dynamic) > (b:Dynamic)) ? 1 : -1);
|
|
return ( a == b ) ? 0 : (((a:Dynamic) > (b:Dynamic)) ? 1 : -1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function compareMethods( f1 : Dynamic, f2 : Dynamic ) : Bool {
|
|
public static function compareMethods( f1 : Dynamic, f2 : Dynamic ) : Bool {
|
|
if( f1 == f2 )
|
|
if( f1 == f2 )
|
|
return true;
|
|
return true;
|
|
@@ -73,6 +83,7 @@
|
|
return untyped __global__.__hxcpp_same_closure(f1,f2);
|
|
return untyped __global__.__hxcpp_same_closure(f1,f2);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function isObject( v : Dynamic ) : Bool untyped {
|
|
public static function isObject( v : Dynamic ) : Bool untyped {
|
|
if (v==null) return false;
|
|
if (v==null) return false;
|
|
var t:Int = v.__GetType();
|
|
var t:Int = v.__GetType();
|
|
@@ -80,26 +91,30 @@
|
|
t==__global__.vtArray;
|
|
t==__global__.vtArray;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function isEnumValue( v : Dynamic ) : Bool untyped {
|
|
public static function isEnumValue( v : Dynamic ) : Bool untyped {
|
|
return v!=null && v.__GetType() == __global__.vtEnum;
|
|
return v!=null && v.__GetType() == __global__.vtEnum;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function deleteField( o : Dynamic, field : String ) : Bool untyped {
|
|
public static function deleteField( o : Dynamic, field : String ) : Bool untyped {
|
|
if (o==null) return false;
|
|
if (o==null) return false;
|
|
return untyped __global__.__hxcpp_anon_remove(o,field);
|
|
return untyped __global__.__hxcpp_anon_remove(o,field);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
public static function copy<T>( o : T ) : T {
|
|
public static function copy<T>( o : T ) : T {
|
|
if (o==null) return null;
|
|
if (o==null) return null;
|
|
if(untyped o.__GetType()==__global__.vtString ) return o;
|
|
if(untyped o.__GetType()==__global__.vtString ) return o;
|
|
if(untyped o.__GetType()==__global__.vtArray )
|
|
if(untyped o.__GetType()==__global__.vtArray )
|
|
- return untyped o.__Field("copy",true)();
|
|
|
|
|
|
+ return untyped o.__Field("copy", untyped __cpp__("hx::paccDynamic"))();
|
|
var o2 : Dynamic = {};
|
|
var o2 : Dynamic = {};
|
|
for( f in Reflect.fields(o) )
|
|
for( f in Reflect.fields(o) )
|
|
Reflect.setField(o2,f,Reflect.field(o,f));
|
|
Reflect.setField(o2,f,Reflect.field(o,f));
|
|
return o2;
|
|
return o2;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @:analyzer(ignore)
|
|
@:overload(function( f : Array<Dynamic> -> Void ) : Dynamic {})
|
|
@:overload(function( f : Array<Dynamic> -> Void ) : Dynamic {})
|
|
public static function makeVarArgs( f : Array<Dynamic> -> Dynamic ) : Dynamic {
|
|
public static function makeVarArgs( f : Array<Dynamic> -> Dynamic ) : Dynamic {
|
|
return untyped __global__.__hxcpp_create_var_args(f);
|
|
return untyped __global__.__hxcpp_create_var_args(f);
|