toilscript 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/LICENSE +201 -201
  2. package/NOTICE +94 -94
  3. package/README.md +101 -114
  4. package/bin/asc.js +0 -0
  5. package/bin/asinit.js +6 -6
  6. package/dist/asc.generated.d.ts +10027 -0
  7. package/dist/asc.js +24474 -0
  8. package/dist/asc.js.map +7 -0
  9. package/dist/importmap.json +9 -0
  10. package/dist/toilscript.generated.d.ts +11242 -0
  11. package/dist/toilscript.js +337 -0
  12. package/dist/toilscript.js.map +7 -0
  13. package/dist/web.js +22 -0
  14. package/lib/binaryen.d.ts +2 -2
  15. package/lib/binaryen.js +2 -2
  16. package/package.json +115 -114
  17. package/std/README.md +6 -6
  18. package/std/assembly/array.ts +550 -550
  19. package/std/assembly/arraybuffer.ts +77 -77
  20. package/std/assembly/atomics.ts +127 -127
  21. package/std/assembly/bindings/asyncify.ts +16 -16
  22. package/std/assembly/bindings/dom.ts +291 -291
  23. package/std/assembly/bindings/node.ts +6 -6
  24. package/std/assembly/bitflags.ts +53 -53
  25. package/std/assembly/builtins.ts +2650 -2650
  26. package/std/assembly/byteslice.ts +177 -177
  27. package/std/assembly/compat.ts +2 -2
  28. package/std/assembly/console.ts +42 -42
  29. package/std/assembly/crypto.ts +9 -9
  30. package/std/assembly/dataview.ts +181 -181
  31. package/std/assembly/date.ts +375 -375
  32. package/std/assembly/diagnostics.ts +11 -11
  33. package/std/assembly/encoding.ts +151 -151
  34. package/std/assembly/endian.ts +45 -45
  35. package/std/assembly/error.ts +44 -44
  36. package/std/assembly/fixedarray.ts +173 -173
  37. package/std/assembly/fixedmap.ts +326 -326
  38. package/std/assembly/fixedset.ts +275 -275
  39. package/std/assembly/function.ts +42 -42
  40. package/std/assembly/index.d.ts +2892 -2891
  41. package/std/assembly/iterator.ts +35 -35
  42. package/std/assembly/map.ts +269 -269
  43. package/std/assembly/math.ts +3289 -3289
  44. package/std/assembly/memory.ts +123 -123
  45. package/std/assembly/number.ts +388 -388
  46. package/std/assembly/object.ts +36 -36
  47. package/std/assembly/performance.ts +9 -9
  48. package/std/assembly/pointer.ts +80 -80
  49. package/std/assembly/polyfills.ts +27 -27
  50. package/std/assembly/process.ts +50 -50
  51. package/std/assembly/reference.ts +48 -48
  52. package/std/assembly/regexp.ts +12 -12
  53. package/std/assembly/rt/README.md +83 -83
  54. package/std/assembly/rt/common.ts +81 -81
  55. package/std/assembly/rt/index-incremental.ts +2 -2
  56. package/std/assembly/rt/index-memory.ts +1 -1
  57. package/std/assembly/rt/index-minimal.ts +2 -2
  58. package/std/assembly/rt/index-stub.ts +1 -1
  59. package/std/assembly/rt/index.d.ts +37 -37
  60. package/std/assembly/rt/itcms.ts +419 -419
  61. package/std/assembly/rt/memory-runtime.ts +94 -94
  62. package/std/assembly/rt/rtrace.ts +15 -15
  63. package/std/assembly/rt/stub.ts +133 -133
  64. package/std/assembly/rt/tcms.ts +254 -254
  65. package/std/assembly/rt/tlsf.ts +592 -592
  66. package/std/assembly/rt.ts +90 -90
  67. package/std/assembly/set.ts +225 -225
  68. package/std/assembly/shared/feature.ts +68 -68
  69. package/std/assembly/shared/runtime.ts +13 -13
  70. package/std/assembly/shared/target.ts +11 -11
  71. package/std/assembly/shared/tsconfig.json +11 -11
  72. package/std/assembly/shared/typeinfo.ts +72 -72
  73. package/std/assembly/staticarray.ts +423 -423
  74. package/std/assembly/string.ts +850 -850
  75. package/std/assembly/symbol.ts +114 -114
  76. package/std/assembly/table.ts +16 -16
  77. package/std/assembly/toilscript.ts +16 -0
  78. package/std/assembly/tsconfig.json +6 -6
  79. package/std/assembly/typedarray.ts +1954 -1954
  80. package/std/assembly/uri.ts +17 -17
  81. package/std/assembly/util/bytes.ts +107 -107
  82. package/std/assembly/util/casemap.ts +497 -497
  83. package/std/assembly/util/error.ts +58 -58
  84. package/std/assembly/util/hash.ts +117 -117
  85. package/std/assembly/util/math.ts +1922 -1922
  86. package/std/assembly/util/memory.ts +290 -290
  87. package/std/assembly/util/number.ts +873 -873
  88. package/std/assembly/util/sort.ts +313 -313
  89. package/std/assembly/util/string.ts +1202 -1202
  90. package/std/assembly/util/uri.ts +275 -275
  91. package/std/assembly/vector.ts +4 -4
  92. package/std/assembly.json +16 -16
  93. package/std/portable/index.d.ts +461 -461
  94. package/std/portable/index.js +416 -416
  95. package/std/portable.json +11 -11
  96. package/std/types/assembly/index.d.ts +1 -1
  97. package/std/types/assembly/package.json +2 -2
  98. package/std/types/portable/index.d.ts +1 -1
  99. package/std/types/portable/package.json +2 -2
  100. package/tsconfig-base.json +13 -13
  101. package/util/README.md +23 -23
  102. package/util/browser/fs.js +1 -1
  103. package/util/browser/module.js +5 -5
  104. package/util/browser/path.js +520 -520
  105. package/util/browser/process.js +59 -59
  106. package/util/browser/url.js +23 -23
  107. package/util/cpu.d.ts +9 -9
  108. package/util/cpu.js +42 -42
  109. package/util/find.d.ts +6 -6
  110. package/util/find.js +20 -20
  111. package/util/node.d.ts +21 -21
  112. package/util/node.js +34 -34
  113. package/util/options.d.ts +70 -70
  114. package/util/options.js +262 -262
  115. package/util/terminal.d.ts +52 -52
  116. package/util/terminal.js +35 -35
  117. package/util/text.d.ts +26 -26
  118. package/util/text.js +114 -114
  119. package/util/tsconfig.json +9 -9
  120. package/util/web.d.ts +11 -11
  121. package/util/web.js +33 -33
