class TypedArray { readonly buffer: ArrayBuffer; readonly byteOffset: i32; readonly byteLength: i32; get length(): i32 { return this.byteLength / sizeof(); } constructor(length: i32) { var byteLength = length * sizeof(); this.buffer = new ArrayBuffer(byteLength); this.byteOffset = 0; this.byteLength = byteLength; } @operator("[]") private __get(index: i32): T { var offset = this.byteOffset; assert(index < this.byteLength / sizeof()); return load(changetype(this.buffer) + (offset + index) * sizeof(), 4); } @operator("[]=") private __set(index: i32, value: T): void { var offset = this.byteOffset; assert(index < (this.byteLength / sizeof())); store(changetype(this.buffer) + (offset + index) * sizeof(), value, 4); } } // export class Int8Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Int8Array"; // } // export class Uint8Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Uint8Array"; // } // export class Int16Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Int16Array"; // } // export class Uint16Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Uint16Array"; // } // export class Int32Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Int32Array"; // } // export class Uint32Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Uint32Array"; // } // export class Int64Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Int64Array"; // } // export class Uint64Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Uint64Array"; // } // export class Float32Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Float32Array"; // } // export class Float64Array extends TypedArray { // static readonly BYTES_PER_ELEMENT: usize = sizeof(); // static readonly name: string = "Float64Array"; // }