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.
- package/LICENSE +201 -201
- package/NOTICE +94 -94
- package/README.md +101 -114
- package/bin/asc.js +0 -0
- package/bin/asinit.js +6 -6
- package/dist/asc.generated.d.ts +10027 -0
- package/dist/asc.js +24474 -0
- package/dist/asc.js.map +7 -0
- package/dist/importmap.json +9 -0
- package/dist/toilscript.generated.d.ts +11242 -0
- package/dist/toilscript.js +337 -0
- package/dist/toilscript.js.map +7 -0
- package/dist/web.js +22 -0
- package/lib/binaryen.d.ts +2 -2
- package/lib/binaryen.js +2 -2
- package/package.json +115 -114
- package/std/README.md +6 -6
- package/std/assembly/array.ts +550 -550
- package/std/assembly/arraybuffer.ts +77 -77
- package/std/assembly/atomics.ts +127 -127
- package/std/assembly/bindings/asyncify.ts +16 -16
- package/std/assembly/bindings/dom.ts +291 -291
- package/std/assembly/bindings/node.ts +6 -6
- package/std/assembly/bitflags.ts +53 -53
- package/std/assembly/builtins.ts +2650 -2650
- package/std/assembly/byteslice.ts +177 -177
- package/std/assembly/compat.ts +2 -2
- package/std/assembly/console.ts +42 -42
- package/std/assembly/crypto.ts +9 -9
- package/std/assembly/dataview.ts +181 -181
- package/std/assembly/date.ts +375 -375
- package/std/assembly/diagnostics.ts +11 -11
- package/std/assembly/encoding.ts +151 -151
- package/std/assembly/endian.ts +45 -45
- package/std/assembly/error.ts +44 -44
- package/std/assembly/fixedarray.ts +173 -173
- package/std/assembly/fixedmap.ts +326 -326
- package/std/assembly/fixedset.ts +275 -275
- package/std/assembly/function.ts +42 -42
- package/std/assembly/index.d.ts +2892 -2891
- package/std/assembly/iterator.ts +35 -35
- package/std/assembly/map.ts +269 -269
- package/std/assembly/math.ts +3289 -3289
- package/std/assembly/memory.ts +123 -123
- package/std/assembly/number.ts +388 -388
- package/std/assembly/object.ts +36 -36
- package/std/assembly/performance.ts +9 -9
- package/std/assembly/pointer.ts +80 -80
- package/std/assembly/polyfills.ts +27 -27
- package/std/assembly/process.ts +50 -50
- package/std/assembly/reference.ts +48 -48
- package/std/assembly/regexp.ts +12 -12
- package/std/assembly/rt/README.md +83 -83
- package/std/assembly/rt/common.ts +81 -81
- package/std/assembly/rt/index-incremental.ts +2 -2
- package/std/assembly/rt/index-memory.ts +1 -1
- package/std/assembly/rt/index-minimal.ts +2 -2
- package/std/assembly/rt/index-stub.ts +1 -1
- package/std/assembly/rt/index.d.ts +37 -37
- package/std/assembly/rt/itcms.ts +419 -419
- package/std/assembly/rt/memory-runtime.ts +94 -94
- package/std/assembly/rt/rtrace.ts +15 -15
- package/std/assembly/rt/stub.ts +133 -133
- package/std/assembly/rt/tcms.ts +254 -254
- package/std/assembly/rt/tlsf.ts +592 -592
- package/std/assembly/rt.ts +90 -90
- package/std/assembly/set.ts +225 -225
- package/std/assembly/shared/feature.ts +68 -68
- package/std/assembly/shared/runtime.ts +13 -13
- package/std/assembly/shared/target.ts +11 -11
- package/std/assembly/shared/tsconfig.json +11 -11
- package/std/assembly/shared/typeinfo.ts +72 -72
- package/std/assembly/staticarray.ts +423 -423
- package/std/assembly/string.ts +850 -850
- package/std/assembly/symbol.ts +114 -114
- package/std/assembly/table.ts +16 -16
- package/std/assembly/toilscript.ts +16 -0
- package/std/assembly/tsconfig.json +6 -6
- package/std/assembly/typedarray.ts +1954 -1954
- package/std/assembly/uri.ts +17 -17
- package/std/assembly/util/bytes.ts +107 -107
- package/std/assembly/util/casemap.ts +497 -497
- package/std/assembly/util/error.ts +58 -58
- package/std/assembly/util/hash.ts +117 -117
- package/std/assembly/util/math.ts +1922 -1922
- package/std/assembly/util/memory.ts +290 -290
- package/std/assembly/util/number.ts +873 -873
- package/std/assembly/util/sort.ts +313 -313
- package/std/assembly/util/string.ts +1202 -1202
- package/std/assembly/util/uri.ts +275 -275
- package/std/assembly/vector.ts +4 -4
- package/std/assembly.json +16 -16
- package/std/portable/index.d.ts +461 -461
- package/std/portable/index.js +416 -416
- package/std/portable.json +11 -11
- package/std/types/assembly/index.d.ts +1 -1
- package/std/types/assembly/package.json +2 -2
- package/std/types/portable/index.d.ts +1 -1
- package/std/types/portable/package.json +2 -2
- package/tsconfig-base.json +13 -13
- package/util/README.md +23 -23
- package/util/browser/fs.js +1 -1
- package/util/browser/module.js +5 -5
- package/util/browser/path.js +520 -520
- package/util/browser/process.js +59 -59
- package/util/browser/url.js +23 -23
- package/util/cpu.d.ts +9 -9
- package/util/cpu.js +42 -42
- package/util/find.d.ts +6 -6
- package/util/find.js +20 -20
- package/util/node.d.ts +21 -21
- package/util/node.js +34 -34
- package/util/options.d.ts +70 -70
- package/util/options.js +262 -262
- package/util/terminal.d.ts +52 -52
- package/util/terminal.js +35 -35
- package/util/text.d.ts +26 -26
- package/util/text.js +114 -114
- package/util/tsconfig.json +9 -9
- package/util/web.d.ts +11 -11
- package/util/web.js +33 -33
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
// This file is shared with the compiler and must remain portable
|
|
2
|
-
|
|
3
|
-
/** Indicates specific features to activate. */
|
|
4
|
-
export const enum Feature {
|
|
5
|
-
/** No additional features. */
|
|
6
|
-
None = 0,
|
|
7
|
-
/** Sign extension operations. */
|
|
8
|
-
SignExtension = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops
|
|
9
|
-
/** Mutable global imports and exports. */
|
|
10
|
-
MutableGlobals = 1 << 1, // see: https://github.com/WebAssembly/mutable-global
|
|
11
|
-
/** Non-trapping float to integer operations. */
|
|
12
|
-
NontrappingF2I = 1 << 2, // see: https://github.com/WebAssembly/nontrapping-float-to-int-conversions
|
|
13
|
-
/** Bulk memory operations. */
|
|
14
|
-
BulkMemory = 1 << 3, // see: https://github.com/WebAssembly/bulk-memory-operations
|
|
15
|
-
/** SIMD types and operations. */
|
|
16
|
-
Simd = 1 << 4, // see: https://github.com/WebAssembly/simd
|
|
17
|
-
/** Threading and atomic operations. */
|
|
18
|
-
Threads = 1 << 5, // see: https://github.com/WebAssembly/threads
|
|
19
|
-
/** Exception handling operations. */
|
|
20
|
-
ExceptionHandling = 1 << 6, // see: https://github.com/WebAssembly/exception-handling
|
|
21
|
-
/** Tail call operations. */
|
|
22
|
-
TailCalls = 1 << 7, // see: https://github.com/WebAssembly/tail-call
|
|
23
|
-
/** Reference types. */
|
|
24
|
-
ReferenceTypes = 1 << 8, // see: https://github.com/WebAssembly/reference-types
|
|
25
|
-
/** Multi value types. */
|
|
26
|
-
MultiValue = 1 << 9, // see: https://github.com/WebAssembly/multi-value
|
|
27
|
-
/** Garbage collection. */
|
|
28
|
-
GC = 1 << 10, // see: https://github.com/WebAssembly/gc
|
|
29
|
-
/** Memory64. */
|
|
30
|
-
Memory64 = 1 << 11, // see: https://github.com/WebAssembly/memory64
|
|
31
|
-
/** Relaxed SIMD. */
|
|
32
|
-
RelaxedSimd = 1 << 12, // see: https://github.com/WebAssembly/relaxed-simd
|
|
33
|
-
/** Extended const expressions. */
|
|
34
|
-
ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const
|
|
35
|
-
/** Reference typed strings. */
|
|
36
|
-
Strings = 1 << 14, // see: https://github.com/WebAssembly/stringref
|
|
37
|
-
/** Shared-everything threads. */
|
|
38
|
-
SharedEverything = 1 << 15, // see: https://github.com/WebAssembly/shared-everything-threads
|
|
39
|
-
/** Closures. */
|
|
40
|
-
Closures = 1 << 16,
|
|
41
|
-
/** All features. */
|
|
42
|
-
All = (1 << 17) - 1
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Gets the name of the specified feature one would specify on the command line. */
|
|
46
|
-
export function featureToString(feature: Feature): string {
|
|
47
|
-
switch (feature) {
|
|
48
|
-
case Feature.SignExtension: return "sign-extension";
|
|
49
|
-
case Feature.MutableGlobals: return "mutable-globals";
|
|
50
|
-
case Feature.NontrappingF2I: return "nontrapping-f2i";
|
|
51
|
-
case Feature.BulkMemory: return "bulk-memory";
|
|
52
|
-
case Feature.Simd: return "simd";
|
|
53
|
-
case Feature.Threads: return "threads";
|
|
54
|
-
case Feature.ExceptionHandling: return "exception-handling";
|
|
55
|
-
case Feature.TailCalls: return "tail-calls";
|
|
56
|
-
case Feature.ReferenceTypes: return "reference-types";
|
|
57
|
-
case Feature.MultiValue: return "multi-value";
|
|
58
|
-
case Feature.GC: return "gc";
|
|
59
|
-
case Feature.Memory64: return "memory64";
|
|
60
|
-
case Feature.RelaxedSimd: return "relaxed-simd";
|
|
61
|
-
case Feature.ExtendedConst: return "extended-const";
|
|
62
|
-
case Feature.Strings: return "stringref";
|
|
63
|
-
case Feature.SharedEverything: return "shared-everything";
|
|
64
|
-
case Feature.Closures: return "closures";
|
|
65
|
-
}
|
|
66
|
-
assert(false);
|
|
67
|
-
return "";
|
|
68
|
-
}
|
|
1
|
+
// This file is shared with the compiler and must remain portable
|
|
2
|
+
|
|
3
|
+
/** Indicates specific features to activate. */
|
|
4
|
+
export const enum Feature {
|
|
5
|
+
/** No additional features. */
|
|
6
|
+
None = 0,
|
|
7
|
+
/** Sign extension operations. */
|
|
8
|
+
SignExtension = 1 << 0, // see: https://github.com/WebAssembly/sign-extension-ops
|
|
9
|
+
/** Mutable global imports and exports. */
|
|
10
|
+
MutableGlobals = 1 << 1, // see: https://github.com/WebAssembly/mutable-global
|
|
11
|
+
/** Non-trapping float to integer operations. */
|
|
12
|
+
NontrappingF2I = 1 << 2, // see: https://github.com/WebAssembly/nontrapping-float-to-int-conversions
|
|
13
|
+
/** Bulk memory operations. */
|
|
14
|
+
BulkMemory = 1 << 3, // see: https://github.com/WebAssembly/bulk-memory-operations
|
|
15
|
+
/** SIMD types and operations. */
|
|
16
|
+
Simd = 1 << 4, // see: https://github.com/WebAssembly/simd
|
|
17
|
+
/** Threading and atomic operations. */
|
|
18
|
+
Threads = 1 << 5, // see: https://github.com/WebAssembly/threads
|
|
19
|
+
/** Exception handling operations. */
|
|
20
|
+
ExceptionHandling = 1 << 6, // see: https://github.com/WebAssembly/exception-handling
|
|
21
|
+
/** Tail call operations. */
|
|
22
|
+
TailCalls = 1 << 7, // see: https://github.com/WebAssembly/tail-call
|
|
23
|
+
/** Reference types. */
|
|
24
|
+
ReferenceTypes = 1 << 8, // see: https://github.com/WebAssembly/reference-types
|
|
25
|
+
/** Multi value types. */
|
|
26
|
+
MultiValue = 1 << 9, // see: https://github.com/WebAssembly/multi-value
|
|
27
|
+
/** Garbage collection. */
|
|
28
|
+
GC = 1 << 10, // see: https://github.com/WebAssembly/gc
|
|
29
|
+
/** Memory64. */
|
|
30
|
+
Memory64 = 1 << 11, // see: https://github.com/WebAssembly/memory64
|
|
31
|
+
/** Relaxed SIMD. */
|
|
32
|
+
RelaxedSimd = 1 << 12, // see: https://github.com/WebAssembly/relaxed-simd
|
|
33
|
+
/** Extended const expressions. */
|
|
34
|
+
ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const
|
|
35
|
+
/** Reference typed strings. */
|
|
36
|
+
Strings = 1 << 14, // see: https://github.com/WebAssembly/stringref
|
|
37
|
+
/** Shared-everything threads. */
|
|
38
|
+
SharedEverything = 1 << 15, // see: https://github.com/WebAssembly/shared-everything-threads
|
|
39
|
+
/** Closures. */
|
|
40
|
+
Closures = 1 << 16,
|
|
41
|
+
/** All features. */
|
|
42
|
+
All = (1 << 17) - 1
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Gets the name of the specified feature one would specify on the command line. */
|
|
46
|
+
export function featureToString(feature: Feature): string {
|
|
47
|
+
switch (feature) {
|
|
48
|
+
case Feature.SignExtension: return "sign-extension";
|
|
49
|
+
case Feature.MutableGlobals: return "mutable-globals";
|
|
50
|
+
case Feature.NontrappingF2I: return "nontrapping-f2i";
|
|
51
|
+
case Feature.BulkMemory: return "bulk-memory";
|
|
52
|
+
case Feature.Simd: return "simd";
|
|
53
|
+
case Feature.Threads: return "threads";
|
|
54
|
+
case Feature.ExceptionHandling: return "exception-handling";
|
|
55
|
+
case Feature.TailCalls: return "tail-calls";
|
|
56
|
+
case Feature.ReferenceTypes: return "reference-types";
|
|
57
|
+
case Feature.MultiValue: return "multi-value";
|
|
58
|
+
case Feature.GC: return "gc";
|
|
59
|
+
case Feature.Memory64: return "memory64";
|
|
60
|
+
case Feature.RelaxedSimd: return "relaxed-simd";
|
|
61
|
+
case Feature.ExtendedConst: return "extended-const";
|
|
62
|
+
case Feature.Strings: return "stringref";
|
|
63
|
+
case Feature.SharedEverything: return "shared-everything";
|
|
64
|
+
case Feature.Closures: return "closures";
|
|
65
|
+
}
|
|
66
|
+
assert(false);
|
|
67
|
+
return "";
|
|
68
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
// This file is shared with the compiler and must remain portable
|
|
2
|
-
|
|
3
|
-
/** Runtime types. */
|
|
4
|
-
export enum Runtime {
|
|
5
|
-
/** Simple bump allocator without GC. */
|
|
6
|
-
Stub = 0,
|
|
7
|
-
/** Stop the world semi-automatic GC. */
|
|
8
|
-
Minimal = 1,
|
|
9
|
-
/** incremental GC. */
|
|
10
|
-
Incremental = 2,
|
|
11
|
-
/** Bare minimum allocator, no GC. */
|
|
12
|
-
Memory = 3,
|
|
13
|
-
}
|
|
1
|
+
// This file is shared with the compiler and must remain portable
|
|
2
|
+
|
|
3
|
+
/** Runtime types. */
|
|
4
|
+
export enum Runtime {
|
|
5
|
+
/** Simple bump allocator without GC. */
|
|
6
|
+
Stub = 0,
|
|
7
|
+
/** Stop the world semi-automatic GC. */
|
|
8
|
+
Minimal = 1,
|
|
9
|
+
/** incremental GC. */
|
|
10
|
+
Incremental = 2,
|
|
11
|
+
/** Bare minimum allocator, no GC. */
|
|
12
|
+
Memory = 3,
|
|
13
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// This file is shared with the compiler and must remain portable
|
|
2
|
-
|
|
3
|
-
/** Compilation target. */
|
|
4
|
-
export enum Target {
|
|
5
|
-
/** Portable. */
|
|
6
|
-
Js = 0,
|
|
7
|
-
/** WebAssembly with 32-bit pointers. */
|
|
8
|
-
Wasm32 = 1,
|
|
9
|
-
/** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */
|
|
10
|
-
Wasm64 = 2,
|
|
11
|
-
}
|
|
1
|
+
// This file is shared with the compiler and must remain portable
|
|
2
|
+
|
|
3
|
+
/** Compilation target. */
|
|
4
|
+
export enum Target {
|
|
5
|
+
/** Portable. */
|
|
6
|
+
Js = 0,
|
|
7
|
+
/** WebAssembly with 32-bit pointers. */
|
|
8
|
+
Wasm32 = 1,
|
|
9
|
+
/** WebAssembly with 64-bit pointers. Experimental and not supported by any runtime yet. */
|
|
10
|
+
Wasm64 = 2,
|
|
11
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../portable.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "../../../out",
|
|
5
|
-
"allowJs": false,
|
|
6
|
-
"sourceMap": true
|
|
7
|
-
},
|
|
8
|
-
"include": [
|
|
9
|
-
"./**/*.ts"
|
|
10
|
-
]
|
|
11
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../portable.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "../../../out",
|
|
5
|
+
"allowJs": false,
|
|
6
|
+
"sourceMap": true
|
|
7
|
+
},
|
|
8
|
+
"include": [
|
|
9
|
+
"./**/*.ts"
|
|
10
|
+
]
|
|
11
|
+
}
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
// This file is shared with the compiler and must remain portable
|
|
2
|
-
|
|
3
|
-
// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕
|
|
4
|
-
// 3 2 1
|
|
5
|
-
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits
|
|
6
|
-
// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base
|
|
7
|
-
// │ count │
|
|
8
|
-
// ╞═══════════════════════════════════════════════════════════════╡ ┐
|
|
9
|
-
// │ Typeinfo#flags [id=0] │ id < count
|
|
10
|
-
// ├───────────────────────────────────────────────────────────────┤
|
|
11
|
-
// │ ... │
|
|
12
|
-
|
|
13
|
-
/** Runtime type information data structure. */
|
|
14
|
-
@unmanaged
|
|
15
|
-
export class Typeinfo {
|
|
16
|
-
/** Flags describing the shape of this class type. */
|
|
17
|
-
flags: TypeinfoFlags = TypeinfoFlags.NONE;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** Runtime type information flags. */
|
|
21
|
-
export const enum TypeinfoFlags {
|
|
22
|
-
/** No specific flags. */
|
|
23
|
-
NONE = 0,
|
|
24
|
-
/** Type is an `ArrayBufferView`. */
|
|
25
|
-
ARRAYBUFFERVIEW = 1 << 0,
|
|
26
|
-
/** Type is an `Array`. */
|
|
27
|
-
ARRAY = 1 << 1,
|
|
28
|
-
/** Type is a `StaticArray`. */
|
|
29
|
-
STATICARRAY = 1 << 2,
|
|
30
|
-
/** Type is a `Set`. */
|
|
31
|
-
SET = 1 << 3,
|
|
32
|
-
/** Type is a `Map`. */
|
|
33
|
-
MAP = 1 << 4,
|
|
34
|
-
/** Type has no outgoing pointers. */
|
|
35
|
-
POINTERFREE = 1 << 5,
|
|
36
|
-
/** Value alignment of 1 byte. */
|
|
37
|
-
VALUE_ALIGN_0 = 1 << 6,
|
|
38
|
-
/** Value alignment of 2 bytes. */
|
|
39
|
-
VALUE_ALIGN_1 = 1 << 7,
|
|
40
|
-
/** Value alignment of 4 bytes. */
|
|
41
|
-
VALUE_ALIGN_2 = 1 << 8,
|
|
42
|
-
/** Value alignment of 8 bytes. */
|
|
43
|
-
VALUE_ALIGN_3 = 1 << 9,
|
|
44
|
-
/** Value alignment of 16 bytes. */
|
|
45
|
-
VALUE_ALIGN_4 = 1 << 10,
|
|
46
|
-
/** Value is a signed type. */
|
|
47
|
-
VALUE_SIGNED = 1 << 11,
|
|
48
|
-
/** Value is a float type. */
|
|
49
|
-
VALUE_FLOAT = 1 << 12,
|
|
50
|
-
/** Value type is nullable. */
|
|
51
|
-
VALUE_NULLABLE = 1 << 13,
|
|
52
|
-
/** Value type is managed. */
|
|
53
|
-
VALUE_MANAGED = 1 << 14,
|
|
54
|
-
/** Key alignment of 1 byte. */
|
|
55
|
-
KEY_ALIGN_0 = 1 << 15,
|
|
56
|
-
/** Key alignment of 2 bytes. */
|
|
57
|
-
KEY_ALIGN_1 = 1 << 16,
|
|
58
|
-
/** Key alignment of 4 bytes. */
|
|
59
|
-
KEY_ALIGN_2 = 1 << 17,
|
|
60
|
-
/** Key alignment of 8 bytes. */
|
|
61
|
-
KEY_ALIGN_3 = 1 << 18,
|
|
62
|
-
/** Key alignment of 16 bytes. */
|
|
63
|
-
KEY_ALIGN_4 = 1 << 19,
|
|
64
|
-
/** Key is a signed type. */
|
|
65
|
-
KEY_SIGNED = 1 << 20,
|
|
66
|
-
/** Key is a float type. */
|
|
67
|
-
KEY_FLOAT = 1 << 21,
|
|
68
|
-
/** Key type is nullable. */
|
|
69
|
-
KEY_NULLABLE = 1 << 22,
|
|
70
|
-
/** Key type is managed. */
|
|
71
|
-
KEY_MANAGED = 1 << 23
|
|
72
|
-
}
|
|
1
|
+
// This file is shared with the compiler and must remain portable
|
|
2
|
+
|
|
3
|
+
// ╒═══════════════════ Typeinfo interpretation ═══════════════════╕
|
|
4
|
+
// 3 2 1
|
|
5
|
+
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits
|
|
6
|
+
// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ __rtti_base
|
|
7
|
+
// │ count │
|
|
8
|
+
// ╞═══════════════════════════════════════════════════════════════╡ ┐
|
|
9
|
+
// │ Typeinfo#flags [id=0] │ id < count
|
|
10
|
+
// ├───────────────────────────────────────────────────────────────┤
|
|
11
|
+
// │ ... │
|
|
12
|
+
|
|
13
|
+
/** Runtime type information data structure. */
|
|
14
|
+
@unmanaged
|
|
15
|
+
export class Typeinfo {
|
|
16
|
+
/** Flags describing the shape of this class type. */
|
|
17
|
+
flags: TypeinfoFlags = TypeinfoFlags.NONE;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Runtime type information flags. */
|
|
21
|
+
export const enum TypeinfoFlags {
|
|
22
|
+
/** No specific flags. */
|
|
23
|
+
NONE = 0,
|
|
24
|
+
/** Type is an `ArrayBufferView`. */
|
|
25
|
+
ARRAYBUFFERVIEW = 1 << 0,
|
|
26
|
+
/** Type is an `Array`. */
|
|
27
|
+
ARRAY = 1 << 1,
|
|
28
|
+
/** Type is a `StaticArray`. */
|
|
29
|
+
STATICARRAY = 1 << 2,
|
|
30
|
+
/** Type is a `Set`. */
|
|
31
|
+
SET = 1 << 3,
|
|
32
|
+
/** Type is a `Map`. */
|
|
33
|
+
MAP = 1 << 4,
|
|
34
|
+
/** Type has no outgoing pointers. */
|
|
35
|
+
POINTERFREE = 1 << 5,
|
|
36
|
+
/** Value alignment of 1 byte. */
|
|
37
|
+
VALUE_ALIGN_0 = 1 << 6,
|
|
38
|
+
/** Value alignment of 2 bytes. */
|
|
39
|
+
VALUE_ALIGN_1 = 1 << 7,
|
|
40
|
+
/** Value alignment of 4 bytes. */
|
|
41
|
+
VALUE_ALIGN_2 = 1 << 8,
|
|
42
|
+
/** Value alignment of 8 bytes. */
|
|
43
|
+
VALUE_ALIGN_3 = 1 << 9,
|
|
44
|
+
/** Value alignment of 16 bytes. */
|
|
45
|
+
VALUE_ALIGN_4 = 1 << 10,
|
|
46
|
+
/** Value is a signed type. */
|
|
47
|
+
VALUE_SIGNED = 1 << 11,
|
|
48
|
+
/** Value is a float type. */
|
|
49
|
+
VALUE_FLOAT = 1 << 12,
|
|
50
|
+
/** Value type is nullable. */
|
|
51
|
+
VALUE_NULLABLE = 1 << 13,
|
|
52
|
+
/** Value type is managed. */
|
|
53
|
+
VALUE_MANAGED = 1 << 14,
|
|
54
|
+
/** Key alignment of 1 byte. */
|
|
55
|
+
KEY_ALIGN_0 = 1 << 15,
|
|
56
|
+
/** Key alignment of 2 bytes. */
|
|
57
|
+
KEY_ALIGN_1 = 1 << 16,
|
|
58
|
+
/** Key alignment of 4 bytes. */
|
|
59
|
+
KEY_ALIGN_2 = 1 << 17,
|
|
60
|
+
/** Key alignment of 8 bytes. */
|
|
61
|
+
KEY_ALIGN_3 = 1 << 18,
|
|
62
|
+
/** Key alignment of 16 bytes. */
|
|
63
|
+
KEY_ALIGN_4 = 1 << 19,
|
|
64
|
+
/** Key is a signed type. */
|
|
65
|
+
KEY_SIGNED = 1 << 20,
|
|
66
|
+
/** Key is a float type. */
|
|
67
|
+
KEY_FLOAT = 1 << 21,
|
|
68
|
+
/** Key type is nullable. */
|
|
69
|
+
KEY_NULLABLE = 1 << 22,
|
|
70
|
+
/** Key type is managed. */
|
|
71
|
+
KEY_MANAGED = 1 << 23
|
|
72
|
+
}
|