@mrhiden/cstruct
Version:
For packing and unpacking bytes (C like structures) in/from Buffer based on Object/Array type for parsing.
66 lines (65 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WriteBufferBE = void 0;
const write_buffer_1 = require("./write-buffer");
class WriteBufferBE extends write_buffer_1.WriteBuffer {
u16(val = 0) {
const buffer = Buffer.allocUnsafe(2);
buffer.writeUInt16BE(val);
this.moveOffset(buffer);
}
i16(val = 0) {
const buffer = Buffer.allocUnsafe(2);
buffer.writeInt16BE(val);
this.moveOffset(buffer);
}
u32(val = 0) {
const buffer = Buffer.allocUnsafe(4);
buffer.writeUInt32BE(val);
this.moveOffset(buffer);
}
i32(val = 0) {
const buffer = Buffer.allocUnsafe(4);
buffer.writeInt32BE(val);
this.moveOffset(buffer);
}
u64(val = 0n) {
const buffer = Buffer.allocUnsafe(8);
buffer.writeBigUInt64BE(val);
this.moveOffset(buffer);
}
i64(val = 0n) {
const buffer = Buffer.allocUnsafe(8);
buffer.writeBigInt64BE(val);
this.moveOffset(buffer);
}
f(val = 0) {
const buffer = Buffer.allocUnsafe(4);
buffer.writeFloatBE(val);
this.moveOffset(buffer);
}
d(val = 0) {
const buffer = Buffer.allocUnsafe(8);
buffer.writeDoubleBE(val);
this.moveOffset(buffer);
}
constructor() {
super();
this._atomFunctions = new Map([
...[...this._atomFunctions],
['b16', (val) => this.i16(+Boolean(val))],
['b32', (val) => this.i32(+Boolean(val))],
['b64', (val) => this.i64(BigInt(val))],
['u16', (val = 0) => this.u16(val)],
['u32', (val = 0) => this.u32(val)],
['u64', (val = 0n) => this.u64(val)],
['i16', (val = 0) => this.i16(val)],
['i32', (val = 0) => this.i32(val)],
['i64', (val = 0n) => this.i64(val)],
['f', (val = 0) => this.f(val)],
['d', (val = 0) => this.d(val)],
]);
this.addPredefinedAliases();
}
}
exports.WriteBufferBE = WriteBufferBE;