|
@@ -19,6 +19,11 @@
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
*/
|
|
|
|
+
|
|
|
|
+import java.internal.HxObject;
|
|
|
|
+
|
|
|
|
+using StringTools;
|
|
|
|
+
|
|
@:keep enum ValueType {
|
|
@:keep enum ValueType {
|
|
TNull;
|
|
TNull;
|
|
TInt;
|
|
TInt;
|
|
@@ -33,40 +38,33 @@
|
|
|
|
|
|
@:keep @:coreApi class Type {
|
|
@:keep @:coreApi class Type {
|
|
|
|
|
|
- @:functionCode('
|
|
|
|
- if (o == null || o instanceof haxe.lang.DynamicObject || o instanceof java.lang.Class)
|
|
|
|
- return null;
|
|
|
|
-
|
|
|
|
- return (java.lang.Class<T>) o.getClass();
|
|
|
|
- ')
|
|
|
|
- public static function getClass<T>( o : T ) : Class<T> untyped
|
|
|
|
|
|
+ public static function getClass<T>( o : T ) : Class<T>
|
|
{
|
|
{
|
|
- return null;
|
|
|
|
|
|
+ if (o == null || Std.is(o, DynamicObject) || Std.is(o, java.lang.Class)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ return cast java.Lib.nativeType(o);
|
|
}
|
|
}
|
|
|
|
|
|
- @:functionCode('
|
|
|
|
- if (o instanceof java.lang.Enum || o instanceof haxe.lang.Enum)
|
|
|
|
- return o.getClass();
|
|
|
|
- return null;
|
|
|
|
- ')
|
|
|
|
- public static function getEnum( o : EnumValue ) : Enum<Dynamic> untyped
|
|
|
|
|
|
+ public static function getEnum( o : EnumValue ) : Enum<Dynamic>
|
|
{
|
|
{
|
|
|
|
+ if (Std.is(o, java.lang.Enum) || Std.is(o, HxEnum)) {
|
|
|
|
+ return untyped o.getClass();
|
|
|
|
+ }
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- @:functionCode('
|
|
|
|
- java.lang.Class cl = (c == null) ? null : c.getSuperclass();
|
|
|
|
- if (cl != null && !cl.getName().equals("haxe.lang.HxObject") && !cl.getName().equals("java.lang.Object") )
|
|
|
|
- return cl;
|
|
|
|
- return null;
|
|
|
|
- ')
|
|
|
|
- public static function getSuperClass( c : Class<Dynamic> ) : Class<Dynamic> untyped
|
|
|
|
|
|
+ public static function getSuperClass( c : Class<Dynamic> ) : Class<Dynamic>
|
|
{
|
|
{
|
|
|
|
+ var cl:java.lang.Class<Dynamic> = c == null ? null : untyped c.getSuperclass();
|
|
|
|
+ if (cl != null && cl.getName() != "haxe.lang.HxObject" && cl.getName() != "java.lang.Object") {
|
|
|
|
+ return cast cl;
|
|
|
|
+ }
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
- public static function getClassName( c : Class<Dynamic> ) : String untyped {
|
|
|
|
- var c : java.lang.Class<Dynamic> = c;
|
|
|
|
|
|
+ public static function getClassName( c : Class<Dynamic> ) : String {
|
|
|
|
+ var c : java.lang.Class<Dynamic> = cast c;
|
|
var name:String = c.getName();
|
|
var name:String = c.getName();
|
|
if (name.startsWith("haxe.root."))
|
|
if (name.startsWith("haxe.root."))
|
|
return name.substr(10);
|
|
return name.substr(10);
|
|
@@ -82,8 +80,8 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public static function getEnumName( e : Enum<Dynamic> ) : String untyped {
|
|
|
|
- var c : java.lang.Class<Dynamic> = e;
|
|
|
|
|
|
+ public static function getEnumName( e : Enum<Dynamic> ) : String {
|
|
|
|
+ var c : java.lang.Class<Dynamic> = cast e;
|
|
var ret:String = c.getName();
|
|
var ret:String = c.getName();
|
|
if (ret.startsWith("haxe.root."))
|
|
if (ret.startsWith("haxe.root."))
|
|
return ret.substr(10);
|
|
return ret.substr(10);
|
|
@@ -93,26 +91,24 @@
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
- @:functionCode('
|
|
|
|
|
|
+ public static function resolveClass( name : String ) : Class<Dynamic>
|
|
|
|
+ {
|
|
try {
|
|
try {
|
|
- if (name.indexOf(".") == -1)
|
|
|
|
- name = "haxe.root." + name;
|
|
|
|
- return java.lang.Class.forName(name);
|
|
|
|
- }
|
|
|
|
- catch (java.lang.ClassNotFoundException e)
|
|
|
|
- {
|
|
|
|
- if (name.equals("haxe.root.Int")) return int.class;
|
|
|
|
- else if (name.equals("haxe.root.Float")) return double.class;
|
|
|
|
- else if (name.equals("haxe.root.String")) return java.lang.String.class;
|
|
|
|
- else if (name.equals("haxe.root.Math")) return java.lang.Math.class;
|
|
|
|
- else if (name.equals("haxe.root.Class")) return java.lang.Class.class;
|
|
|
|
- else if (name.equals("haxe.root.Dynamic")) return java.lang.Object.class;
|
|
|
|
- return null;
|
|
|
|
|
|
+ if (name.indexOf(".") == -1) {
|
|
|
|
+ name = "haxe.root." +name;
|
|
|
|
+ }
|
|
|
|
+ return cast java.lang.Class.forName(name);
|
|
|
|
+ } catch (e:java.lang.ClassNotFoundException) {
|
|
|
|
+ return untyped switch (name) {
|
|
|
|
+ case "haxe.root.Int": Int;
|
|
|
|
+ case "haxe.root.Float": Float;
|
|
|
|
+ case "haxe.root.String": String;
|
|
|
|
+ case "haxe.root.Math": java.lang.Math;
|
|
|
|
+ case "haxe.root.Class": java.lang.Class;
|
|
|
|
+ case "haxe.root.Dynamic": java.lang.Object;
|
|
|
|
+ case _: null;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- ')
|
|
|
|
- public static function resolveClass( name : String ) : Class<Dynamic> untyped
|
|
|
|
- {
|
|
|
|
- return null;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|