2023-04-28 16:47:02 +01:00
|
|
|
import { IWriter } from "./IWriter";
|
|
|
|
import { WriterBase } from "./WriterBase";
|
|
|
|
|
|
|
|
export class WriterBE extends WriterBase implements IWriter {
|
|
|
|
public writeShort(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(2);
|
|
|
|
buffer.writeInt16BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeInt16BE(value, this.offset);
|
|
|
|
this.offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeUShort(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(2);
|
|
|
|
buffer.writeUInt16BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeUInt16BE(value, this.offset);
|
|
|
|
this.offset += 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeInt(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(4);
|
|
|
|
buffer.writeInt32BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeInt32BE(value, this.offset);
|
|
|
|
this.offset += 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeUInt(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(4);
|
|
|
|
buffer.writeUInt32BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeUInt32BE(value, this.offset);
|
|
|
|
this.offset += 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeLong(value:number|bigint) {
|
|
|
|
if (typeof(value) !== "bigint") {
|
|
|
|
value = BigInt(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(8);
|
|
|
|
buffer.writeBigInt64BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeBigInt64BE(value, this.offset);
|
|
|
|
this.offset += 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeULong(value:number|bigint) {
|
|
|
|
if (typeof(value) !== "bigint") {
|
|
|
|
value = BigInt(value);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(8);
|
|
|
|
buffer.writeBigUint64BE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeBigUint64BE(value, this.offset);
|
|
|
|
this.offset += 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeFloat(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(4);
|
|
|
|
buffer.writeFloatBE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeFloatBE(value, this.offset);
|
|
|
|
this.offset += 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeDouble(value:number) {
|
|
|
|
if (this.resizable) {
|
|
|
|
const buffer = Buffer.alloc(8);
|
|
|
|
buffer.writeDoubleBE(value);
|
|
|
|
this.writeBuffer(buffer);
|
|
|
|
} else {
|
|
|
|
this.buffer.writeDoubleBE(value, this.offset);
|
|
|
|
this.offset += 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeShortString(text:string) {
|
|
|
|
this.writeUByte(text.length);
|
|
|
|
|
|
|
|
for (let i = 0; i < text.length; i++) {
|
|
|
|
this.writeUByte(text.charCodeAt(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public writeString(text:string) {
|
|
|
|
this.writeUShort(text.length);
|
|
|
|
|
|
|
|
for (let i = 0; i < text.length; i++) {
|
|
|
|
this.writeUByte(text.charCodeAt(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
2023-05-02 10:10:47 +01:00
|
|
|
|
|
|
|
public writeString16(text:string) {
|
|
|
|
this.writeUShort(text.length);
|
|
|
|
|
|
|
|
for (let i = 0; i < text.length; i++) {
|
|
|
|
this.writeUShort(text.charCodeAt(i));
|
|
|
|
}
|
|
|
|
|
|
|
|
return this;
|
|
|
|
}
|
2023-04-28 16:47:02 +01:00
|
|
|
}
|