mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-27 16:02:16 +00:00
63 lines
2.7 KiB
TypeScript
63 lines
2.7 KiB
TypeScript
// ╒═════════════════════ RTTI interpretation ═════════════════════╕
|
|
// 3 2 1
|
|
// 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
|
|
// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ ◄─ RTTI_BASE
|
|
// │ count │
|
|
// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
|
|
// │ reserved │
|
|
// ╞═══════════════════════════════════════════════════════════════╡ ┐
|
|
// │ RTTIData#flags [id=1] │ id=1..count
|
|
// ├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
|
|
// │ RTTIData#base [id=1] │
|
|
// ├───────────────────────────────────────────────────────────────┤
|
|
// │ ... │
|
|
|
|
/** Runtime type information data structure. */
|
|
@unmanaged
|
|
export class RTTIData {
|
|
flags: RTTIFlags;
|
|
base: u32;
|
|
}
|
|
|
|
/** Runtime type information flags. */
|
|
export const enum RTTIFlags {
|
|
/** No specific flags. */
|
|
NONE = 0,
|
|
/** Type is an `Array`. */
|
|
ARRAY = 1 << 0,
|
|
/** Type is a `Set`. */
|
|
SET = 1 << 1,
|
|
/** Type is a `Map`. */
|
|
MAP = 1 << 2,
|
|
/** Type is inherently acyclic. */
|
|
ACYCLIC = 1 << 3,
|
|
/** Value alignment of 1 byte. */
|
|
VALUE_ALIGN_0 = 1 << 4,
|
|
/** Value alignment of 2 bytes. */
|
|
VALUE_ALIGN_1 = 1 << 5,
|
|
/** Value alignment of 4 bytes. */
|
|
VALUE_ALIGN_2 = 1 << 6,
|
|
/** Value alignment of 8 bytes. */
|
|
VALUE_ALIGN_3 = 1 << 7,
|
|
/** Value alignment of 16 bytes. */
|
|
VALUE_ALIGN_4 = 1 << 8,
|
|
/** Value type is nullable. */
|
|
VALUE_NULLABLE = 1 << 9,
|
|
/** Value type is managed. */
|
|
VALUE_MANAGED = 1 << 10,
|
|
/** Key alignment of 1 byte. */
|
|
KEY_ALIGN_0 = 1 << 11,
|
|
/** Key alignment of 2 bytes. */
|
|
KEY_ALIGN_1 = 1 << 12,
|
|
/** Key alignment of 4 bytes. */
|
|
KEY_ALIGN_2 = 1 << 13,
|
|
/** Key alignment of 8 bytes. */
|
|
KEY_ALIGN_3 = 1 << 14,
|
|
/** Key alignment of 16 bytes. */
|
|
KEY_ALIGN_4 = 1 << 15,
|
|
/** Key type is nullable. */
|
|
KEY_NULLABLE = 1 << 16,
|
|
/** Key type is managed. */
|
|
KEY_MANAGED = 1 << 17
|
|
}
|