UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

2 lines 1.35 kB
/*! Copyright 2023-2025 the gnablib contributors MPL-1.1 */ import{asBE as t,asLE as r}from"../../endian/platform.js";import{U32Mut as s}from"./U32.js";const e=Symbol.for("nodejs.util.inspect.custom");export class U32MutArray{constructor(t,r=0,e){null==e&&(e=t.length-r),this.buf=t,this.bufPos=r,this.arr=new Array(e);for(let t=0;t<e;t++)this.arr[t]=s.mount(this.buf,this.bufPos+t)}get length(){return this.arr.length}at(t){return this.arr[t]}set(t,r=0,s=0){this.buf.set(t.buf.subarray(t.bufPos+s),this.bufPos+r)}xorEq(t,r=0){let s=this.arr.length-r;t.length<s&&(s=t.length),s+=this.bufPos+r;for(let e=this.bufPos+r,i=t.bufPos;e<s;e++,i++)this.buf[e]^=t.buf[i]}zero(t=0){this.buf.fill(0,this.bufPos+t)}clone(){return new U32MutArray(this.buf.slice(this.bufPos,this.bufPos+this.length))}toString(){return"len="+this.length}toBytesBE(){const r=new Uint8Array(this.buf.slice(this.bufPos,this.bufPos+this.arr.length).buffer);return t.i32(r,0,this.arr.length),r}toBytesLE(){const t=new Uint8Array(this.buf.slice(this.bufPos,this.bufPos+this.arr.length).buffer);return r.i32(t,0,this.arr.length),t}get[Symbol.toStringTag](){return"U32MutArray"}[e](){return`U32MutArray(${this.toString()})`}static fromLen(t){return new U32MutArray(new Uint32Array(t))}static fromBytes(t,r=0,s){return null==s&&(s=t.byteLength-r),s>>=2,new U32MutArray(new Uint32Array(t,r,s))}}