forked from LeenkxTeam/LNXSDK
94 lines
2.1 KiB
Haxe
94 lines
2.1 KiB
Haxe
|
package jvm;
|
||
|
|
||
|
import haxe.ds.StringMap;
|
||
|
|
||
|
@:keep
|
||
|
@:native('haxe.jvm.DynamicObject')
|
||
|
@:nativeGen
|
||
|
class DynamicObject implements java.lang.Cloneable extends Object {
|
||
|
@:private static var __hx_toString_depth = 0;
|
||
|
|
||
|
@:private var _hx_fields:Null<StringMap<Dynamic>>;
|
||
|
|
||
|
@:jvm.synthetic public var _hx_deletedAField:Null<Bool>;
|
||
|
|
||
|
public function toString() {
|
||
|
if (__hx_toString_depth >= 5) {
|
||
|
return "...";
|
||
|
}
|
||
|
++__hx_toString_depth;
|
||
|
_hx_initReflection();
|
||
|
if (_hx_hasField("toString")) {
|
||
|
--__hx_toString_depth;
|
||
|
return _hx_getField("toString")();
|
||
|
}
|
||
|
var buf = new StringBuf();
|
||
|
buf.addChar("{".code);
|
||
|
var first = true;
|
||
|
try {
|
||
|
for (key in _hx_fields.keys()) {
|
||
|
if (first)
|
||
|
first = false
|
||
|
else
|
||
|
buf.add(", ");
|
||
|
buf.add(key);
|
||
|
buf.add(": ");
|
||
|
buf.add(_hx_fields.get(key));
|
||
|
}
|
||
|
} catch (e:Dynamic) {
|
||
|
--__hx_toString_depth;
|
||
|
throw(e);
|
||
|
}
|
||
|
--__hx_toString_depth;
|
||
|
buf.addChar("}".code);
|
||
|
return buf.toString();
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic final public function _hx_deleteField(name:String) {
|
||
|
_hx_initReflection();
|
||
|
_hx_deletedAField = true;
|
||
|
try {
|
||
|
Jvm.writeFieldNoObject(this, name, null);
|
||
|
} catch (_:Dynamic) {}
|
||
|
return _hx_fields.remove(name);
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic final public function _hx_getFields() {
|
||
|
_hx_initReflection();
|
||
|
return [for (key in _hx_fields.keys()) key];
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic override public function _hx_getField<T>(name:String) {
|
||
|
_hx_initReflection();
|
||
|
return _hx_fields.get(name);
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic final public function _hx_hasField(name:String) {
|
||
|
_hx_initReflection();
|
||
|
return _hx_fields.exists(name);
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic override public function _hx_setField(name:String, value:Dynamic) {
|
||
|
_hx_initReflection();
|
||
|
_hx_fields.set(name, value);
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic final public function _hx_clone() {
|
||
|
var clone:DynamicObject = (cast this : java.lang.Object).clone();
|
||
|
if (_hx_fields != null) {
|
||
|
clone._hx_fields = this._hx_fields.copy();
|
||
|
}
|
||
|
return clone;
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic final function _hx_initReflection() {
|
||
|
if (_hx_fields == null) {
|
||
|
_hx_fields = _hx_getKnownFields();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@:jvm.synthetic function _hx_getKnownFields():StringMap<Dynamic> {
|
||
|
return new StringMap();
|
||
|
}
|
||
|
}
|