1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
pub(crate) mod v1_0 {
use phf::phf_map;
// The indexes in this slice are off by one relative to the corresponding Ion symbol ID.
// This is because it does not contain symbol ID `0`-the symbol with unknown text.
pub static SYSTEM_SYMBOLS: &[&str] = &[
// <unknown text> $0
"$ion", // $1
"$ion_1_0", // $2
"$ion_symbol_table", // $3
"name", // $4
"version", // $5
"imports", // $6
"symbols", // $7
"max_id", // $8
"$ion_shared_symbol_table", // $9
];
#[allow(dead_code)]
pub(crate) mod system_symbol_ids {
pub const ION: usize = 1;
pub const ION_1_0: usize = 2;
pub const ION_SYMBOL_TABLE: usize = 3;
pub const NAME: usize = 4;
pub const VERSION: usize = 5;
pub const IMPORTS: usize = 6;
pub const SYMBOLS: usize = 7;
pub const MAX_ID: usize = 8;
pub const ION_SHARED_SYMBOL_TABLE: usize = 9;
}
/// A static, read-only map of text to Ion v1.0 system symbol addresses.
/// Because the set of string keys is known at compile time, this map is able to use a
/// perfect hashing function (PHF) to optimize lookup operations for those keys.
pub(crate) static SYSTEM_SYMBOL_TEXT_TO_ID: phf::Map<&str, usize> = phf_map! {
"$ion" => 1,
"$ion_1_0" => 2,
"$ion_symbol_table" => 3,
"name" => 4,
"version" => 5,
"imports" => 6,
"symbols" => 7,
"max_id" => 8,
"$ion_shared_symbol_table" => 9,
};
}
pub(crate) mod v1_1 {
use phf::phf_map;
pub mod constants {
pub const DEFAULT_MODULE_NAME: &str = "_";
}
pub static SYSTEM_SYMBOLS: &[&str] = &[
// <unknown text> $0
"$ion", // $1
"$ion_1_0", // $2
"$ion_symbol_table", // $3
"name", // $4
"version", // $5
"imports", // $6
"symbols", // $7
"max_id", // $8
"$ion_shared_symbol_table", // $9
"encoding", // $10
"$ion_literal", // $11
"$ion_shared_module", // $12
"macro", // $13
"macro_table", // $14
"symbol_table", // $15
"module", // $16
"export", // $17
"import", // $18
"flex_symbol", // $19
"flex_int", // $20
"flex_uint", // $21
"uint8", // $22
"uint16", // $23
"uint32", // $24
"uint64", // $25
"int8", // $26
"int16", // $27
"int32", // $28
"int64", // $29
"float16", // $30
"float32", // $31
"float64", // $32
"", // $33 (empty text)
"for", // $34
"literal", // $35
"if_none", // $36
"if_some", // $37
"if_single", // $38
"if_multi", // $39
"none", // $40
"values", // $41
"default", // $42
"meta", // $43
"repeat", // $44
"flatten", // $45
"delta", // $46
"sum", // $47
"annotate", // $48
"make_string", // $49
"make_symbol", // $50
"make_decimal", // $51
"make_timestamp", // $52
"make_blob", // $53
"make_list", // $54
"make_sexp", // $55
"make_field", // $56
"make_struct", // $57
"parse_ion", // $58
"set_symbols", // $59
"add_symbols", // $60
"set_macros", // $61
"add_macros", // $62
"use", // $63
];
#[allow(dead_code)]
pub mod system_symbols {
use crate::raw_symbol_ref::SystemSymbol_1_1;
pub const ION: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(1);
pub const ENCODING: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(10);
pub const MACRO_TABLE: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(14);
pub const SYMBOL_TABLE: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(15);
pub const MODULE: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(16);
pub const EMPTY_TEXT: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(33);
pub const ADD_SYMBOLS: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(60);
pub const ADD_MACROS: SystemSymbol_1_1 = SystemSymbol_1_1::new_unchecked(62);
}
/// A static, read-only map of text to Ion v1.1 system symbol addresses.
/// Because the set of string keys is known at compile time, this map is able to use a
/// perfect hashing function (PHF) to optimize lookup operations for those keys.
pub(crate) static SYSTEM_SYMBOL_TEXT_TO_ID: phf::Map<&str, usize> = phf_map! {
"$ion" => 1,
"$ion_1_0" => 2,
"$ion_symbol_table" => 3,
"name" => 4,
"version" => 5,
"imports" => 6,
"symbols" => 7,
"max_id" => 8,
"$ion_shared_symbol_table" => 9,
"encoding" => 10,
"$ion_literal" => 11,
"$ion_shared_module" => 12,
"macro" => 13,
"macro_table" => 14,
"symbol_table" => 15,
"module" => 16,
"export" => 17,
"import" => 18,
"flex_symbol" => 19,
"flex_int" => 20,
"flex_uint" => 21,
"uint8" => 22,
"uint16" => 23,
"uint32" => 24,
"uint64" => 25,
"int8" => 26,
"int16" => 27,
"int32" => 28,
"int64" => 29,
"float16" => 30,
"float32" => 31,
"float64" => 32,
"" => 33,
"for" => 34,
"literal" => 35,
"if_none" => 36,
"if_some" => 37,
"if_single" => 38,
"if_multi" => 39,
"none" => 40,
"values" => 41,
"default" => 42,
"meta" => 43,
"repeat" => 44,
"flatten" => 45,
"delta" => 46,
"sum" => 47,
"annotate" => 48,
"make_string" => 49,
"make_symbol" => 50,
"make_decimal" => 51,
"make_timestamp" => 52,
"make_blob" => 53,
"make_list" => 54,
"make_sexp" => 55,
"make_field" => 56,
"make_struct" => 57,
"parse_ion" => 58,
"set_symbols" => 59,
"add_symbols" => 60,
"set_macros" => 61,
"add_macros" => 62,
"use" => 63,
};
}