You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.BufferReader = void 0; |
|
const emptyBuffer = Buffer.allocUnsafe(0); |
|
class BufferReader { |
|
constructor(offset = 0) { |
|
this.offset = offset; |
|
this.buffer = emptyBuffer; |
|
// TODO(bmc): support non-utf8 encoding? |
|
this.encoding = 'utf-8'; |
|
} |
|
setBuffer(offset, buffer) { |
|
this.offset = offset; |
|
this.buffer = buffer; |
|
} |
|
int16() { |
|
const result = this.buffer.readInt16BE(this.offset); |
|
this.offset += 2; |
|
return result; |
|
} |
|
byte() { |
|
const result = this.buffer[this.offset]; |
|
this.offset++; |
|
return result; |
|
} |
|
int32() { |
|
const result = this.buffer.readInt32BE(this.offset); |
|
this.offset += 4; |
|
return result; |
|
} |
|
uint32() { |
|
const result = this.buffer.readUInt32BE(this.offset); |
|
this.offset += 4; |
|
return result; |
|
} |
|
string(length) { |
|
const result = this.buffer.toString(this.encoding, this.offset, this.offset + length); |
|
this.offset += length; |
|
return result; |
|
} |
|
cstring() { |
|
const start = this.offset; |
|
let end = start; |
|
// eslint-disable-next-line no-empty |
|
while (this.buffer[end++] !== 0) { } |
|
this.offset = end; |
|
return this.buffer.toString(this.encoding, start, end - 1); |
|
} |
|
bytes(length) { |
|
const result = this.buffer.slice(this.offset, this.offset + length); |
|
this.offset += length; |
|
return result; |
|
} |
|
} |
|
exports.BufferReader = BufferReader; |
|
//# sourceMappingURL=buffer-reader.js.map
|