{"version":3,"file":"BinaryInput.mjs","sources":["../../src/core/BinaryInput.ts"],"sourcesContent":["/**\n * @public\n */\nexport class BinaryInput {\n    constructor(data: Uint8Array, public strings = new Array<string>(), private index: number = 0, private buffer = new DataView(data.buffer)) {}\n\n    readByte(): number {\n        return this.buffer.getInt8(this.index++);\n    }\n\n    readUnsignedByte(): number {\n        return this.buffer.getUint8(this.index++);\n    }\n\n    readShort(): number {\n        const value = this.buffer.getInt16(this.index);\n\n        this.index += 2;\n\n        return value;\n    }\n\n    readInt32(): number {\n        const value = this.buffer.getInt32(this.index);\n\n        this.index += 4;\n\n        return value;\n    }\n\n    readInt(optimizePositive: boolean) {\n        let b = this.readByte();\n        let result = b & 0x7f;\n\n        if ((b & 0x80) != 0) {\n            b = this.readByte();\n            result |= (b & 0x7f) << 7;\n            if ((b & 0x80) != 0) {\n                b = this.readByte();\n                result |= (b & 0x7f) << 14;\n                if ((b & 0x80) != 0) {\n                    b = this.readByte();\n                    result |= (b & 0x7f) << 21;\n                    if ((b & 0x80) != 0) {\n                        b = this.readByte();\n                        result |= (b & 0x7f) << 28;\n                    }\n                }\n            }\n        }\n\n        return optimizePositive ? result : (result >>> 1) ^ -(result & 1);\n    }\n\n    readStringRef(): string | null {\n        const index = this.readInt(true);\n\n        return index == 0 ? null : this.strings[index - 1];\n    }\n\n    readString(): string | null {\n        let byteCount = this.readInt(true);\n\n        switch (byteCount) {\n            case 0:\n                return null;\n            case 1:\n                return '';\n        }\n        byteCount--;\n        let chars = '';\n\n        for (let i = 0; i < byteCount; ) {\n            const b = this.readUnsignedByte();\n\n            switch (b >> 4) {\n                case 12:\n                case 13:\n                    chars += String.fromCharCode(((b & 0x1f) << 6) | (this.readByte() & 0x3f));\n                    i += 2;\n                    break;\n                case 14:\n                    chars += String.fromCharCode(((b & 0x0f) << 12) | ((this.readByte() & 0x3f) << 6) | (this.readByte() & 0x3f));\n                    i += 3;\n                    break;\n                default:\n                    chars += String.fromCharCode(b);\n                    i++;\n            }\n        }\n\n        return chars;\n    }\n\n    readFloat(): number {\n        const value = this.buffer.getFloat32(this.index);\n\n        this.index += 4;\n\n        return value;\n    }\n\n    readBoolean(): boolean {\n        return this.readByte() != 0;\n    }\n}\n"],"names":[],"mappings":"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"}