@@ -41,6 +41,13 @@ export class Int8Array extends ArrayBufferView {
4141 store < i8 > ( this . dataStart + < usize > index , value ) ;
4242 }
4343
44+ at ( index : i32 ) : i8 {
45+ var len = this . byteLength ;
46+ index += select ( 0 , len , index >= 0 ) ;
47+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
48+ return load < i8 > ( this . dataStart + < usize > index ) ;
49+ }
50+
4451 includes ( searchElement : i8 , fromIndex : i32 = 0 ) : bool {
4552 return INCLUDES < Int8Array , i8 > ( this , searchElement , fromIndex ) ;
4653 }
@@ -169,6 +176,13 @@ export class Uint8Array extends ArrayBufferView {
169176 store < u8 > ( this . dataStart + < usize > index , value ) ;
170177 }
171178
179+ at ( index : i32 ) : u8 {
180+ var len = this . byteLength ;
181+ index += select ( 0 , len , index >= 0 ) ;
182+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
183+ return load < u8 > ( this . dataStart + < usize > index ) ;
184+ }
185+
172186 includes ( searchElement : u8 , fromIndex : i32 = 0 ) : bool {
173187 return INCLUDES < Uint8Array , u8 > ( this , searchElement , fromIndex ) ;
174188 }
@@ -297,6 +311,13 @@ export class Uint8ClampedArray extends ArrayBufferView {
297311 store < u8 > ( this . dataStart + < usize > index , ~ ( < i32 > value >> 31 ) & ( ( ( 255 - value ) >> 31 ) | value ) ) ;
298312 }
299313
314+ at ( index : i32 ) : u8 {
315+ var len = this . byteLength ;
316+ index += select ( 0 , len , index >= 0 ) ;
317+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
318+ return load < u8 > ( this . dataStart + < usize > index ) ;
319+ }
320+
300321 includes ( searchElement : u8 , fromIndex : i32 = 0 ) : bool {
301322 return INCLUDES < Uint8ClampedArray , u8 > ( this , searchElement , fromIndex ) ;
302323 }
@@ -425,6 +446,13 @@ export class Int16Array extends ArrayBufferView {
425446 store < i16 > ( this . dataStart + ( < usize > index << alignof < i16 > ( ) ) , value ) ;
426447 }
427448
449+ at ( index : i32 ) : i16 {
450+ var len = this . byteLength >>> alignof < i16 > ( ) ;
451+ index += select ( 0 , len , index >= 0 ) ;
452+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
453+ return load < i16 > ( this . dataStart + ( < usize > index << alignof < i16 > ( ) ) ) ;
454+ }
455+
428456 includes ( searchElement : i16 , fromIndex : i32 = 0 ) : bool {
429457 return INCLUDES < Int16Array , i16 > ( this , searchElement , fromIndex ) ;
430458 }
@@ -553,6 +581,13 @@ export class Uint16Array extends ArrayBufferView {
553581 store < u16 > ( this . dataStart + ( < usize > index << alignof < u16 > ( ) ) , value ) ;
554582 }
555583
584+ at ( index : i32 ) : u16 {
585+ var len = this . byteLength >>> alignof < u16 > ( ) ;
586+ index += select ( 0 , len , index >= 0 ) ;
587+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
588+ return load < u16 > ( this . dataStart + ( < usize > index << alignof < u16 > ( ) ) ) ;
589+ }
590+
556591 includes ( searchElement : u16 , fromIndex : i32 = 0 ) : bool {
557592 return INCLUDES < Uint16Array , u16 > ( this , searchElement , fromIndex ) ;
558593 }
@@ -681,6 +716,13 @@ export class Int32Array extends ArrayBufferView {
681716 store < i32 > ( this . dataStart + ( < usize > index << alignof < i32 > ( ) ) , value ) ;
682717 }
683718
719+ at ( index : i32 ) : i32 {
720+ var len = this . byteLength >>> alignof < i32 > ( ) ;
721+ index += select ( 0 , len , index >= 0 ) ;
722+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
723+ return load < i32 > ( this . dataStart + ( < usize > index << alignof < i32 > ( ) ) ) ;
724+ }
725+
684726 includes ( searchElement : i32 , fromIndex : i32 = 0 ) : bool {
685727 return INCLUDES < Int32Array , i32 > ( this , searchElement , fromIndex ) ;
686728 }
@@ -809,6 +851,13 @@ export class Uint32Array extends ArrayBufferView {
809851 store < u32 > ( this . dataStart + ( < usize > index << alignof < u32 > ( ) ) , value ) ;
810852 }
811853
854+ at ( index : i32 ) : u32 {
855+ var len = this . byteLength >>> alignof < u32 > ( ) ;
856+ index += select ( 0 , len , index >= 0 ) ;
857+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
858+ return load < u32 > ( this . dataStart + ( < usize > index << alignof < u32 > ( ) ) ) ;
859+ }
860+
812861 includes ( searchElement : u32 , fromIndex : i32 = 0 ) : bool {
813862 return INCLUDES < Uint32Array , u32 > ( this , searchElement , fromIndex ) ;
814863 }
@@ -937,6 +986,13 @@ export class Int64Array extends ArrayBufferView {
937986 store < i64 > ( this . dataStart + ( < usize > index << alignof < i64 > ( ) ) , value ) ;
938987 }
939988
989+ at ( index : i32 ) : i64 {
990+ var len = this . byteLength >>> alignof < i64 > ( ) ;
991+ index += select ( 0 , len , index >= 0 ) ;
992+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
993+ return load < i64 > ( this . dataStart + ( < usize > index << alignof < i64 > ( ) ) ) ;
994+ }
995+
940996 includes ( searchElement : i64 , fromIndex : i32 = 0 ) : bool {
941997 return INCLUDES < Int64Array , i64 > ( this , searchElement , fromIndex ) ;
942998 }
@@ -1065,6 +1121,13 @@ export class Uint64Array extends ArrayBufferView {
10651121 store < u64 > ( this . dataStart + ( < usize > index << alignof < u64 > ( ) ) , value ) ;
10661122 }
10671123
1124+ at ( index : i32 ) : u64 {
1125+ var len = this . byteLength >>> alignof < u64 > ( ) ;
1126+ index += select ( 0 , len , index >= 0 ) ;
1127+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
1128+ return load < u64 > ( this . dataStart + ( < usize > index << alignof < u64 > ( ) ) ) ;
1129+ }
1130+
10681131 includes ( searchElement : u64 , fromIndex : i32 = 0 ) : bool {
10691132 return INCLUDES < Uint64Array , u64 > ( this , searchElement , fromIndex ) ;
10701133 }
@@ -1193,6 +1256,13 @@ export class Float32Array extends ArrayBufferView {
11931256 store < f32 > ( this . dataStart + ( < usize > index << alignof < f32 > ( ) ) , value ) ;
11941257 }
11951258
1259+ at ( index : i32 ) : f32 {
1260+ var len = this . byteLength >>> alignof < f32 > ( ) ;
1261+ index += select ( 0 , len , index >= 0 ) ;
1262+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
1263+ return load < f32 > ( this . dataStart + ( < usize > index << alignof < f32 > ( ) ) ) ;
1264+ }
1265+
11961266 includes ( searchElement : f32 , fromIndex : i32 = 0 ) : bool {
11971267 return INCLUDES < Float32Array , f32 > ( this , searchElement , fromIndex ) ;
11981268 }
@@ -1321,6 +1391,13 @@ export class Float64Array extends ArrayBufferView {
13211391 store < f64 > ( this . dataStart + ( < usize > index << alignof < f64 > ( ) ) , value ) ;
13221392 }
13231393
1394+ at ( index : i32 ) : f64 {
1395+ var len = this . byteLength >>> alignof < f64 > ( ) ;
1396+ index += select ( 0 , len , index >= 0 ) ;
1397+ if ( < u32 > index >= < u32 > len ) throw new RangeError ( E_INDEXOUTOFRANGE ) ;
1398+ return load < f64 > ( this . dataStart + ( < usize > index << alignof < f64 > ( ) ) ) ;
1399+ }
1400+
13241401 includes ( searchElement : f64 , fromIndex : i32 = 0 ) : bool {
13251402 return INCLUDES < Float64Array , f64 > ( this , searchElement , fromIndex ) ;
13261403 }
@@ -1737,7 +1814,11 @@ function REVERSE<TArray extends ArrayBufferView, T>(array: TArray): TArray {
17371814
17381815// @ts -ignore: decorator
17391816@inline
1740- function WRAP < TArray extends ArrayBufferView , T > ( buffer : ArrayBuffer , byteOffset : i32 = 0 , length : i32 = - 1 ) : TArray {
1817+ function WRAP < TArray extends ArrayBufferView , T > (
1818+ buffer : ArrayBuffer ,
1819+ byteOffset : i32 = 0 ,
1820+ length : i32 = - 1
1821+ ) : TArray {
17411822 var byteLength : i32 ;
17421823 var bufferByteLength = buffer . byteLength ;
17431824 const mask : u32 = sizeof < T > ( ) - 1 ;
@@ -1769,7 +1850,11 @@ function WRAP<TArray extends ArrayBufferView, T>(buffer: ArrayBuffer, byteOffset
17691850
17701851// @ts -ignore: decorator
17711852@inline
1772- function SET < TArray extends ArrayBufferView , T , UArray extends ArrayBufferView , U > ( target : TArray , source : UArray , offset : i32 = 0 ) : void {
1853+ function SET < TArray extends ArrayBufferView , T , UArray extends ArrayBufferView , U > (
1854+ target : TArray ,
1855+ source : UArray ,
1856+ offset : i32 = 0
1857+ ) : void {
17731858 // need to assert at compile time that U is not a reference or a function
17741859 if ( isReference < U > ( ) ) {
17751860 ERROR ( E_NOTIMPLEMENTED ) ;
@@ -1798,7 +1883,7 @@ function SET<TArray extends ArrayBufferView, T, UArray extends ArrayBufferView,
17981883 let value = load < U > ( sourceDataStart + ( < usize > i << alignof < U > ( ) ) ) ;
17991884 store < T > (
18001885 targetDataStart + ( < usize > i << alignof < T > ( ) ) ,
1801- isFinite < U > ( value ) ? < T > max < U > ( 0 , min < U > ( 255 , value ) ) : 0
1886+ isFinite < U > ( value ) ? < T > max < U > ( 0 , min < U > ( 255 , value ) ) : < T > 0
18021887 ) ;
18031888 } else {
18041889 let value = load < U > ( sourceDataStart + ( < usize > i << alignof < U > ( ) ) ) ;
0 commit comments