import { parse, serialize, sizeofHead, Type } from "." export function ConstArray(size) { const obj = { _size: size } Object.setPrototypeOf(obj, ConstArray.prototype) obj.new(ConstArray, arguments) return obj } ConstArray.prototype.serialize = function(dv, src, ...inner_types) { const item_size = sizeofHead(src[0]) const size = this._size if (dv.byteLength < size * item_size) { throw new Error('too small buffer') } for (let i = 0; i < size; i++) { const item_frame = new DataView(dv.buffer, dv.byteOffset + item_size * i) serialize(item_frame, src[i], ...inner_types) } return } ConstArray.prototype.parse = function(dv, ...inner_types) { const size = this._size const item_size = sizeofHead(...inner_types) const array = Array(size) for (let i = 0; i < size; i++) { const item_frame = new DataView(dv.buffer, dv.byteOffset + item_size * i) array[i] = parse(item_frame, ...inner_types) } return array } ConstArray.prototype.isHeadless = function() { return false } ConstArray.prototype.sizeof = function(...inner_types) { return sizeofHead(...inner_types) * this._size } Object.setPrototypeOf(ConstArray.prototype, Type.prototype) Object.freeze(ConstArray.prototype)