UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

363 lines (345 loc) 11.7 kB
// Class: openfl.utils._internal.format.amf3.AMF3Reader var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../../../../hxClasses_stub").default; var $hxEnums = require("./../../../../../hxEnums_stub").default; var $import = require("./../../../../../import_stub").default; function openfl_utils__$internal_format_amf3_AMF3Tools() {return require("./../../../../../openfl/utils/_internal/format/amf3/AMF3Tools");} function js__$Boot_HaxeError() {return require("./../../../../../js/_Boot/HaxeError");} function openfl_utils__$internal_format_amf3_AMF3Value() {return require("./../../../../../openfl/utils/_internal/format/amf3/AMF3Value");} function js_Boot() {return require("./../../../../../js/Boot");} function openfl_utils_IExternalizable() {return require("./../../../../../openfl/utils/IExternalizable");} function openfl_utils__$internal_format_amf3_AMF3ReaderInput() {return require("./../../../../../openfl/utils/_internal/format/amf3/AMF3ReaderInput");} function haxe_ds_StringMap() {return require("./../../../../../haxe/ds/StringMap");} function haxe_ds_EnumValueMap() {return require("./../../../../../haxe/ds/EnumValueMap");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../../../../openfl/_Vector/Vector_Impl_");} function haxe_io_Bytes() {return require("./../../../../../haxe/io/Bytes");} function openfl_utils__$ByteArray_ByteArray_$Impl_$() {return require("./../../../../../openfl/utils/_ByteArray/ByteArray_Impl_");} function haxe_io_Encoding() {return require("./../../../../../haxe/io/Encoding");} function Xml() {return require("./../../../../../Xml");} // Constructor var AMF3Reader = function(i,parent) { if(parent == null) { this.complexObjectsTable = []; this.objectTraitsTable = []; this.stringTable = []; } else { this.complexObjectsTable = parent.complexObjectsTable; this.objectTraitsTable = parent.objectTraitsTable; this.stringTable = parent.stringTable; } this.i = i; i.set_bigEndian(true); } // Meta AMF3Reader.__name__ = "openfl.utils._internal.format.amf3.AMF3Reader"; AMF3Reader.__isInterface__ = false; AMF3Reader.prototype = { readObject: function() { var dyn = false; var isExternalizable = false; var className = null; var sealedMemberNames = []; var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } else if((n & 3) == 1) { n >>= 2; var refTraits = this.objectTraitsTable[n]; dyn = refTraits.isDynamic; isExternalizable = refTraits.isExternalizable; className = refTraits.className; sealedMemberNames = refTraits.sealedMemberNames; } else if((n & 7) == 3) { dyn = (n >> 3 & 1) == 1; n >>= 4; className = this.readString(); var _g = 0; var _g1 = n; while(_g < _g1) { var j = _g++; sealedMemberNames.push((openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readString())); } this.objectTraitsTable.push({ isExternalizable : isExternalizable, isDynamic : dyn, className : className, sealedMemberNames : sealedMemberNames}); } else if((n & 7) == 7) { isExternalizable = true; className = this.readString(); } else { throw new (js__$Boot_HaxeError().default)("Invalid object traits"); } var ret = null; if(isExternalizable) { var o = (openfl_utils__$internal_format_amf3_AMF3Tools().default).object((openfl_utils__$internal_format_amf3_AMF3Value().default).AObject(null,null,(openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(className))); if(o != null && (js_Boot().default).__implements(o,(openfl_utils_IExternalizable().default))) { var external = o; external.readExternal(new (openfl_utils__$internal_format_amf3_AMF3ReaderInput().default)(this)); ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AExternal(external); } else { ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).ANull; } } else { var h = new (haxe_ds_StringMap().default)(); ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AObject(h,null,className != null ? (openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(className) : null); var _g2 = 0; var _g11 = sealedMemberNames.length; while(_g2 < _g11) { var j1 = _g2++; var value = this.read(); h.set(sealedMemberNames[j1],value); } if(dyn) { var s; while(true) { s = (openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readString()); if(s == "") { break; } h.set(s,this.read()); } } } this.complexObjectsTable.push(ret); return ret; }, readMap: function() { var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } n >>= 1; var h = new (haxe_ds_EnumValueMap().default)(); var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AMap(h); this.complexObjectsTable.push(ret); this.i.readByte(); var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; h.set(this.read(),this.read()); } return ret; }, readArray: function() { var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } n >>= 1; var a = []; var m = new (haxe_ds_StringMap().default)(); var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AArray(a,m); this.complexObjectsTable.push(ret); var assocName = (openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readString()); while(assocName.length != 0) { var v = this.read(); m.set(assocName,v); assocName = (openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readString()); } var _g = 0; var _g1 = n; while(_g < _g1) { var i = _g++; a.push(this.read()); } return ret; }, readIntVector: function() { var header = this.readInt(); if((header & 1) == 0) { return this.complexObjectsTable[header >> 1]; } var len = header >> 1; var fixed = this.i.readByte() != 0; var v = (openfl__$Vector_Vector_$Impl_$().default)._new(len); v.fixed = fixed; var _g = 0; var _g1 = len; while(_g < _g1) { var r = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(v,r,this.i.readInt32()); } var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AIntVector(v); this.complexObjectsTable.push(ret); return ret; }, readFloatVector: function() { var header = this.readInt(); if((header & 1) == 0) { return this.complexObjectsTable[header >> 1]; } var len = header >> 1; var fixed = this.i.readByte() != 0; var v = (openfl__$Vector_Vector_$Impl_$().default)._new(len); v.fixed = fixed; var _g = 0; var _g1 = len; while(_g < _g1) { var r = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(v,r,this.i.readDouble()); } var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AFloatVector(v); this.complexObjectsTable.push(ret); return ret; }, readObjectVector: function() { var header = this.readInt(); if((header & 1) == 0) { return this.complexObjectsTable[header >> 1]; } var len = header >> 1; var fixed = this.i.readByte() != 0; var type = (openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readString()); var v = (openfl__$Vector_Vector_$Impl_$().default)._new(len); v.fixed = fixed; var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AObjectVector(v,type); this.complexObjectsTable.push(ret); var _g = 0; var _g1 = len; while(_g < _g1) { var r = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(v,r,this.read()); } return ret; }, readByteArray: function() { var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } n >>= 1; var b = (haxe_io_Bytes().default).alloc(n); var _g = 0; var _g1 = n; while(_g < _g1) { var j = _g++; b.set(j,this.i.readByte()); } var ba = (openfl_utils__$ByteArray_ByteArray_$Impl_$().default).fromBytes(b); ba.set_endian("bigEndian"); ba.__amf3Reader = this; var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AByteArray(ba); this.complexObjectsTable.push(ret); return ret; }, readInt: function(signExtend,preShift) { if(preShift == null) { preShift = 0; } if(signExtend == null) { signExtend = false; } var c = this.i.readByte() & 255; if(c < 128) { return c >> preShift; } var ret = (c & 127) << 7; c = this.i.readByte() & 255; if(c < 128) { return (ret | c) >> preShift; } ret |= c & 127; ret <<= 7; c = this.i.readByte() & 255; if(c < 128) { return (ret | c) >> preShift; } ret |= c & 127; ret <<= 8; c = this.i.readByte() & 255; ret |= c; if(signExtend && (ret & 268435456) != 0) { ret |= -536870912; } return ret >> preShift; }, readString: function() { var header = this.readInt(); if((header & 1) == 0) { var strRefIdx = header >> 1; return this.stringTable[strRefIdx]; } var len = header >> 1; return this.readStringNoHeader(len); }, readStringNoHeader: function(len) { if(len == 0) { return (openfl_utils__$internal_format_amf3_AMF3Value().default).AString(""); } var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AString(this.i.readString(len,(haxe_io_Encoding().default).UTF8)); this.stringTable.push(ret); return ret; }, readDate: function() { var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } var date = new Date(this.i.readDouble()); var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).ADate(date); this.complexObjectsTable.push(ret); return ret; }, readXml: function() { var n = this.readInt(); if((n & 1) == 0) { return this.complexObjectsTable[n >> 1]; } n >>= 1; var xml = (Xml().default).parse((openfl_utils__$internal_format_amf3_AMF3Tools().default).decode(this.readStringNoHeader(n))); var ret = (openfl_utils__$internal_format_amf3_AMF3Value().default).AXml(xml); this.complexObjectsTable.push(ret); return ret; }, readWithCode: function(id) { var i = this.i; switch(id) { case 0: return (openfl_utils__$internal_format_amf3_AMF3Value().default).AUndefined; case 1: return (openfl_utils__$internal_format_amf3_AMF3Value().default).ANull; case 2: return (openfl_utils__$internal_format_amf3_AMF3Value().default).ABool(false); case 3: return (openfl_utils__$internal_format_amf3_AMF3Value().default).ABool(true); case 4: return (openfl_utils__$internal_format_amf3_AMF3Value().default).AInt(this.readInt(true)); case 5: return (openfl_utils__$internal_format_amf3_AMF3Value().default).ANumber(i.readDouble()); case 6: return this.readString(); case 7: throw new (js__$Boot_HaxeError().default)("XMLDocument unsupported"); case 8: return this.readDate(); case 9: return this.readArray(); case 10: return this.readObject(); case 11: return this.readXml(); case 12: return this.readByteArray(); case 13:case 14: return this.readIntVector(); case 15: return this.readFloatVector(); case 16: return this.readObjectVector(); case 17: return this.readMap(); default: throw new (js__$Boot_HaxeError().default)("Unknown AMF " + id); } }, read: function() { var byte = this.i.readByte(); return this.readWithCode(byte); } }; AMF3Reader.prototype.__class__ = AMF3Reader.prototype.constructor = $hxClasses["openfl.utils._internal.format.amf3.AMF3Reader"] = AMF3Reader; // Init // Statics // Export exports.default = AMF3Reader;