@thetoto/openfl
Version:
A fast, productive library for 2D cross-platform development.
392 lines (374 loc) • 10.4 kB
JavaScript
// Class: format.amf3.Reader
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 format_amf3_Tools() {return require("./../../format/amf3/Tools");}
function haxe_Log() {return require("./../../haxe/Log");}
function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");}
function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");}
function format_amf3_Value() {return require("./../../format/amf3/Value");}
function haxe_ds_EnumValueMap() {return require("./../../haxe/ds/EnumValueMap");}
function Type() {return require("./../../Type");}
function Std() {return require("./../../Std");}
function haxe_io_Bytes() {return require("./../../haxe/io/Bytes");}
function Xml() {return require("./../../Xml");}
// Constructor
var Reader = function(i) {
this.complexObjectsTable = [];
this.objectTraitsTable = [];
this.stringTable = [];
this.i = i;
i.set_bigEndian(true);
}
// Meta
Reader.__name__ = "format.amf3.Reader";
Reader.__isInterface__ = false;
Reader.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 >>= 3;
var refTraits = this.objectTraitsTable[n];
dyn = refTraits.isDynamic;
isExternalizable = refTraits.isExternalizable;
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((format_amf3_Tools().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();
(haxe_Log().default).trace((format_amf3_Tools().default).decode(className),{ fileName : "../node_modules/format/format/amf3/Reader.hx", lineNumber : 108, className : "format.amf3.Reader", methodName : "readObject"});
} else {
throw new (js__$Boot_HaxeError().default)("Invalid object traits");
}
var h = new (haxe_ds_StringMap().default)();
var ret = (format_amf3_Value().default).AObject(h);
this.complexObjectsTable.push(ret);
if(!isExternalizable) {
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 = (format_amf3_Tools().default).decode(this.readString());
if(s == "") {
break;
}
h.set(s,this.read());
}
}
} else {
throw new (js__$Boot_HaxeError().default)("Externalizable not supported");
}
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 = (format_amf3_Value().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 = (format_amf3_Value().default).AArray(a,m);
this.complexObjectsTable.push(ret);
var assocName = (format_amf3_Tools().default).decode(this.readString());
while(assocName.length != 0) {
var v = this.read();
m.set(assocName,v);
assocName = (format_amf3_Tools().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 a;
if(fixed) {
var this1 = new Array(len);
a = this1;
} else {
a = [];
}
var _g = 0;
var _g1 = len;
while(_g < _g1) {
var r = _g++;
a[r] = (format_amf3_Value().default).AInt(this.i.readInt32());
}
var ret = fixed ? (format_amf3_Value().default).AVector(a) : (format_amf3_Value().default).AArray(a);
this.complexObjectsTable.push(ret);
return ret;
},
readDoubleVector: 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 a;
if(fixed) {
var this1 = new Array(len);
a = this1;
} else {
a = [];
}
var _g = 0;
var _g1 = len;
while(_g < _g1) {
var r = _g++;
a[r] = (format_amf3_Value().default).ANumber(this.i.readDouble());
}
var ret = fixed ? (format_amf3_Value().default).AVector(a) : (format_amf3_Value().default).AArray(a);
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 objectTypeName = (format_amf3_Tools().default).decode(this.readString());
(haxe_Log().default).trace("readObjectVector name:" + objectTypeName,{ fileName : "../node_modules/format/format/amf3/Reader.hx", lineNumber : 259, className : "format.amf3.Reader", methodName : "readObjectVector"});
var VC = (Type().default).resolveClass(objectTypeName);
(haxe_Log().default).trace("VC:" + (Std().default).string(VC),{ fileName : "../node_modules/format/format/amf3/Reader.hx", lineNumber : 261, className : "format.amf3.Reader", methodName : "readObjectVector"});
var a;
var ret;
if(fixed) {
var this1 = new Array(len);
a = this1;
ret = (format_amf3_Value().default).AVector(a);
} else {
a = [];
ret = (format_amf3_Value().default).AArray(a);
}
this.complexObjectsTable.push(ret);
var _g = 0;
var _g1 = len;
while(_g < _g1) {
var r = _g++;
a[r] = this.read();
}
return ret;
},
readBytes: 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 ret = (format_amf3_Value().default).ABytes(b);
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 (format_amf3_Value().default).AString("");
}
var u = "";
var c = 0;
var d = 0;
var j = 0;
var it = 0;
while(j < len) {
c = this.i.readByte();
if(c < 128) {
it = 0;
d = c;
} else if(c < 224) {
it = 1;
d = c & 31;
} else if(c < 240) {
it = 2;
d = c & 15;
} else if(c < 241) {
it = 3;
d = c & 7;
}
c = it;
while(c-- > 0) {
d <<= 6;
d |= this.i.readByte() & 63;
}
j += it + 1;
if(d != 1) {
u = u + String.fromCodePoint(d);
}
}
var ret = (format_amf3_Value().default).AString(u.toString());
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 = (format_amf3_Value().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((format_amf3_Tools().default).decode(this.readStringNoHeader(n)));
var ret = (format_amf3_Value().default).AXml(xml);
this.complexObjectsTable.push(ret);
return ret;
},
readWithCode: function(id) {
var i = this.i;
switch(id) {
case 0:
return (format_amf3_Value().default).AUndefined;
case 1:
return (format_amf3_Value().default).ANull;
case 2:
return (format_amf3_Value().default).ABool(false);
case 3:
return (format_amf3_Value().default).ABool(true);
case 4:
return (format_amf3_Value().default).AInt(this.readInt(true));
case 5:
return (format_amf3_Value().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.readBytes();
case 13:case 14:
return this.readIntVector();
case 15:
return this.readDoubleVector();
case 16:
return this.readObjectVector();
case 17:
return this.readMap();
default:
throw new (js__$Boot_HaxeError().default)("Unknown AMF " + id);
}
},
read: function() {
return this.readWithCode(this.i.readByte());
}
};
Reader.prototype.__class__ = Reader.prototype.constructor = $hxClasses["format.amf3.Reader"] = Reader;
// Init
// Statics
// Export
exports.default = Reader;