package haxe.root; import haxe.root.*; @SuppressWarnings(value={"rawtypes", "unchecked"}) public class Type extends haxe.lang.HxObject { public Type(haxe.lang.EmptyObject empty) { { } } public Type() { haxe.root.Type.__hx_ctor__Type(this); } public static void __hx_ctor__Type(haxe.root.Type __temp_me22) { { } } public static <T> java.lang.Class<T> getClass(T o) { if (o == null || o instanceof haxe.lang.DynamicObject || o instanceof java.lang.Class) return null; return (java.lang.Class<T>) o.getClass(); } public static java.lang.Class getEnum(java.lang.Object o) { if (o instanceof java.lang.Enum || o instanceof haxe.lang.Enum) return o.getClass(); return null; } public static java.lang.Class getSuperClass(java.lang.Class c) { 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 java.lang.String getClassName(java.lang.Class c) { java.lang.Class c1 = c; java.lang.String name = c1.getName(); if (name.startsWith("haxe.root.")) { return haxe.lang.StringExt.substr(name, 10, null); } if (name.startsWith("java.lang")) { name = haxe.lang.StringExt.substr(name, 10, null); } { java.lang.String __temp_svar87 = (name); int __temp_hash89 = __temp_svar87.hashCode(); boolean __temp_executeDef88 = true; switch (__temp_hash89) { case -672261858:case 104431: { if (( (( ( __temp_hash89 == -672261858 ) && __temp_svar87.equals("Integer") )) || __temp_svar87.equals("int") )) { __temp_executeDef88 = false; return "Int"; } break; } case -1939501217: { if (__temp_svar87.equals("Object")) { __temp_executeDef88 = false; return "Dynamic"; } break; } case 2052876273:case -1325958191: { if (( (( ( __temp_hash89 == 2052876273 ) && __temp_svar87.equals("Double") )) || __temp_svar87.equals("double") )) { __temp_executeDef88 = false; return "Float"; } break; } } if (__temp_executeDef88) { return name; } else { throw null; } } } public static java.lang.String getEnumName(java.lang.Class e) { java.lang.Class c = e; java.lang.String ret = c.getName(); if (ret.startsWith("haxe.root.")) { return haxe.lang.StringExt.substr(ret, 10, null); } else { if (( haxe.lang.Runtime.valEq(ret, "boolean") || haxe.lang.Runtime.valEq(ret, "java.lang.Boolean") )) { return "Bool"; } } return ret; } public static java.lang.Class resolveClass(java.lang.String name) { 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; } } public static java.lang.Class resolveEnum(java.lang.String name) { if ("Bool".equals(name)) return boolean.class; Class r = resolveClass(name); if (r != null && (r.getSuperclass() == java.lang.Enum.class || r.getSuperclass() == haxe.lang.Enum.class)) return r; return null; } public static <T> T createInstance(java.lang.Class<T> cl, haxe.root.Array args) { int len = args.length; java.lang.Class[] cls = new java.lang.Class[len]; java.lang.Object[] objs = new java.lang.Object[len]; java.lang.reflect.Constructor[] ms = cl.getConstructors(); int msl = ms.length; int realMsl = 0; for(int i =0; i < msl; i++) { if (!ms[i].isVarArgs() && ms[i].getParameterTypes().length != len) { ms[i] = null; } else { ms[realMsl] = ms[i]; if (realMsl != i) ms[i] = null; realMsl++; } } boolean hasNumber = false; for (int i = 0; i < len; i++) { Object o = args.__get(i); objs[i]= o; cls[i] = o.getClass(); boolean isNum = false; if (o instanceof java.lang.Number) { cls[i] = java.lang.Number.class; isNum = hasNumber = true; } msl = realMsl; realMsl = 0; for (int j = 0; j < msl; j++) { java.lang.Class[] allcls = ms[j].getParameterTypes(); if (i < allcls.length) { if (! ((isNum && allcls[i].isPrimitive()) || allcls[i].isAssignableFrom(cls[i])) ) { ms[j] = null; } else { ms[realMsl] = ms[j]; if (realMsl != j) ms[j] = null; realMsl++; } } } } java.lang.reflect.Constructor found = ms[0]; if (hasNumber) { java.lang.Class[] allcls = found.getParameterTypes(); for (int i = 0; i < len; i++) { java.lang.Object o = objs[i]; if (o instanceof java.lang.Number) { java.lang.Class curCls = null; if (i < allcls.length) { curCls = allcls[i]; if (!curCls.isAssignableFrom(o.getClass())) { String name = curCls.getName(); if (name.equals("double") || name.equals("java.lang.Double")) { objs[i] = ((java.lang.Number)o).doubleValue(); } else if (name.equals("int") || name.equals("java.lang.Integer")) { objs[i] = ((java.lang.Number)o).intValue(); } else if (name.equals("float") || name.equals("java.lang.Float")) { objs[i] = ((java.lang.Number)o).floatValue(); } else if (name.equals("byte") || name.equals("java.lang.Byte")) { objs[i] = ((java.lang.Number)o).byteValue(); } else if (name.equals("short") || name.equals("java.lang.Short")) { objs[i] = ((java.lang.Number)o).shortValue(); } } } //else varargs not handled TODO } } } try { found.setAccessible(true); return (T) found.newInstance(objs); } catch (java.lang.reflect.InvocationTargetException e) { throw haxe.lang.HaxeException.wrap(e.getCause()); } catch (Throwable t) { throw haxe.lang.HaxeException.wrap(t); } } public static <T> T createEmptyInstance(java.lang.Class<T> cl) { if (haxe.root.Reflect.hasField(cl, "__hx_createEmpty")) { return ((T) (haxe.lang.Runtime.callField(cl, "__hx_createEmpty", null)) ); } return haxe.root.Type.createInstance(cl, new haxe.root.Array(new java.lang.Object[]{})); } public static <T> T createEnum(java.lang.Class<T> e, java.lang.String constr, haxe.root.Array params) { if (params == null || params.length == 0) { java.lang.Object ret = haxe.lang.Runtime.slowGetField(e, constr, true); if (ret instanceof haxe.lang.Function) throw haxe.lang.HaxeException.wrap("Constructor " + constr + " needs parameters"); return (T) ret; } else { return (T) haxe.lang.Runtime.slowCallField(e, constr, params); } } public static <T> T createEnumIndex(java.lang.Class<T> e, int index, haxe.root.Array params) { haxe.root.Array<java.lang.String> constr = haxe.root.Type.getEnumConstructs(((java.lang.Class) (e) )); return haxe.root.Type.createEnum(e, constr.__get(index), params); } public static haxe.root.Array<java.lang.String> getInstanceFields(java.lang.Class c) { if (c == java.lang.String.class) { return haxe.lang.StringRefl.fields; } Array<String> ret = new Array<String>(); for (java.lang.reflect.Field f : c.getFields()) { java.lang.String fname = f.getName(); if (!java.lang.reflect.Modifier.isStatic(f.getModifiers()) && !fname.startsWith("__hx_")) ret.push(fname); } for (java.lang.reflect.Method m : c.getMethods()) { if (m.getDeclaringClass() == java.lang.Object.class) continue; java.lang.String mname = m.getName(); if (!java.lang.reflect.Modifier.isStatic(m.getModifiers()) && !mname.startsWith("__hx_")) ret.push(mname); } return ret; } public static haxe.root.Array<java.lang.String> getClassFields(java.lang.Class c) { Array<String> ret = new Array<String>(); if (c == java.lang.String.class) { ret.push("fromCharCode"); return ret; } for (java.lang.reflect.Field f : c.getDeclaredFields()) { java.lang.String fname = f.getName(); if (java.lang.reflect.Modifier.isStatic(f.getModifiers()) && !fname.startsWith("__hx_")) ret.push(fname); } for (java.lang.reflect.Method m : c.getDeclaredMethods()) { if (m.getDeclaringClass() == java.lang.Object.class) continue; java.lang.String mname = m.getName(); if (java.lang.reflect.Modifier.isStatic(m.getModifiers()) && !mname.startsWith("__hx_")) ret.push(mname); } return ret; } public static haxe.root.Array<java.lang.String> getEnumConstructs(java.lang.Class e) { if (haxe.root.Reflect.hasField(e, "constructs")) { return ((haxe.root.Array<java.lang.String>) (haxe.lang.Runtime.callField(haxe.lang.Runtime.getField(e, "constructs", true), "copy", null)) ); } java.lang.Enum[] vals = ((java.lang.Enum[]) (haxe.lang.Runtime.callField(e, "values", null)) ); haxe.root.Array<java.lang.String> ret = new haxe.root.Array<java.lang.String>(new java.lang.String[]{}); { int _g1 = 0; int _g = vals.length; while (( _g1 < _g )) { int i = _g1++; ret.__set(i, vals[i].name()); } } return ret; } public static haxe.root.ValueType typeof(java.lang.Object v) { if (v == null) return ValueType.TNull; if (v instanceof haxe.lang.IHxObject) { haxe.lang.IHxObject vobj = (haxe.lang.IHxObject) v; java.lang.Class cl = vobj.getClass(); if (v instanceof haxe.lang.DynamicObject) return ValueType.TObject; else return ValueType.TClass(cl); } else if (v instanceof java.lang.Number) { java.lang.Number n = (java.lang.Number) v; if (n.intValue() == n.doubleValue()) return ValueType.TInt; else return ValueType.TFloat; } else if (v instanceof haxe.lang.Function) { return ValueType.TFunction; } else if (v instanceof java.lang.Enum || v instanceof haxe.lang.Enum) { return ValueType.TEnum(v.getClass()); } else if (v instanceof java.lang.Boolean) { return ValueType.TBool; } else if (v instanceof java.lang.Class) { return ValueType.TObject; } else { return ValueType.TClass(v.getClass()); } } public static <T> boolean enumEq(T a, T b) { if (a instanceof haxe.lang.Enum) return a.equals(b); else return haxe.lang.Runtime.eq(a, b); } public static java.lang.String enumConstructor(java.lang.Object e) { if (e instanceof java.lang.Enum) return ((java.lang.Enum) e).name(); else return ((haxe.lang.Enum) e).getTag(); } public static haxe.root.Array enumParameters(java.lang.Object e) { return ( e instanceof java.lang.Enum ) ? new haxe.root.Array() : ((haxe.lang.Enum) e).params; } public static int enumIndex(java.lang.Object e) { if (e instanceof java.lang.Enum) return ((java.lang.Enum) e).ordinal(); else return ((haxe.lang.Enum) e).index; } public static <T> haxe.root.Array<T> allEnums(java.lang.Class<T> e) { haxe.root.Array<java.lang.String> ctors = haxe.root.Type.getEnumConstructs(((java.lang.Class) (e) )); haxe.root.Array<T> ret = new haxe.root.Array<T>(( (T[]) (new java.lang.Object[] {}) )); { int _g = 0; while (( _g < ctors.length )) { java.lang.String ctor = ctors.__get(_g); ++ _g; T v = ((T) (haxe.root.Reflect.field(e, ctor)) ); if (haxe.root.Std.is(v, e)) { ret.push(v); } } } return ret; } public static java.lang.Object __hx_createEmpty() { return new haxe.root.Type(((haxe.lang.EmptyObject) (haxe.lang.EmptyObject.EMPTY) )); } public static java.lang.Object __hx_create(haxe.root.Array arr) { return new haxe.root.Type(); } }