feat(DataView, ConstDataView)

This commit is contained in:
2025-08-04 15:33:12 +03:00
parent 72f6102f0c
commit 504bfbeae8
11 changed files with 179 additions and 37 deletions

View File

@ -1,4 +1,4 @@
import { limits, parse, serialize, sizeofHead, Type } from "."
import { parse, serialize, sizeofHead, Type } from "."
export function ConstArray(size) {
const obj = { _size: size }
@ -8,16 +8,11 @@ export function ConstArray(size) {
}
ConstArray.prototype.serialize = function(dv, src, ...inner_types) {
const item_size = sizeofHead(src[0])
let size = this._size
const size = this._size
if (dv.byteLength < size * item_size) {
throw new Error('too small buffer')
}
if (size > limits.u32.MAX_VALUE) {
throw new Error('array is too long')
}
dv.setUint32(0, size)
for (let i = 0; i < size; i++) {
const item_frame = new DataView(dv.buffer, dv.byteOffset + item_size * i)