@@ -1,181 +1,181 @@
1
- import { BLOCK_MAXSIZE } from "./rt/common";
2
- import { ArrayBuffer } from "./arraybuffer";
3
- import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";
4
-
5
- // TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte
6
-
7
- export class DataView {
8
-
9
- readonly buffer: ArrayBuffer;
10
- @unsafe readonly dataStart: usize;
11
- readonly byteLength: i32;
12
-
13
- get byteOffset(): i32 {
14
- return <i32>(this.dataStart - changetype<usize>(this.buffer));
15
- }
16
-
17
- constructor(
18
- buffer: ArrayBuffer,
19
- byteOffset: i32 = 0,
20
- byteLength: i32 = buffer.byteLength
21
- ) {
22
- if (
23
- i32(<u32>byteLength > <u32>BLOCK_MAXSIZE) |
24
- i32(<u32>byteOffset + byteLength > <u32>buffer.byteLength)
25
- ) throw new RangeError(E_INVALIDLENGTH);
26
- this.buffer = buffer; // links
27
- let dataStart = changetype<usize>(buffer) + <usize>byteOffset;
28
- this.dataStart = dataStart;
29
- this.byteLength = byteLength;
30
- }
31
-
32
- getFloat32(byteOffset: i32, littleEndian: bool = false): f32 {
33
- if (
34
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
35
- ) throw new RangeError(E_INDEXOUTOFRANGE);
36
- return littleEndian
37
- ? load<f32>(this.dataStart + <usize>byteOffset)
38
- : reinterpret<f32>(bswap<u32>(load<u32>(this.dataStart + <usize>byteOffset)));
39
- }
40
-
41
- getFloat64(byteOffset: i32, littleEndian: bool = false): f64 {
42
- if (
43
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
44
- ) throw new RangeError(E_INDEXOUTOFRANGE);
45
- return littleEndian
46
- ? load<f64>(this.dataStart + <usize>byteOffset)
47
- : reinterpret<f64>(bswap<u64>(load<u64>(this.dataStart + <usize>byteOffset)));
48
- }
49
-
50
- getInt8(byteOffset: i32): i8 {
51
- if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
52
- return load<i8>(this.dataStart + <usize>byteOffset);
53
- }
54
-
55
- getInt16(byteOffset: i32, littleEndian: bool = false): i16 {
56
- if (
57
- (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
58
- ) throw new RangeError(E_INDEXOUTOFRANGE);
59
- let result: i16 = load<i16>(this.dataStart + <usize>byteOffset);
60
- return littleEndian ? result : bswap<u16>(result);
61
- }
62
-
63
- getInt32(byteOffset: i32, littleEndian: bool = false): i32 {
64
- if (
65
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
66
- ) throw new RangeError(E_INDEXOUTOFRANGE);
67
- let result: i32 = load<i32>(this.dataStart + <usize>byteOffset);
68
- return littleEndian ? result : bswap<u32>(result);
69
- }
70
-
71
- getUint8(byteOffset: i32): u8 {
72
- if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
73
- return load<u8>(this.dataStart + <usize>byteOffset);
74
- }
75
-
76
- getUint16(byteOffset: i32, littleEndian: bool = false): u16 {
77
- if (
78
- (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
79
- ) throw new RangeError(E_INDEXOUTOFRANGE);
80
- let result: u16 = load<u16>(this.dataStart + <usize>byteOffset);
81
- return littleEndian ? result : bswap<u16>(result);
82
- }
83
-
84
- getUint32(byteOffset: i32, littleEndian: bool = false): u32 {
85
- if (
86
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
87
- ) throw new RangeError(E_INDEXOUTOFRANGE);
88
- let result: u32 = load<u32>(this.dataStart + <usize>byteOffset);
89
- return littleEndian ? result : bswap<u32>(result);
90
- }
91
-
92
- setFloat32(byteOffset: i32, value: f32, littleEndian: bool = false): void {
93
- if (
94
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
95
- ) throw new RangeError(E_INDEXOUTOFRANGE);
96
- if (littleEndian) store<f32>(this.dataStart + <usize>byteOffset, value);
97
- else store<u32>(this.dataStart + <usize>byteOffset, bswap<u32>(reinterpret<u32>(value)));
98
- }
99
-
100
- setFloat64(byteOffset: i32, value: f64, littleEndian: bool = false): void {
101
- if (
102
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
103
- ) throw new RangeError(E_INDEXOUTOFRANGE);
104
- if (littleEndian) store<f64>(this.dataStart + <usize>byteOffset, value);
105
- else store<u64>(this.dataStart + <usize>byteOffset, bswap<u64>(reinterpret<u64>(value)));
106
- }
107
-
108
- setInt8(byteOffset: i32, value: i8): void {
109
- if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
110
- store<i8>(this.dataStart + <usize>byteOffset, value);
111
- }
112
-
113
- setInt16(byteOffset: i32, value: i16, littleEndian: bool = false): void {
114
- if (
115
- (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
116
- ) throw new RangeError(E_INDEXOUTOFRANGE);
117
- store<i16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
118
- }
119
-
120
- setInt32(byteOffset: i32, value: i32, littleEndian: bool = false): void {
121
- if (
122
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
123
- ) throw new RangeError(E_INDEXOUTOFRANGE);
124
- store<i32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
125
- }
126
-
127
- setUint8(byteOffset: i32, value: u8): void {
128
- if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
129
- store<u8>(this.dataStart + <usize>byteOffset, value);
130
- }
131
-
132
- setUint16(byteOffset: i32, value: u16, littleEndian: bool = false): void {
133
- if (
134
- (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
135
- ) throw new RangeError(E_INDEXOUTOFRANGE);
136
- store<u16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
137
- }
138
-
139
- setUint32(byteOffset: i32, value: u32, littleEndian: bool = false): void {
140
- if (
141
- (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
142
- ) throw new RangeError(E_INDEXOUTOFRANGE);
143
- store<u32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
144
- }
145
-
146
- // Non-standard additions that make sense in WebAssembly, but won't work in JS:
147
-
148
- getInt64(byteOffset: i32, littleEndian: bool = false): i64 {
149
- if (
150
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
151
- ) throw new RangeError(E_INDEXOUTOFRANGE);
152
- let result: i64 = load<i64>(this.dataStart + <usize>byteOffset);
153
- return littleEndian ? result : bswap<u64>(result);
154
- }
155
-
156
- getUint64(byteOffset: i32, littleEndian: bool = false): u64 {
157
- if (
158
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
159
- ) throw new RangeError(E_INDEXOUTOFRANGE);
160
- let result = load<u64>(this.dataStart + <usize>byteOffset);
161
- return littleEndian ? result : bswap<u64>(result);
162
- }
163
-
164
- setInt64(byteOffset: i32, value: i64, littleEndian: bool = false): void {
165
- if (
166
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
167
- ) throw new RangeError(E_INDEXOUTOFRANGE);
168
- store<i64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
169
- }
170
-
171
- setUint64(byteOffset: i32, value: u64, littleEndian: bool = false): void {
172
- if (
173
- (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
174
- ) throw new RangeError(E_INDEXOUTOFRANGE);
175
- store<u64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
176
- }
177
-
178
- toString(): string {
179
- return "[object DataView]";
180
- }
181
- }
1
+ import { BLOCK_MAXSIZE } from "./rt/common";
2
+ import { ArrayBuffer } from "./arraybuffer";
3
+ import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";
4
+
5
+ // TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte
6
+
7
+ export class DataView {
8
+
9
+ readonly buffer: ArrayBuffer;
10
+ @unsafe readonly dataStart: usize;
11
+ readonly byteLength: i32;
12
+
13
+ get byteOffset(): i32 {
14
+ return <i32>(this.dataStart - changetype<usize>(this.buffer));
15
+ }
16
+
17
+ constructor(
18
+ buffer: ArrayBuffer,
19
+ byteOffset: i32 = 0,
20
+ byteLength: i32 = buffer.byteLength
21
+ ) {
22
+ if (
23
+ i32(<u32>byteLength > <u32>BLOCK_MAXSIZE) |
24
+ i32(<u32>byteOffset + byteLength > <u32>buffer.byteLength)
25
+ ) throw new RangeError(E_INVALIDLENGTH);
26
+ this.buffer = buffer; // links
27
+ let dataStart = changetype<usize>(buffer) + <usize>byteOffset;
28
+ this.dataStart = dataStart;
29
+ this.byteLength = byteLength;
30
+ }
31
+
32
+ getFloat32(byteOffset: i32, littleEndian: bool = false): f32 {
33
+ if (
34
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
35
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
36
+ return littleEndian
37
+ ? load<f32>(this.dataStart + <usize>byteOffset)
38
+ : reinterpret<f32>(bswap<u32>(load<u32>(this.dataStart + <usize>byteOffset)));
39
+ }
40
+
41
+ getFloat64(byteOffset: i32, littleEndian: bool = false): f64 {
42
+ if (
43
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
44
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
45
+ return littleEndian
46
+ ? load<f64>(this.dataStart + <usize>byteOffset)
47
+ : reinterpret<f64>(bswap<u64>(load<u64>(this.dataStart + <usize>byteOffset)));
48
+ }
49
+
50
+ getInt8(byteOffset: i32): i8 {
51
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
52
+ return load<i8>(this.dataStart + <usize>byteOffset);
53
+ }
54
+
55
+ getInt16(byteOffset: i32, littleEndian: bool = false): i16 {
56
+ if (
57
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
58
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
59
+ let result: i16 = load<i16>(this.dataStart + <usize>byteOffset);
60
+ return littleEndian ? result : bswap<u16>(result);
61
+ }
62
+
63
+ getInt32(byteOffset: i32, littleEndian: bool = false): i32 {
64
+ if (
65
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
66
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
67
+ let result: i32 = load<i32>(this.dataStart + <usize>byteOffset);
68
+ return littleEndian ? result : bswap<u32>(result);
69
+ }
70
+
71
+ getUint8(byteOffset: i32): u8 {
72
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
73
+ return load<u8>(this.dataStart + <usize>byteOffset);
74
+ }
75
+
76
+ getUint16(byteOffset: i32, littleEndian: bool = false): u16 {
77
+ if (
78
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
79
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
80
+ let result: u16 = load<u16>(this.dataStart + <usize>byteOffset);
81
+ return littleEndian ? result : bswap<u16>(result);
82
+ }
83
+
84
+ getUint32(byteOffset: i32, littleEndian: bool = false): u32 {
85
+ if (
86
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
87
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
88
+ let result: u32 = load<u32>(this.dataStart + <usize>byteOffset);
89
+ return littleEndian ? result : bswap<u32>(result);
90
+ }
91
+
92
+ setFloat32(byteOffset: i32, value: f32, littleEndian: bool = false): void {
93
+ if (
94
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
95
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
96
+ if (littleEndian) store<f32>(this.dataStart + <usize>byteOffset, value);
97
+ else store<u32>(this.dataStart + <usize>byteOffset, bswap<u32>(reinterpret<u32>(value)));
98
+ }
99
+
100
+ setFloat64(byteOffset: i32, value: f64, littleEndian: bool = false): void {
101
+ if (
102
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
103
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
104
+ if (littleEndian) store<f64>(this.dataStart + <usize>byteOffset, value);
105
+ else store<u64>(this.dataStart + <usize>byteOffset, bswap<u64>(reinterpret<u64>(value)));
106
+ }
107
+
108
+ setInt8(byteOffset: i32, value: i8): void {
109
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
110
+ store<i8>(this.dataStart + <usize>byteOffset, value);
111
+ }
112
+
113
+ setInt16(byteOffset: i32, value: i16, littleEndian: bool = false): void {
114
+ if (
115
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
116
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
117
+ store<i16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
118
+ }
119
+
120
+ setInt32(byteOffset: i32, value: i32, littleEndian: bool = false): void {
121
+ if (
122
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
123
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
124
+ store<i32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
125
+ }
126
+
127
+ setUint8(byteOffset: i32, value: u8): void {
128
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
129
+ store<u8>(this.dataStart + <usize>byteOffset, value);
130
+ }
131
+
132
+ setUint16(byteOffset: i32, value: u16, littleEndian: bool = false): void {
133
+ if (
134
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
135
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
136
+ store<u16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
137
+ }
138
+
139
+ setUint32(byteOffset: i32, value: u32, littleEndian: bool = false): void {
140
+ if (
141
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
142
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
143
+ store<u32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
144
+ }
145
+
146
+ // Non-standard additions that make sense in WebAssembly, but won't work in JS:
147
+
148
+ getInt64(byteOffset: i32, littleEndian: bool = false): i64 {
149
+ if (
150
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
151
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
152
+ let result: i64 = load<i64>(this.dataStart + <usize>byteOffset);
153
+ return littleEndian ? result : bswap<u64>(result);
154
+ }
155
+
156
+ getUint64(byteOffset: i32, littleEndian: bool = false): u64 {
157
+ if (
158
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
159
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
160
+ let result = load<u64>(this.dataStart + <usize>byteOffset);
161
+ return littleEndian ? result : bswap<u64>(result);
162
+ }
163
+
164
+ setInt64(byteOffset: i32, value: i64, littleEndian: bool = false): void {
165
+ if (
166
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
167
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
168
+ store<i64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
169
+ }
170
+
171
+ setUint64(byteOffset: i32, value: u64, littleEndian: bool = false): void {
172
+ if (
173
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
174
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
175
+ store<u64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
176
+ }
177
+
178
+ toString(): string {
179
+ return "[object DataView]";
180
+ }
181
+ }