grid-apps-cmms/src/add/class.js

154 lines
3 KiB
JavaScript
Raw Normal View History

2021-07-24 23:30:45 -04:00
self.ArrayWriter = class ArrayWriter {
constructor() {
this.pos = 0;
this.array = [];
}
seek(pos) {
let last = this.pos;
this.pos = pos;
return last;
}
skip(len) {
this.pos += len;
return this.pos;
}
writeU8(v) {
this.array[this.pos++] = v & 0xff;
}
writeU16(v) {
this.array[this.pos++] = (v >> 8) & 0xff;
this.array[this.pos++] = v & 0xff;
}
writeU32(v) {
this.array[this.pos++] = (v >> 24) & 0xff;
this.array[this.pos++] = (v >> 16) & 0xff;
this.array[this.pos++] = (v >> 8) & 0xff;
this.array[this.pos++] = v & 0xff;
}
toBuffer() {
return new Uint8ClampedArray(this.array).buffer;
}
};
2020-06-16 15:00:12 -04:00
self.DataWriter = class DataWriter {
2020-05-04 12:10:16 -04:00
constructor(view, pos) {
this.view = view;
this.pos = pos || 0;
}
skip(v) {
let p = this.pos;
this.pos += v;
return p;
}
writeU8(v) {
try {
this.view.setUint8(this.pos, v);
return this.skip(1);
} catch (err) {
console.log({pos:this.pos, err})
throw err;
}
}
writeU16(v,le) {
this.view.setUint16(this.pos, v, le);
return this.skip(2);
}
writeU32(v,le) {
this.view.setUint32(this.pos, v, le);
return this.skip(4);
}
writeI32(v,le) {
this.view.setInt32(this.pos, v, le);
return this.skip(4);
}
writeUB64(v,le) {
this.view.setBigUint64(this.pos, v, le);
return this.skip(8);
}
writeB64(v,le) {
this.view.setBigInt64(this.pos, v, le);
return this.skip(8);
}
writeF32(v,le) {
this.view.setFloat32(this.pos, v, le);
return this.skip(4);
}
writeF64(v,le) {
this.view.setFloat64(this.pos, v, le);
return this.skip(8);
}
}
2020-06-16 15:00:12 -04:00
self.DataReader = class DataReader {
2020-05-04 12:10:16 -04:00
constructor(view, pos) {
this.view = view;
this.pos = pos || 0;
}
skip(v) {
let p = this.pos;
this.pos += v;
return p;
}
readU8() {
return this.view.getUint8(this.pos++);
}
readU16(le) {
let v = this.view.getUint16(this.pos, le);
this.pos += 2;
return v;
}
readU32(le) {
let v = this.view.getUint32(this.pos, le);
this.pos += 4;
return v;
}
readI32(le) {
let v = this.view.getInt32(this.pos, le);
this.pos += 4;
return v;
}
readB64(le) {
let v = this.view.getBigInt64(this.pos, le);
this.pos += 8;
return v;
}
readUB64(le) {
let v = this.view.getBigUint64(this.pos, le);
this.pos += 8;
return v;
}
readF32(le) {
let v = this.view.getFloat32(this.pos, le);
this.pos += 4;
return v;
}
readF64(le) {
let v = this.view.getFloat64(this.pos, le);
this.pos += 8;
return v;
}
}