mesh v2 at /v2/mesh
This commit is contained in:
parent
aee9fd6ed7
commit
6566c45f9a
85 changed files with 138198 additions and 1 deletions
178
src2/add/class.js
Normal file
178
src2/add/class.js
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */
|
||||
|
||||
// use: add.array
|
||||
import { arrayPrototype } from './array.js';
|
||||
|
||||
// Make classes available globally
|
||||
class ArrayWriter {
|
||||
constructor() {
|
||||
this.pos = 0;
|
||||
this.array = [];
|
||||
}
|
||||
|
||||
seek(pos) {
|
||||
let last = this.pos;
|
||||
this.pos = pos;
|
||||
return last;
|
||||
}
|
||||
|
||||
skip(len) {
|
||||
this.writeBytes(new Array(len).fill(0), 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;
|
||||
}
|
||||
|
||||
writeBytes(bytes) {
|
||||
this.array.appendAll(bytes);
|
||||
this.pos += bytes.length;
|
||||
}
|
||||
|
||||
toBuffer() {
|
||||
return new Uint8ClampedArray(this.array).buffer;
|
||||
}
|
||||
};
|
||||
|
||||
class DataWriter {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
class DataReader {
|
||||
constructor(view, pos) {
|
||||
this.view = view;
|
||||
this.pos = pos || 0;
|
||||
}
|
||||
|
||||
skip(v) {
|
||||
let p = this.pos;
|
||||
this.pos += v;
|
||||
return p;
|
||||
}
|
||||
|
||||
readBytes(len) {
|
||||
let buf = this.view.buffer.slice(this.pos, this.pos + len);
|
||||
this.pos += len;
|
||||
return buf;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
window.ArrayWriter = ArrayWriter;
|
||||
window.DataWriter = DataWriter;
|
||||
window.DataReader = DataReader;
|
||||
|
||||
// Export for ES modules
|
||||
export { ArrayWriter, DataWriter, DataReader };
|
||||
Loading…
Reference in a new issue