@@ -41,6 +41,13 @@ export class Int8Array extends ArrayBufferView {
41
41
store < i8 > ( this . dataStart + < usize > index , value ) ;
42
42
}
43
43
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
+
44
51
includes ( searchElement : i8 , fromIndex : i32 = 0 ) : bool {
45
52
return INCLUDES < Int8Array , i8 > ( this , searchElement , fromIndex ) ;
46
53
}
@@ -169,6 +176,13 @@ export class Uint8Array extends ArrayBufferView {
169
176
store < u8 > ( this . dataStart + < usize > index , value ) ;
170
177
}
171
178
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
+
172
186
includes ( searchElement : u8 , fromIndex : i32 = 0 ) : bool {
173
187
return INCLUDES < Uint8Array , u8 > ( this , searchElement , fromIndex ) ;
174
188
}
@@ -297,6 +311,13 @@ export class Uint8ClampedArray extends ArrayBufferView {
297
311
store < u8 > ( this . dataStart + < usize > index , ~ ( < i32 > value >> 31 ) & ( ( ( 255 - value ) >> 31 ) | value ) ) ;
298
312
}
299
313
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
+
300
321
includes ( searchElement : u8 , fromIndex : i32 = 0 ) : bool {
301
322
return INCLUDES < Uint8ClampedArray , u8 > ( this , searchElement , fromIndex ) ;
302
323
}
@@ -425,6 +446,13 @@ export class Int16Array extends ArrayBufferView {
425
446
store < i16 > ( this . dataStart + ( < usize > index << alignof < i16 > ( ) ) , value ) ;
426
447
}
427
448
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
+
428
456
includes ( searchElement : i16 , fromIndex : i32 = 0 ) : bool {
429
457
return INCLUDES < Int16Array , i16 > ( this , searchElement , fromIndex ) ;
430
458
}
@@ -553,6 +581,13 @@ export class Uint16Array extends ArrayBufferView {
553
581
store < u16 > ( this . dataStart + ( < usize > index << alignof < u16 > ( ) ) , value ) ;
554
582
}
555
583
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
+
556
591
includes ( searchElement : u16 , fromIndex : i32 = 0 ) : bool {
557
592
return INCLUDES < Uint16Array , u16 > ( this , searchElement , fromIndex ) ;
558
593
}
@@ -681,6 +716,13 @@ export class Int32Array extends ArrayBufferView {
681
716
store < i32 > ( this . dataStart + ( < usize > index << alignof < i32 > ( ) ) , value ) ;
682
717
}
683
718
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
+
684
726
includes ( searchElement : i32 , fromIndex : i32 = 0 ) : bool {
685
727
return INCLUDES < Int32Array , i32 > ( this , searchElement , fromIndex ) ;
686
728
}
@@ -809,6 +851,13 @@ export class Uint32Array extends ArrayBufferView {
809
851
store < u32 > ( this . dataStart + ( < usize > index << alignof < u32 > ( ) ) , value ) ;
810
852
}
811
853
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
+
812
861
includes ( searchElement : u32 , fromIndex : i32 = 0 ) : bool {
813
862
return INCLUDES < Uint32Array , u32 > ( this , searchElement , fromIndex ) ;
814
863
}
@@ -937,6 +986,13 @@ export class Int64Array extends ArrayBufferView {
937
986
store < i64 > ( this . dataStart + ( < usize > index << alignof < i64 > ( ) ) , value ) ;
938
987
}
939
988
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
+
940
996
includes ( searchElement : i64 , fromIndex : i32 = 0 ) : bool {
941
997
return INCLUDES < Int64Array , i64 > ( this , searchElement , fromIndex ) ;
942
998
}
@@ -1065,6 +1121,13 @@ export class Uint64Array extends ArrayBufferView {
1065
1121
store < u64 > ( this . dataStart + ( < usize > index << alignof < u64 > ( ) ) , value ) ;
1066
1122
}
1067
1123
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
+
1068
1131
includes ( searchElement : u64 , fromIndex : i32 = 0 ) : bool {
1069
1132
return INCLUDES < Uint64Array , u64 > ( this , searchElement , fromIndex ) ;
1070
1133
}
@@ -1193,6 +1256,13 @@ export class Float32Array extends ArrayBufferView {
1193
1256
store < f32 > ( this . dataStart + ( < usize > index << alignof < f32 > ( ) ) , value ) ;
1194
1257
}
1195
1258
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
+
1196
1266
includes ( searchElement : f32 , fromIndex : i32 = 0 ) : bool {
1197
1267
return INCLUDES < Float32Array , f32 > ( this , searchElement , fromIndex ) ;
1198
1268
}
@@ -1321,6 +1391,13 @@ export class Float64Array extends ArrayBufferView {
1321
1391
store < f64 > ( this . dataStart + ( < usize > index << alignof < f64 > ( ) ) , value ) ;
1322
1392
}
1323
1393
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
+
1324
1401
includes ( searchElement : f64 , fromIndex : i32 = 0 ) : bool {
1325
1402
return INCLUDES < Float64Array , f64 > ( this , searchElement , fromIndex ) ;
1326
1403
}
@@ -1737,7 +1814,11 @@ function REVERSE<TArray extends ArrayBufferView, T>(array: TArray): TArray {
1737
1814
1738
1815
// @ts -ignore: decorator
1739
1816
@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 {
1741
1822
var byteLength : i32 ;
1742
1823
var bufferByteLength = buffer . byteLength ;
1743
1824
const mask : u32 = sizeof < T > ( ) - 1 ;
@@ -1769,7 +1850,11 @@ function WRAP<TArray extends ArrayBufferView, T>(buffer: ArrayBuffer, byteOffset
1769
1850
1770
1851
// @ts -ignore: decorator
1771
1852
@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 {
1773
1858
// need to assert at compile time that U is not a reference or a function
1774
1859
if ( isReference < U > ( ) ) {
1775
1860
ERROR ( E_NOTIMPLEMENTED ) ;
@@ -1798,7 +1883,7 @@ function SET<TArray extends ArrayBufferView, T, UArray extends ArrayBufferView,
1798
1883
let value = load < U > ( sourceDataStart + ( < usize > i << alignof < U > ( ) ) ) ;
1799
1884
store < T > (
1800
1885
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
1802
1887
) ;
1803
1888
} else {
1804
1889
let value = load < U > ( sourceDataStart + ( < usize > i << alignof < U > ( ) ) ) ;
0 commit comments