UNPKG

openfl

Version:

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

382 lines (366 loc) 11 kB
// Class: haxe.Unserializer 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 haxe__$Unserializer_NullResolver() {return require("./../haxe/_Unserializer/NullResolver");} function StringTools() {return require("./../StringTools");} function Std() {return require("./../Std");} function HxOverrides() {return require("./../HxOverrides");} function js__$Boot_HaxeError() {return require("./../js/_Boot/HaxeError");} function Reflect() {return require("./../Reflect");} function Type() {return require("./../Type");} function haxe_ds_ObjectMap() {return require("./../haxe/ds/ObjectMap");} function haxe_ds_StringMap() {return require("./../haxe/ds/StringMap");} function haxe_ds_List() {return require("./../haxe/ds/List");} function haxe_ds_IntMap() {return require("./../haxe/ds/IntMap");} function haxe_io_Bytes() {return require("./../haxe/io/Bytes");} function haxe__$Unserializer_DefaultResolver() {return require("./../haxe/_Unserializer/DefaultResolver");} // Constructor var Unserializer = function(buf) { this.buf = buf; this.length = buf.length; this.pos = 0; this.scache = []; this.cache = []; var r = Unserializer.DEFAULT_RESOLVER; if(r == null) { r = new (haxe__$Unserializer_DefaultResolver().default)(); Unserializer.DEFAULT_RESOLVER = r; } this.resolver = r; } // Meta Unserializer.__name__ = "haxe.Unserializer"; Unserializer.__isInterface__ = false; Unserializer.prototype = { setResolver: function(r) { if(r == null) { this.resolver = (haxe__$Unserializer_NullResolver().default).get_instance(); } else { this.resolver = r; } }, get: function(p) { return (StringTools().default).fastCodeAt(this.buf,p); }, readDigits: function() { var k = 0; var s = false; var fpos = this.pos; while(true) { var c = this.get(this.pos); if((StringTools().default).isEof(c)) { break; } if(c == 45) { if(this.pos != fpos) { break; } s = true; this.pos++; continue; } if(c < 48 || c > 57) { break; } k = k * 10 + (c - 48); this.pos++; } if(s) { k *= -1; } return k; }, readFloat: function() { var p1 = this.pos; while(true) { var c = this.get(this.pos); if((StringTools().default).isEof(c)) { break; } if(c >= 43 && c < 58 || c == 101 || c == 69) { this.pos++; } else { break; } } return (Std().default).parseFloat((HxOverrides().default).substr(this.buf,p1,this.pos - p1)); }, unserializeObject: function(o) { while(true) { if(this.pos >= this.length) { throw new (js__$Boot_HaxeError().default)("Invalid object"); } if(this.get(this.pos) == 103) { break; } var k = this.unserialize(); if(typeof(k) != "string") { throw new (js__$Boot_HaxeError().default)("Invalid object key"); } var v = this.unserialize(); (Reflect().default).setField(o,k,v); } this.pos++; }, unserializeEnum: function(edecl,tag) { if(this.get(this.pos++) != 58) { throw new (js__$Boot_HaxeError().default)("Invalid enum format"); } var nargs = this.readDigits(); if(nargs == 0) { return (Type().default).createEnum(edecl,tag); } var args = []; while(nargs-- > 0) args.push(this.unserialize()); return (Type().default).createEnum(edecl,tag,args); }, unserialize: function() { switch(this.get(this.pos++)) { case 65: var name = this.unserialize(); var cl = this.resolver.resolveClass(name); if(cl == null) { throw new (js__$Boot_HaxeError().default)("Class not found " + name); } return cl; case 66: var name1 = this.unserialize(); var e = this.resolver.resolveEnum(name1); if(e == null) { throw new (js__$Boot_HaxeError().default)("Enum not found " + name1); } return e; case 67: var name2 = this.unserialize(); var cl1 = this.resolver.resolveClass(name2); if(cl1 == null) { throw new (js__$Boot_HaxeError().default)("Class not found " + name2); } var o = (Type().default).createEmptyInstance(cl1); this.cache.push(o); o.hxUnserialize(this); if(this.get(this.pos++) != 103) { throw new (js__$Boot_HaxeError().default)("Invalid custom data"); } return o; case 77: var h = new (haxe_ds_ObjectMap().default)(); this.cache.push(h); var buf = this.buf; while(this.get(this.pos) != 104) { var s = this.unserialize(); h.set(s,this.unserialize()); } this.pos++; return h; case 82: var n = this.readDigits(); if(n < 0 || n >= this.scache.length) { throw new (js__$Boot_HaxeError().default)("Invalid string reference"); } return this.scache[n]; case 97: var buf1 = this.buf; var a = []; this.cache.push(a); while(true) { var c = this.get(this.pos); if(c == 104) { this.pos++; break; } if(c == 117) { this.pos++; var n1 = this.readDigits(); a[a.length + n1 - 1] = null; } else { a.push(this.unserialize()); } } return a; case 98: var h1 = new (haxe_ds_StringMap().default)(); this.cache.push(h1); var buf2 = this.buf; while(this.get(this.pos) != 104) { var s1 = this.unserialize(); h1.set(s1,this.unserialize()); } this.pos++; return h1; case 99: var name3 = this.unserialize(); var cl2 = this.resolver.resolveClass(name3); if(cl2 == null) { throw new (js__$Boot_HaxeError().default)("Class not found " + name3); } var o1 = (Type().default).createEmptyInstance(cl2); this.cache.push(o1); this.unserializeObject(o1); return o1; case 100: return this.readFloat(); case 102: return false; case 105: return this.readDigits(); case 106: var name4 = this.unserialize(); var edecl = this.resolver.resolveEnum(name4); if(edecl == null) { throw new (js__$Boot_HaxeError().default)("Enum not found " + name4); } this.pos++; var index = this.readDigits(); var tag = (Type().default).getEnumConstructs(edecl)[index]; if(tag == null) { throw new (js__$Boot_HaxeError().default)("Unknown enum index " + name4 + "@" + index); } var e1 = this.unserializeEnum(edecl,tag); this.cache.push(e1); return e1; case 107: return NaN; case 108: var l = new (haxe_ds_List().default)(); this.cache.push(l); var buf3 = this.buf; while(this.get(this.pos) != 104) l.add(this.unserialize()); this.pos++; return l; case 109: return -Infinity; case 110: return null; case 111: var o2 = { }; this.cache.push(o2); this.unserializeObject(o2); return o2; case 112: return Infinity; case 113: var h2 = new (haxe_ds_IntMap().default)(); this.cache.push(h2); var buf4 = this.buf; var c1 = this.get(this.pos++); while(c1 == 58) { var i = this.readDigits(); h2.set(i,this.unserialize()); c1 = this.get(this.pos++); } if(c1 != 104) { throw new (js__$Boot_HaxeError().default)("Invalid IntMap format"); } return h2; case 114: var n2 = this.readDigits(); if(n2 < 0 || n2 >= this.cache.length) { throw new (js__$Boot_HaxeError().default)("Invalid reference"); } return this.cache[n2]; case 115: var len = this.readDigits(); var buf5 = this.buf; if(this.get(this.pos++) != 58 || this.length - this.pos < len) { throw new (js__$Boot_HaxeError().default)("Invalid bytes length"); } var codes = Unserializer.CODES; if(codes == null) { codes = Unserializer.initCodes(); Unserializer.CODES = codes; } var i1 = this.pos; var rest = len & 3; var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0); var max = i1 + (len - rest); var bytes = (haxe_io_Bytes().default).alloc(size); var bpos = 0; while(i1 < max) { var c11 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; var c2 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; bytes.set(bpos++,c11 << 2 | c2 >> 4); var c3 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; bytes.set(bpos++,c2 << 4 | c3 >> 2); var c4 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; bytes.set(bpos++,c3 << 6 | c4); } if(rest >= 2) { var c12 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; var c21 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; bytes.set(bpos++,c12 << 2 | c21 >> 4); if(rest == 3) { var c31 = codes[(StringTools().default).fastCodeAt(buf5,i1++)]; bytes.set(bpos++,c21 << 4 | c31 >> 2); } } this.pos += len; this.cache.push(bytes); return bytes; case 116: return true; case 118: var d; if(this.get(this.pos) >= 48 && this.get(this.pos) <= 57 && this.get(this.pos + 1) >= 48 && this.get(this.pos + 1) <= 57 && this.get(this.pos + 2) >= 48 && this.get(this.pos + 2) <= 57 && this.get(this.pos + 3) >= 48 && this.get(this.pos + 3) <= 57 && this.get(this.pos + 4) == 45) { d = (HxOverrides().default).strDate((HxOverrides().default).substr(this.buf,this.pos,19)); this.pos += 19; } else { d = new Date(this.readFloat()); } this.cache.push(d); return d; case 119: var name5 = this.unserialize(); var edecl1 = this.resolver.resolveEnum(name5); if(edecl1 == null) { throw new (js__$Boot_HaxeError().default)("Enum not found " + name5); } var e2 = this.unserializeEnum(edecl1,this.unserialize()); this.cache.push(e2); return e2; case 120: throw (js__$Boot_HaxeError().default).wrap(this.unserialize()); case 121: var len1 = this.readDigits(); if(this.get(this.pos++) != 58 || this.length - this.pos < len1) { throw new (js__$Boot_HaxeError().default)("Invalid string length"); } var s2 = (HxOverrides().default).substr(this.buf,this.pos,len1); this.pos += len1; s2 = (StringTools().default).urlDecode(s2); this.scache.push(s2); return s2; case 122: return 0; default: } this.pos--; throw new (js__$Boot_HaxeError().default)("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos); } }; Unserializer.prototype.__class__ = Unserializer.prototype.constructor = $hxClasses["haxe.Unserializer"] = Unserializer; // Init // Statics Unserializer.initCodes = function() { var codes = []; var _g = 0; var _g1 = Unserializer.BASE64.length; while(_g < _g1) { var i = _g++; codes[(StringTools().default).fastCodeAt(Unserializer.BASE64,i)] = i; } return codes; } Unserializer.run = function(v) { return new Unserializer(v).unserialize(); } Unserializer.DEFAULT_RESOLVER = new (haxe__$Unserializer_DefaultResolver().default)() Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:" Unserializer.CODES = null // Export exports.default = Unserializer;