fix types, impl readstring

This commit is contained in:
DavidVentura
2024-01-25 16:39:25 +01:00
parent fa3b6ef80f
commit b82d1b0b43
+11 -6
View File
@@ -11,7 +11,7 @@ DataView.prototype.writeU32 = function (val) {
return this.setUint32(0, val); return this.setUint32(0, val);
}; };
DataView.prototype.writeU64 = function (val) { DataView.prototype.writeU64 = function (val) {
return this.setUint64(0, val); return this.setBigUint64(0, val);
}; };
DataView.prototype.readU8 = function () { DataView.prototype.readU8 = function () {
return this.getUint8(0); return this.getUint8(0);
@@ -23,7 +23,7 @@ DataView.prototype.readU32 = function () {
return this.getUint32(0); return this.getUint32(0);
}; };
DataView.prototype.readU64 = function () { DataView.prototype.readU64 = function () {
return this.getUint64(0); return this.getBigUint64(0);
}; };
const isU8Array = (x: Uint8Array | number[]): x is Uint8Array => { const isU8Array = (x: Uint8Array | number[]): x is Uint8Array => {
return x instanceof Uint8Array; return x instanceof Uint8Array;
@@ -42,6 +42,10 @@ DataView.prototype.readByteArray = function (len) {
} }
return ret; return ret;
}; };
DataView.prototype.readString = function (len) {
const ba = this.readByteArray(len);
return String.fromCharCode.apply(null, new Uint8Array(ba.buffer));
};
const Memory = { const Memory = {
alloc: (len: number) => new DataView(new ArrayBuffer(len + 1)), alloc: (len: number) => new DataView(new ArrayBuffer(len + 1)),
@@ -53,10 +57,11 @@ declare global {
interface DataView { interface DataView {
add(offset: number): DataView; add(offset: number): DataView;
readByteArray(len: number): DataView; readByteArray(len: number): DataView;
readU16(): undefined; readString(len: number): string;
readU32(): undefined; readU16(): number;
readU64(): undefined; readU32(): number;
readU8(): undefined; readU64(): number;
readU8(): number;
writeByteArray(arr: Uint8Array | number[]): undefined; writeByteArray(arr: Uint8Array | number[]): undefined;
writeU16(n: number): undefined; writeU16(n: number): undefined;
writeU32(n: number): undefined; writeU32(n: number): undefined;