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();
 | |
| 	}
 | |
| }
 |