package haxe.root;
import haxe.root.*;
@SuppressWarnings(value={"rawtypes", "unchecked"})
public class Reflect extends haxe.lang.HxObject
{
public Reflect(haxe.lang.EmptyObject empty)
{
{
}
}
public Reflect()
{
haxe.root.Reflect.__hx_ctor__Reflect(this);
}
public static void __hx_ctor__Reflect(haxe.root.Reflect __temp_me18)
{
{
}
}
public static boolean hasField(java.lang.Object o, java.lang.String field)
{
if (o instanceof haxe.lang.IHxObject)
return ((haxe.lang.IHxObject) o).__hx_getField(field, false, true, false) != haxe.lang.Runtime.undefined;
return haxe.lang.Runtime.slowHasField(o, field);
}
public static java.lang.Object field(java.lang.Object o, java.lang.String field)
{
if (o instanceof haxe.lang.IHxObject)
return ((haxe.lang.IHxObject) o).__hx_getField(field, false, false, false);
return haxe.lang.Runtime.slowGetField(o, field, false);
}
public static void setField(java.lang.Object o, java.lang.String field, java.lang.Object value)
{
if (o instanceof haxe.lang.IHxObject)
((haxe.lang.IHxObject) o).__hx_setField(field, value, false);
else
haxe.lang.Runtime.slowSetField(o, field, value);
}
public static java.lang.Object getProperty(java.lang.Object o, java.lang.String field)
{
if (o instanceof haxe.lang.IHxObject)
return ((haxe.lang.IHxObject) o).__hx_getField(field, false, false, true);
if (haxe.lang.Runtime.slowHasField(o, "get_" + field))
return haxe.lang.Runtime.slowCallField(o, "get_" + field, null);
return haxe.lang.Runtime.slowGetField(o, field, false);
}
public static void setProperty(java.lang.Object o, java.lang.String field, java.lang.Object value)
{
if (o instanceof haxe.lang.IHxObject)
((haxe.lang.IHxObject) o).__hx_setField(field, value, true);
else if (haxe.lang.Runtime.slowHasField(o, "set_" + field))
haxe.lang.Runtime.slowCallField(o, "set_" + field, new Array( new java.lang.Object[]{value} ));
else
haxe.lang.Runtime.slowSetField(o, field, value);
}
public static java.lang.Object callMethod(java.lang.Object o, java.lang.Object func, haxe.root.Array args)
{
return ((haxe.lang.Function) func).__hx_invokeDynamic(args);
}
public static haxe.root.Array<java.lang.String> fields(java.lang.Object o)
{
if (o instanceof haxe.lang.IHxObject)
{
Array<String> ret = new Array<String>();
((haxe.lang.IHxObject) o).__hx_getFields(ret);
return ret;
} else if (o instanceof java.lang.Class) {
return Type.getClassFields( (java.lang.Class) o);
} else {
return new Array<String>();
}
}
public static boolean isFunction(java.lang.Object f)
{
return f instanceof haxe.lang.Function;
}
public static <T> int compare(T a, T b)
{
return haxe.lang.Runtime.compare(a, b);
}
public static boolean compareMethods(java.lang.Object f1, java.lang.Object f2)
{
if (f1 == f2)
return true;
if (f1 instanceof haxe.lang.Closure && f2 instanceof haxe.lang.Closure)
{
haxe.lang.Closure f1c = (haxe.lang.Closure) f1;
haxe.lang.Closure f2c = (haxe.lang.Closure) f2;
return haxe.lang.Runtime.refEq(f1c.obj, f2c.obj) && f1c.field.equals(f2c.field);
}
return false;
}
public static boolean isObject(java.lang.Object v)
{
return v != null && !(v instanceof haxe.lang.Enum || v instanceof haxe.lang.Function || v instanceof java.lang.Enum || v instanceof java.lang.Number || v instanceof java.lang.Boolean);
}
public static boolean isEnumValue(java.lang.Object v)
{
return v != null && (v instanceof haxe.lang.Enum || v instanceof java.lang.Enum);
}
public static boolean deleteField(java.lang.Object o, java.lang.String field)
{
return (o instanceof haxe.lang.DynamicObject && ((haxe.lang.DynamicObject) o).__hx_deleteField(field));
}
public static <T> T copy(T o)
{
java.lang.Object o2 = new haxe.lang.DynamicObject(new haxe.root.Array<java.lang.String>(new java.lang.String[]{}), new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{}), new haxe.root.Array<java.lang.String>(new java.lang.String[]{}), new haxe.root.Array<java.lang.Object>(new java.lang.Object[]{}));
{
int _g = 0;
haxe.root.Array<java.lang.String> _g1 = haxe.root.Reflect.fields(o);
while (( _g < _g1.length ))
{
java.lang.String f = _g1.__get(_g);
++ _g;
haxe.root.Reflect.setField(o2, f, haxe.root.Reflect.field(o, f));
}
}
return ((T) (o2) );
}
public static java.lang.Object makeVarArgs(haxe.lang.Function f)
{
return new haxe.lang.VarArgsFunction(((haxe.lang.Function) (f) ));
}
public static java.lang.Object __hx_createEmpty()
{
return new haxe.root.Reflect(((haxe.lang.EmptyObject) (haxe.lang.EmptyObject.EMPTY) ));
}
public static java.lang.Object __hx_create(haxe.root.Array arr)
{
return new haxe.root.Reflect();
}
}