Files
starface-outlook-sync-addin/node_modules/@jsonjoy.com/json-pack/lib/xdr/XdrDecoder.js
T
Stefan Hacker 37ad745546 first commit
2026-04-03 09:38:48 +02:00

98 lines
2.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.XdrDecoder = void 0;
const Reader_1 = require("@jsonjoy.com/buffers/lib/Reader");
class XdrDecoder {
constructor(reader = new Reader_1.Reader()) {
this.reader = reader;
}
read(uint8) {
this.reader.reset(uint8);
return this.readAny();
}
decode(uint8) {
this.reader.reset(uint8);
return this.readAny();
}
readAny() {
throw new Error('not implemented');
}
readVoid() {
}
readBoolean() {
return this.readInt() !== 0;
}
readInt() {
const reader = this.reader;
const value = reader.view.getInt32(reader.x, false);
reader.x += 4;
return value;
}
readUnsignedInt() {
const reader = this.reader;
const value = reader.view.getUint32(reader.x, false);
reader.x += 4;
return value;
}
readHyper() {
const reader = this.reader;
const value = reader.view.getBigInt64(reader.x, false);
reader.x += 8;
return value;
}
readUnsignedHyper() {
const reader = this.reader;
const value = reader.view.getBigUint64(reader.x, false);
reader.x += 8;
return value;
}
readFloat() {
const reader = this.reader;
const value = reader.view.getFloat32(reader.x, false);
reader.x += 4;
return value;
}
readDouble() {
const reader = this.reader;
const value = reader.view.getFloat64(reader.x, false);
reader.x += 8;
return value;
}
readQuadruple() {
throw new Error('not implemented');
}
readOpaque(size) {
const reader = this.reader;
const data = reader.buf(size);
const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
reader.skip(paddedSize - size);
return data;
}
readVarlenOpaque() {
const size = this.readUnsignedInt();
return this.readOpaque(size);
}
readString() {
const size = this.readUnsignedInt();
const reader = this.reader;
const text = reader.utf8(size);
const paddedSize = size % 4 === 0 ? size : size + (4 - (size % 4));
reader.skip(paddedSize - size);
return text;
}
readEnum() {
return this.readInt();
}
readArray(size, elementReader) {
const array = [];
for (let i = 0; i < size; i++)
array.push(elementReader());
return array;
}
readVarlenArray(elementReader) {
const size = this.readUnsignedInt();
return this.readArray(size, elementReader);
}
}
exports.XdrDecoder = XdrDecoder;
//# sourceMappingURL=XdrDecoder.js.map