@@ -94,8 +94,14 @@ export class VSBuffer {
9494 return new VSBuffer ( this . buffer . subarray ( start ! /*bad lib.d.ts*/ , end ) ) ;
9595 }
9696
97- set ( array : VSBuffer , offset ?: number ) : void {
98- this . buffer . set ( array . buffer , offset ) ;
97+ set ( array : VSBuffer , offset ?: number ) : void ;
98+ set ( array : Uint8Array , offset ?: number ) : void ;
99+ set ( array : VSBuffer | Uint8Array , offset ?: number ) : void {
100+ if ( array instanceof VSBuffer ) {
101+ this . buffer . set ( array . buffer , offset ) ;
102+ } else {
103+ this . buffer . set ( array , offset ) ;
104+ }
99105 }
100106
101107 readUInt32BE ( offset : number ) : number {
@@ -106,6 +112,14 @@ export class VSBuffer {
106112 writeUInt32BE ( this . buffer , value , offset ) ;
107113 }
108114
115+ readUInt32LE ( offset : number ) : number {
116+ return readUInt32LE ( this . buffer , offset ) ;
117+ }
118+
119+ writeUInt32LE ( value : number , offset : number ) : void {
120+ writeUInt32LE ( this . buffer , value , offset ) ;
121+ }
122+
109123 readUInt8 ( offset : number ) : number {
110124 return readUInt8 ( this . buffer , offset ) ;
111125 }
@@ -117,15 +131,15 @@ export class VSBuffer {
117131
118132export function readUInt16LE ( source : Uint8Array , offset : number ) : number {
119133 return (
120- source [ offset ]
121- + source [ offset + 1 ] * 2 ** 8
134+ ( ( source [ offset + 0 ] << 0 ) >>> 0 ) |
135+ ( ( source [ offset + 1 ] << 8 ) >>> 0 )
122136 ) ;
123137}
124138
125139export function writeUInt16LE ( destination : Uint8Array , value : number , offset : number ) : void {
126- destination [ offset ] = value ;
140+ destination [ offset + 0 ] = ( value & 0b11111111 ) ;
127141 value = value >>> 8 ;
128- destination [ offset + 1 ] = value ;
142+ destination [ offset + 1 ] = ( value & 0b11111111 ) ;
129143}
130144
131145export function readUInt32BE ( source : Uint8Array , offset : number ) : number {
@@ -147,6 +161,25 @@ export function writeUInt32BE(destination: Uint8Array, value: number, offset: nu
147161 destination [ offset ] = value ;
148162}
149163
164+ export function readUInt32LE ( source : Uint8Array , offset : number ) : number {
165+ return (
166+ ( ( source [ offset + 0 ] << 0 ) >>> 0 ) |
167+ ( ( source [ offset + 1 ] << 8 ) >>> 0 ) |
168+ ( ( source [ offset + 2 ] << 16 ) >>> 0 ) |
169+ ( ( source [ offset + 3 ] << 24 ) >>> 0 )
170+ ) ;
171+ }
172+
173+ export function writeUInt32LE ( destination : Uint8Array , value : number , offset : number ) : void {
174+ destination [ offset + 0 ] = ( value & 0b11111111 ) ;
175+ value = value >>> 8 ;
176+ destination [ offset + 1 ] = ( value & 0b11111111 ) ;
177+ value = value >>> 8 ;
178+ destination [ offset + 2 ] = ( value & 0b11111111 ) ;
179+ value = value >>> 8 ;
180+ destination [ offset + 3 ] = ( value & 0b11111111 ) ;
181+ }
182+
150183export function readUInt8 ( source : Uint8Array , offset : number ) : number {
151184 return source [ offset ] ;
152185}
0 commit comments