LispBM
lbm_defines.h
Go to the documentation of this file.
1 /*
2  Copyright 2022, 2024, 2025 Joel Svensson svenssonjoel@yahoo.se
3  2025 Rasmus Söderhielm rasmus.soderhielm@gmail.com
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 #ifndef LBM_DEFINES_H_
20 #define LBM_DEFINES_H_
21 
22 
23 /* ------------------------------------------------------------
24  Types
25  ------------------------------------------------------------ */
26 
27 #ifndef LBM64
28 
29 #define LBM_ADDRESS_SHIFT 2
30 #define LBM_VAL_SHIFT 4
31 #define LBM_ENC_1 0x10
32 
33 #define LBM_PTR_BIT 0x00000001u
34 #define LBM_PTR_VAL_MASK 0x03FFFFFCu
35 #define LBM_PTR_TYPE_MASK 0xFC000000u
36 // TODO: Recall why PTR_NULL is given the value (0x03FFFFFCu >> 2)
37 #define LBM_PTR_NULL (0x03FFFFFCu >> 2)
38 
39 // The address is an index into the const heap.
40 #define LBM_PTR_TO_CONSTANT_BIT 0x04000000u
41 #define LBM_PTR_TO_CONSTANT_MASK ~LBM_PTR_TO_CONSTANT_BIT
42 #define LBM_PTR_TO_CONSTANT_SHIFT 26
43 
44 #define LBM_POINTER_TYPE_FIRST 0x10000000u // 00010000000000000000000000000000
45 #define LBM_TYPE_CONS 0x10000000u // 00010000000000000000000000000000
46 #define LBM_TYPE_CONS_CONST 0x14000000u // 00010100000000000000000000000000
47 #define LBM_NON_CONS_POINTER_TYPE_FIRST 0x20000000u // 00100000000000000000000000000000
48 #define LBM_TYPE_I32 0x28000000u // 00101000000000000000000000000000
49 #define LBM_TYPE_U32 0x38000000u // 00111000000000000000000000000000
50 #define LBM_TYPE_I64 0x48000000u // 01001000000000000000000000000000
51 #define LBM_TYPE_U64 0x58000000u // 01011000000000000000000000000000
52 #define LBM_TYPE_FLOAT 0x68000000u // 01101000000000000000000000000000
53 #define LBM_TYPE_DOUBLE 0x78000000u // 01111000000000000000000000000000
54 #define LBM_TYPE_ARRAY 0x80000000u // 10000000000000000000000000000000 ByteArray
55 #define LBM_TYPE_ARRAY_CONST 0x84000000u // 10000100000000000000000000000000
56 #define LBM_TYPE_CHANNEL 0x90000000u // 10010000000000000000000000000000
57 #define LBM_TYPE_CUSTOM 0xA0000000u // 10100000000000000000000000000000
58 #define LBM_TYPE_LISPARRAY 0xB0000000u // 10110000000000000000000000000000 a "real" array
59 #define LBM_TYPE_LISPARRAY_CONST 0xB4000000u // 10110100000000000000000000000000
60 #define LBM_TYPE_DEFRAG_MEM 0xC0000000u // 11000000000000000000000000000000
61 #define LBM_POINTER_TYPE_LAST 0xCC000000u // 11001100000000000000000000000000
62 // POINTER_TYPE_LAST is less than the value used for CONTINUATION_INTERNAL
63 
64 #define LBM_EXACT_CONS_MASK 0x10000001u
65 #define LBM_EXACT_CONS_CONST_MASK 0x14000001u
66 
67 #define LBM_CONS_TYPE_MASK 0xF0000000u // 11110000000000000000000000000000
68 #define LBM_CONS_CONST_TYPE_MASK 0xFF000000u // 11111111000000000000000000000000
69 
70 #define LBM_CONTINUATION_INTERNAL 0xF8000001u // 11111000000000000000000000000001 PTR bit set
71 #define LBM_CONTINUATION_INTERNAL_TYPE 0xF8000000u // 11111000000000000000000000000000
72 
73 #define LBM_GC_MASK 0x00000002u // 00000000000000000000000000000010
74 #define LBM_GC_MARKED 0x00000002u // 00000000000000000000000000000010
75 
76 #define LBM_VAL_MASK 0xFFFFFFF0u // 11111111111111111111111111110000
77 #define LBM_VAL_TYPE_MASK 0x0000000Cu // 00000000000000000000000000001100
78 #define LBM_TYPE_MASK 0xFC00000Cu // 11111100000000000000000000001100
79 #define LBM_NUMBER_MASK 0x08000000u // 00001000000000000000000000000000
80 #define LBM_FLOAT_MASK 0x68000000u // 01101000000000000000000000000000
81  // gc ptr
82 #define LBM_TYPE_SYMBOL 0x00000000u // 00 0 0
83 #define LBM_TYPE_CHAR 0x00000004u // 01 0 0
84 #define LBM_TYPE_BYTE 0x00000004u
85 #define LBM_TYPE_I 0x00000008u // 10 0 0
86 #define LBM_TYPE_U 0x0000000Cu // 11 0 0
87 #define LBM_LOW_RESERVED_BITS 0x0000000Fu // 11 1 1
88 
89 #else /* 64 bit Version */
90 
91 #define LBM_ADDRESS_SHIFT 2
92 #define LBM_VAL_SHIFT 8
93 #define LBM_ENC_1 0x100
94 
95 #define LBM_PTR_BIT (lbm_uint)0x1
96 #define LBM_PTR_VAL_MASK (lbm_uint)0x03FFFFFFFFFFFFFC
97 #define LBM_PTR_TYPE_MASK (lbm_uint)0xFC00000000000000
98 #define LBM_PTR_NULL ((lbm_uint)0x03FFFFFFFFFFFFFC >> 2)
99 
100 #define LBM_PTR_TO_CONSTANT_BIT (lbm_uint)0x0400000000000000
101 #define LBM_PTR_TO_CONSTANT_MASK ~LBM_PTR_TO_CONSTANT_BIT
102 #define LBM_PTR_TO_CONSTANT_SHIFT 58
103 
104 #define LBM_POINTER_TYPE_FIRST (lbm_uint)0x1000000000000000
105 #define LBM_TYPE_CONS (lbm_uint)0x1000000000000000
106 #define LBM_TYPE_CONS_CONST (lbm_uint)0x1400000000000000
107 #define LBM_NON_CONS_POINTER_TYPE_FIRST (lbm_uint)0x2000000000000000
108 #define LBM_TYPE_I64 (lbm_uint)0x2800000000000000
109 #define LBM_TYPE_U64 (lbm_uint)0x3800000000000000
110 #define LBM_TYPE_DOUBLE (lbm_uint)0x4800000000000000
111 #define LBM_TYPE_ARRAY (lbm_uint)0x5000000000000000
112 #define LBM_TYPE_ARRAY_CONST (lbm_uint)0x5400000000000000
113 #define LBM_TYPE_CHANNEL (lbm_uint)0x7000000000000000
114 #define LBM_TYPE_CUSTOM (lbm_uint)0x8000000000000000
115 #define LBM_TYPE_LISPARRAY (lbm_uint)0x9000000000000000
116 #define LBM_TYPE_LISPARRAY_CONST (lbm_uint)0x9400000000000000
117 #define LBM_TYPE_DEFRAG_MEM (lbm_uint)0xA000000000000000
118 #define LBM_POINTER_TYPE_LAST (lbm_uint)0xAC00000000000000
119 // POINTER_TYPE_LAST is less than the value used for CONTINUATION_INTERNAL
120 
121 #define LBM_EXACT_CONS_MASK (lbm_uint)0x1000000000000001
122 #define LBM_EXACT_CONS_CONST_MASK (lbm_uint)0x1400000000000001
123 
124 #define LBM_CONS_TYPE_MASK (lbm_uint)0xF000000000000000
125 #define LBM_CONS_CONST_TYPE_MASK (lbm_uint)0xFF00000000000000
126 
127 #define LBM_CONTINUATION_INTERNAL (lbm_uint)0xF800000000000001
128 #define LBM_CONTINUATION_INTERNAL_TYPE (lbm_uint)0xF800000000000000
129 
130 #define LBM_GC_MASK (lbm_uint)0x2
131 #define LBM_GC_MARKED (lbm_uint)0x2
132 
133 /* 8 - 2 free bits to encode type information into */
134 #define LBM_VAL_MASK (lbm_uint)0xFFFFFFFFFFFFFF00
135 #define LBM_VAL_TYPE_MASK (lbm_uint)0xFC
136 #define LBM_TYPE_MASK (lbm_uint)0xFF000000000000FC
137 #define LBM_NUMBER_MASK (lbm_uint)0x0800000000000000
138 // gc ptr
139 #define LBM_TYPE_SYMBOL (lbm_uint)0x0 // 00 00 00 0 0
140 #define LBM_TYPE_CHAR (lbm_uint)0x4 // 00 00 01 0 0
141 #define LBM_TYPE_BYTE (lbm_uint)0x4
142 #define LBM_TYPE_I32 (lbm_uint)0x8 // 00 00 10 0 0
143 #define LBM_TYPE_U32 (lbm_uint)0xC // 00 00 11 0 0
144 #define LBM_TYPE_I (lbm_uint)0x14 // 00 01 01 0 0
145 #define LBM_TYPE_U (lbm_uint)0x18 // 00 01 10 0 0
146 #define LBM_TYPE_FLOAT (lbm_uint)0x1C // 00 01 11 0 0
147 #define LBM_LOW_RESERVED_BITS (lbm_uint)0xFF // 11 11 11 1 1
148 
149 #endif
150 /* ------------------------------------------------------------
151  Built in symbols
152  ------------------------------------------------------------ */
153 
154 // Default and fixed symbol ids
155 #define SYM_NIL 0x0
156 #define SYM_TRUE 0x2
157 #define SYM_DONTCARE 0x9
158 #define SYM_TIMEOUT 0xA
159 
160 // 0x20 - 0x2F are errors/special
161 #define SYM_RERROR 0x20 /* READ ERROR */
162 #define SYM_TERROR 0x21 /* TYPE ERROR */
163 #define SYM_EERROR 0x22 /* EVAL ERROR */
164 #define SYM_MERROR 0x23
165 #define SYM_NOT_FOUND 0x24
166 #define SYM_DIVZERO 0x25
167 #define SYM_FATAL_ERROR 0x26 /* Runtime system is corrupt */
168 #define SYM_STACK_ERROR 0x27
169 #define SYM_RECOVERED 0x28
170 #define SYM_ERROR_FLASH_HEAP_FULL 0x29
171 #define SYM_PLACEHOLDER 0x2A
172 
173 
174 //#define TYPE_CLASSIFIER_STARTS 0x30
175 #define SYM_ARRAY_TYPE 0x30
176 #define SYM_RAW_I_TYPE 0x31
177 #define SYM_RAW_U_TYPE 0x32
178 #define SYM_RAW_F_TYPE 0x33
179 #define SYM_IND_I_TYPE 0x34
180 #define SYM_IND_U_TYPE 0x35
181 #define SYM_IND_F_TYPE 0x36
182 #define SYM_CHANNEL_TYPE 0x37
183 #define SYM_CUSTOM_TYPE 0x38
184 #define SYM_LISPARRAY_TYPE 0x39
185 #define SYM_DEFRAG_MEM_TYPE 0x3A
186 #define SYM_DEFRAG_ARRAY_TYPE 0x3B
187 #define SYM_DEFRAG_LISPARRAY_TYPE 0x3C
188 //#define TYPE_CLASSIFIER_ENDS 0x39
189 
190 #define SYM_NONSENSE 0x3D
191 
192 #define SYM_NO_MATCH 0x40
193 #define SYM_MATCH_ANY 0x41
194 
195 // Type identifying symbols
196 #define SYM_TYPE_LIST 0x50
197 #define SYM_TYPE_I 0x51
198 #define SYM_TYPE_U 0x52
199 #define SYM_TYPE_FLOAT 0x53
200 #define SYM_TYPE_I32 0x54
201 #define SYM_TYPE_U32 0x55
202 #define SYM_TYPE_DOUBLE 0x56
203 #define SYM_TYPE_I64 0x57
204 #define SYM_TYPE_U64 0x58
205 #define SYM_TYPE_ARRAY 0x59
206 #define SYM_TYPE_SYMBOL 0x5A
207 #define SYM_TYPE_CHAR 0x5B
208 #define SYM_TYPE_BYTE 0x5C
209 #define SYM_TYPE_CHANNEL 0x5E
210 #define SYM_TYPE_LISPARRAY 0x5F
211 #define SYM_TYPE_DEFRAG_MEM 0x60
212 #define SYM_TYPE_CUSTOM 0x61
213 
214 //Relevant for the tokenizer and reader
215 #define TOKENIZER_SYMBOLS_START 0x70
216 #define SYM_OPENPAR 0x70
217 #define SYM_CLOSEPAR 0x71
218 #define SYM_BACKQUOTE 0x72
219 #define SYM_COMMA 0x73
220 #define SYM_COMMAAT 0x74
221 #define SYM_TOKENIZER_DONE 0x75
222 #define SYM_DOT 0x76
223 #define SYM_QUOTE_IT 0x77
224 #define SYM_COLON 0x78
225 #define SYM_TOKENIZER_WAIT 0x79
226 #define SYM_OPENBRACK 0x80
227 #define SYM_CLOSEBRACK 0x81
228 #define SYM_TOKENIZER_RERROR 0x82
229 #define SYM_OPENCURL 0x84
230 #define SYM_CONST 0x85
231 #define SYM_OPENARRAY 0x86
232 #define SYM_CLOSEARRAY 0x87
233 #define TOKENIZER_SYMBOLS_END 0x87
234 
235 // Built in special forms:
236 // Special forms get their arguments unevaluated
237 // and are free to choose to evaluate one or more
238 // of them as needed.
239 // Consecutive for lookup-application.
240 #define SPECIAL_FORMS_START 0x100
241 #define SYM_QUOTE 0x100
242 #define SYM_DEFINE 0x101
243 #define SYM_PROGN 0x102
244 #define SYM_LAMBDA 0x103
245 #define SYM_IF 0x104
246 #define SYM_LET 0x105
247 #define SYM_AND 0x106
248 #define SYM_OR 0x107
249 #define SYM_MATCH 0x108
250 #define SYM_RECEIVE 0x109
251 #define SYM_RECEIVE_TIMEOUT 0x10A
252 #define SYM_CALLCC 0x10B
253 #define SYM_ATOMIC 0x10C
254 #define SYM_MACRO 0x10D
255 #define SYM_CONT 0x10E
256 #define SYM_CLOSURE 0x10F
257 #define SYM_COND 0x110
258 #define SYM_APP_CONT 0x111
259 #define SYM_PROGN_VAR 0x112
260 #define SYM_SETQ 0x113
261 #define SYM_MOVE_TO_FLASH 0x114
262 #define SYM_LOOP 0x115
263 #define SYM_TRAP 0x116
264 #define SYM_CALL_CC_UNSAFE 0x117
265 #define SYM_CONT_SP 0x118
266 #define SPECIAL_FORMS_END 0x118
267 
268 #ifndef LBM64
269 #define SPECIAL_FORMS_MASK 0xFFFFFF00
270 #define SPECIAL_FORMS_BIT 0x00000100
271 #define ENC_SPECIAL_FORMS_MASK 0xFFFFF000
272 #define ENC_SPECIAL_FORMS_BIT 0x00001000
273 #define SPECIAL_FORMS_INDEX_MASK 0x000000FF
274 #else
275 #define SPECIAL_FORMS_MASK 0xFFFFFFFFFFFFFF00
276 #define SPECIAL_FORMS_BIT 0x0000000000000100
277 #define ENC_SPECIAL_FORMS_MASK 0xFFFFFFFFFFFF0000
278 #define ENC_SPECIAL_FORMS_BIT 0x0000000000010000
279 #define SPECIAL_FORMS_INDEX_MASK 0x00000000000000FF
280 #endif
281 
282 // Fundamental built in operations that take their
283 // arguments on stack. Fundamentals do not handle
284 // their own GC and they are not allowed to create
285 // continuations.
286 #define SYM_ADD 0x20000
287 #define SYM_SUB 0x20001
288 #define SYM_MUL 0x20002
289 #define SYM_DIV 0x20003
290 #define SYM_MOD 0x20004
291 #define SYM_EQ 0x20005
292 #define SYM_NOT_EQ 0x20006
293 #define SYM_NUMEQ 0x20007
294 #define SYM_NUM_NOT_EQ 0x20008
295 #define SYM_LT 0x20009
296 #define SYM_GT 0x2000A
297 #define SYM_LEQ 0x2000B
298 #define SYM_GEQ 0x2000C
299 #define SYM_NOT 0x2000D
300 #define SYM_PERFORM_GC 0x2000E
301 #define SYM_SELF 0x2000F
302 #define SYM_SET_MAILBOX_SIZE 0x20010
303 #define SYM_CONS 0x20011
304 #define SYM_CAR 0x20012
305 #define SYM_CDR 0x20013
306 #define SYM_LIST 0x20014
307 #define SYM_APPEND 0x20015
308 #define SYM_UNDEFINE 0x20016
309 #define SYM_BYTEARRAY_CREATE 0x20017
310 #define SYM_SYMBOL_TO_STRING 0x20018
311 #define SYM_STRING_TO_SYMBOL 0x20019
312 #define SYM_SYMBOL_TO_UINT 0x2001A
313 #define SYM_UINT_TO_SYMBOL 0x2001B
314 #define SYM_SET_CAR 0x2001C
315 #define SYM_SET_CDR 0x2001D
316 #define SYM_SET_IX 0x2001E
317 #define SYM_ASSOC 0x2001F
318 #define SYM_ACONS 0x20020
319 #define SYM_SET_ASSOC 0x20021
320 #define SYM_COSSA 0x20022
321 #define SYM_IX 0x20023
322 #define SYM_TO_I 0x20024
323 #define SYM_TO_I32 0x20025
324 #define SYM_TO_U 0x20026
325 #define SYM_TO_U32 0x20027
326 #define SYM_TO_FLOAT 0x20028
327 #define SYM_TO_I64 0x20029
328 #define SYM_TO_U64 0x2002A
329 #define SYM_TO_DOUBLE 0x2002B
330 #define SYM_TO_BYTE 0x2002C
331 #define SYM_SHL 0x2002D
332 #define SYM_SHR 0x2002E
333 #define SYM_BITWISE_AND 0x2002F
334 #define SYM_BITWISE_OR 0x20030
335 #define SYM_BITWISE_XOR 0x20031
336 #define SYM_BITWISE_NOT 0x20032
337 #define SYM_CUSTOM_DESTRUCT 0x20033
338 #define SYM_TYPE_OF 0x20034
339 #define SYM_LIST_LENGTH 0x20035
340 #define SYM_RANGE 0x20036
341 #define SYM_REG_EVENT_HANDLER 0x20037
342 #define SYM_TAKE 0x20038
343 #define SYM_DROP 0x20039
344 #define SYM_MKARRAY 0x2003A
345 #define SYM_DM_CREATE 0x2003B
346 #define SYM_DM_ALLOC 0x2003C
347 #define SYM_IS_LIST 0x2003D
348 #define SYM_IS_NUMBER 0x2003E
349 #define SYM_INT_DIV 0x2003F
350 #define SYM_IDENTITY 0x20040
351 #define SYM_ARRAY 0x20041
352 #define SYM_IS_STRING 0x20042
353 #define SYM_IS_CONSTANT 0x20043
354 #define SYM_MEMBER 0x20044
355 
356 // Apply funs:
357 // Get their arguments in evaluated form on the stack.
358 // Consecutive value symbols for lookup-application
359 // apply funs handle their own GC needs and can
360 // create continuations.
361 #define SYM_SETVAR 0x30000
362 #define SYM_READ 0x30001
363 #define SYM_READ_PROGRAM 0x30002
364 #define SYM_READ_AND_EVAL_PROGRAM 0x30003
365 #define SYM_SPAWN 0x30004
366 #define SYM_SPAWN_TRAP 0x30005
367 #define SYM_YIELD 0x30006
368 #define SYM_WAIT 0x30007
369 #define SYM_EVAL 0x30008
370 #define SYM_EVAL_PROGRAM 0x30009
371 #define SYM_SEND 0x3000A
372 #define SYM_EXIT_OK 0x3000B
373 #define SYM_EXIT_ERROR 0x3000C
374 #define SYM_MAP 0x3000D
375 #define SYM_REVERSE 0x3000E
376 #define SYM_FLATTEN 0x3000F
377 #define SYM_UNFLATTEN 0x30010
378 #define SYM_KILL 0x30011
379 #define SYM_SLEEP 0x30012
380 #define SYM_MERGE 0x30013
381 #define SYM_SORT 0x30014
382 #define SYM_REST_ARGS 0x30015
383 #define SYM_ROTATE 0x30016
384 #define SYM_APPLY 0x30017
385 
386 #define SYMBOL_KIND(X) ((X) >> 16)
387 #define SYMBOL_KIND_SPECIAL 0
388 #define SYMBOL_KIND_EXTENSION 1
389 #define SYMBOL_KIND_FUNDAMENTAL 2
390 #define SYMBOL_KIND_APPFUN 3
391 
392 #define SYMBOL_IX(X) ((X) & 0xFFFF)
393 
394 #define SPECIAL_SYMBOLS_START 0
395 #define SPECIAL_SYMBOLS_END 0xFFFF
396 #define EXTENSION_SYMBOLS_START 0x10000
397 #define EXTENSION_SYMBOLS_END 0x1FFFF
398 #define FUNDAMENTAL_SYMBOLS_START 0x20000
399 #define FUNDAMENTAL_SYMBOLS_END 0x2FFFF
400 #define APPFUN_SYMBOLS_START 0x30000
401 #define APPFUN_SYMBOLS_END 0x3FFFF
402 #define RUNTIME_SYMBOLS_START 0x40000
403 #define MAX_SYMBOL_VALUE 0x0FFFFFFF
404 
405 // This leaves 268173312 runtime symbols available.
406 
407 /* ------------------------------------------------------------
408  Encoded Symbols
409  ------------------------------------------------------------ */
410 
411 #define ENC_SYM(X) (((X) << LBM_VAL_SHIFT) | LBM_TYPE_SYMBOL)
412 
413 #define ENC_SYM_NIL ENC_SYM(SYM_NIL)
414 #define ENC_SYM_TRUE ENC_SYM(SYM_TRUE)
415 #define ENC_SYM_DONTCARE ENC_SYM(SYM_DONTCARE)
416 #define ENC_SYM_TIMEOUT ENC_SYM(SYM_TIMEOUT)
417 
418 #define ENC_SYM_RERROR ENC_SYM(SYM_RERROR)
419 #define ENC_SYM_TERROR ENC_SYM(SYM_TERROR)
420 #define ENC_SYM_EERROR ENC_SYM(SYM_EERROR)
421 #define ENC_SYM_MERROR ENC_SYM(SYM_MERROR)
422 #define ENC_SYM_NOT_FOUND ENC_SYM(SYM_NOT_FOUND)
423 #define ENC_SYM_DIVZERO ENC_SYM(SYM_DIVZERO)
424 #define ENC_SYM_FATAL_ERROR ENC_SYM(SYM_FATAL_ERROR)
425 #define ENC_SYM_STACK_ERROR ENC_SYM(SYM_STACK_ERROR)
426 #define ENC_SYM_RECOVERED ENC_SYM(SYM_RECOVERED)
427 #define ENC_SYM_ERROR_FLASH_HEAP_FULL ENC_SYM(SYM_ERROR_FLASH_HEAP_FULL)
428 #define ENC_SYM_PLACEHOLDER ENC_SYM(SYM_PLACEHOLDER)
429 
430 #define ENC_SYM_ARRAY_TYPE ENC_SYM(SYM_ARRAY_TYPE)
431 #define ENC_SYM_RAW_I_TYPE ENC_SYM(SYM_RAW_I_TYPE)
432 #define ENC_SYM_RAW_U_TYPE ENC_SYM(SYM_RAW_U_TYPE)
433 #define ENC_SYM_RAW_F_TYPE ENC_SYM(SYM_RAW_F_TYPE)
434 #define ENC_SYM_IND_I_TYPE ENC_SYM(SYM_IND_I_TYPE)
435 #define ENC_SYM_IND_U_TYPE ENC_SYM(SYM_IND_U_TYPE)
436 #define ENC_SYM_IND_F_TYPE ENC_SYM(SYM_IND_F_TYPE)
437 #define ENC_SYM_CHANNEL_TYPE ENC_SYM(SYM_CHANNEL_TYPE)
438 #define ENC_SYM_CUSTOM_TYPE ENC_SYM(SYM_CUSTOM_TYPE)
439 #define ENC_SYM_LISPARRAY_TYPE ENC_SYM(SYM_LISPARRAY_TYPE)
440 #define ENC_SYM_DEFRAG_MEM_TYPE ENC_SYM(SYM_DEFRAG_MEM_TYPE)
441 #define ENC_SYM_DEFRAG_ARRAY_TYPE ENC_SYM(SYM_DEFRAG_ARRAY_TYPE)
442 #define ENC_SYM_DEFRAG_LISPARRAY_TYPE ENC_SYM(SYM_DEFRAG_LISPARRAY_TYPE)
443 #define ENC_SYM_NONSENSE ENC_SYM(SYM_NONSENSE)
444 
445 #define ENC_SYM_NO_MATCH ENC_SYM(SYM_NO_MATCH)
446 #define ENC_SYM_MATCH_ANY ENC_SYM(SYM_MATCH_ANY)
447 
448 #define ENC_SYM_TYPE_LIST ENC_SYM(SYM_TYPE_LIST)
449 #define ENC_SYM_TYPE_I ENC_SYM(SYM_TYPE_I)
450 #define ENC_SYM_TYPE_U ENC_SYM(SYM_TYPE_U)
451 #define ENC_SYM_TYPE_FLOAT ENC_SYM(SYM_TYPE_FLOAT)
452 #define ENC_SYM_TYPE_I32 ENC_SYM(SYM_TYPE_I32)
453 #define ENC_SYM_TYPE_U32 ENC_SYM(SYM_TYPE_U32)
454 #define ENC_SYM_TYPE_DOUBLE ENC_SYM(SYM_TYPE_DOUBLE)
455 #define ENC_SYM_TYPE_I64 ENC_SYM(SYM_TYPE_I64)
456 #define ENC_SYM_TYPE_U64 ENC_SYM(SYM_TYPE_U64)
457 #define ENC_SYM_TYPE_ARRAY ENC_SYM(SYM_TYPE_ARRAY)
458 #define ENC_SYM_TYPE_SYMBOL ENC_SYM(SYM_TYPE_SYMBOL)
459 #define ENC_SYM_TYPE_CHAR ENC_SYM(SYM_TYPE_CHAR)
460 #define ENC_SYM_TYPE_BYTE ENC_SYM(SYM_TYPE_BYTE)
461 #define ENC_SYM_TYPE_CHANNEL ENC_SYM(SYM_TYPE_CHANNEL)
462 #define ENC_SYM_TYPE_LISPARRAY ENC_SYM(SYM_TYPE_LISPARRAY)
463 #define ENC_SYM_TYPE_DEFRAG_MEM ENC_SYM(SYM_TYPE_DEFRAG_MEM)
464 #define ENC_SYM_TYPE_CUSTOM ENC_SYM(SYM_TYPE_CUSTOM)
465 
466 #define ENC_SYM_OPENPAR ENC_SYM(SYM_OPENPAR)
467 #define ENC_SYM_CLOSEPAR ENC_SYM(SYM_CLOSEPAR)
468 #define ENC_SYM_BACKQUOTE ENC_SYM(SYM_BACKQUOTE)
469 #define ENC_SYM_COMMA ENC_SYM(SYM_COMMA)
470 #define ENC_SYM_COMMAAT ENC_SYM(SYM_COMMAAT)
471 #define ENC_SYM_TOKENIZER_DONE ENC_SYM(SYM_TOKENIZER_DONE)
472 #define ENC_SYM_DOT ENC_SYM(SYM_DOT)
473 #define ENC_SYM_QUOTE_IT ENC_SYM(SYM_QUOTE_IT)
474 #define ENC_SYM_COLON ENC_SYM(SYM_COLON)
475 #define ENC_SYM_TOKENIZER_WAIT ENC_SYM(SYM_TOKENIZER_WAIT)
476 #define ENC_SYM_OPENBRACK ENC_SYM(SYM_OPENBRACK)
477 #define ENC_SYM_CLOSEBRACK ENC_SYM(SYM_CLOSEBRACK)
478 #define ENC_SYM_TOKENIZER_RERROR ENC_SYM(SYM_TOKENIZER_RERROR)
479 #define ENC_SYM_OPENCURL ENC_SYM(SYM_OPENCURL)
480 #define ENC_SYM_CONST ENC_SYM(SYM_CONST)
481 #define ENC_SYM_OPENARRAY ENC_SYM(SYM_OPENARRAY)
482 #define ENC_SYM_CLOSEARRAY ENC_SYM(SYM_CLOSEARRAY)
483 
484 #define ENC_SYM_QUOTE ENC_SYM(SYM_QUOTE)
485 #define ENC_SYM_DEFINE ENC_SYM(SYM_DEFINE)
486 #define ENC_SYM_PROGN ENC_SYM(SYM_PROGN)
487 #define ENC_SYM_LAMBDA ENC_SYM(SYM_LAMBDA)
488 #define ENC_SYM_IF ENC_SYM(SYM_IF)
489 #define ENC_SYM_LET ENC_SYM(SYM_LET)
490 #define ENC_SYM_AND ENC_SYM(SYM_AND)
491 #define ENC_SYM_OR ENC_SYM(SYM_OR)
492 #define ENC_SYM_MATCH ENC_SYM(SYM_MATCH)
493 #define ENC_SYM_RECEIVE ENC_SYM(SYM_RECEIVE)
494 #define ENC_SYM_RECEIVE_TIMEOUT ENC_SYM(SYM_RECEIVE_TIMEOUT)
495 #define ENC_SYM_CALLCC ENC_SYM(SYM_CALLCC)
496 #define ENC_SYM_ATOMIC ENC_SYM(SYM_ATOMIC)
497 #define ENC_SYM_MACRO ENC_SYM(SYM_MACRO)
498 #define ENC_SYM_CONT ENC_SYM(SYM_CONT)
499 #define ENC_SYM_CLOSURE ENC_SYM(SYM_CLOSURE)
500 #define ENC_SYM_COND ENC_SYM(SYM_COND)
501 #define ENC_SYM_APP_CONT ENC_SYM(SYM_APP_CONT)
502 #define ENC_SYM_PROGN_VAR ENC_SYM(SYM_PROGN_VAR)
503 #define ENC_SYM_SETQ ENC_SYM(SYM_SETQ)
504 #define ENC_SYM_MOVE_TO_FLASH ENC_SYM(SYM_MOVE_TO_FLASH)
505 #define ENC_SYM_IN_ENV ENC_SYM(SYM_IN_ENV)
506 
507 #define ENC_SYM_SETVAR ENC_SYM(SYM_SETVAR)
508 #define ENC_SYM_READ ENC_SYM(SYM_READ)
509 #define ENC_SYM_READ_PROGRAM ENC_SYM(SYM_READ_PROGRAM)
510 #define ENC_SYM_READ_AND_EVAL_PROGRAM ENC_SYM(SYM_READ_AND_EVAL_PROGRAM)
511 #define ENC_SYM_SPAWN ENC_SYM(SYM_SPAWN)
512 #define ENC_SYM_SPAWN_TRAP ENC_SYM(SYM_SPAWN_TRAP)
513 #define ENC_SYM_YIELD ENC_SYM(SYM_YIELD)
514 #define ENC_SYM_WAIT ENC_SYM(SYM_WAIT)
515 #define ENC_SYM_EVAL ENC_SYM(SYM_EVAL)
516 #define ENC_SYM_EVAL_PROGRAM ENC_SYM(SYM_EVAL_PROGRAM)
517 #define ENC_SYM_SEND ENC_SYM(SYM_SEND)
518 #define ENC_SYM_EXIT_OK ENC_SYM(SYM_EXIT_OK)
519 #define ENC_SYM_EXIT_ERROR ENC_SYM(SYM_EXIT_ERROR)
520 #define ENC_SYM_MAP ENC_SYM(SYM_MAP)
521 #define ENC_SYM_REVERSE ENC_SYM(SYM_REVERSE)
522 #define ENC_SYM_FLATTEN ENC_SYM(SYM_FLATTEN)
523 #define ENC_SYM_UNFLATTEN ENC_SYM(SYM_UNFLATTEN)
524 #define ENC_SYM_KILL ENC_SYM(SYM_KILL)
525 #define ENC_SYM_SLEEP ENC_SYM(SYM_SLEEP)
526 #define ENC_SYM_MERGE ENC_SYM(SYM_MERGE)
527 #define ENC_SYM_SORT ENC_SYM(SYM_SORT)
528 #define ENC_SYM_REST_ARGS ENC_SYM(SYM_REST_ARGS)
529 #define ENC_SYM_ROTATE ENC_SYM(SYM_ROTATE)
530 #define ENC_SYM_TRAP ENC_SYM(SYM_TRAP)
531 #define ENC_SYM_CALL_CC_UNSAFE ENC_SYM(SYM_CALL_CC_UNSAFE)
532 #define ENC_SYM_CONT_SP ENC_SYM(SYM_CONT_SP)
533 #define ENC_SYM_APPLY ENC_SYM(SYM_APPLY)
534 
535 #define ENC_SYM_ADD ENC_SYM(SYM_ADD)
536 #define ENC_SYM_SUB ENC_SYM(SYM_SUB)
537 #define ENC_SYM_MUL ENC_SYM(SYM_MUL)
538 #define ENC_SYM_DIV ENC_SYM(SYM_DIV)
539 #define ENC_SYM_MOD ENC_SYM(SYM_MOD)
540 #define ENC_SYM_EQ ENC_SYM(SYM_EQ)
541 #define ENC_SYM_NOT_EQ ENC_SYM(SYM_NOT_EQ)
542 #define ENC_SYM_NUMEQ ENC_SYM(SYM_NUMEQ)
543 #define ENC_SYM_NUM_NOT_EQ ENC_SYM(SYM_NUM_NOT_EQ)
544 #define ENC_SYM_LT ENC_SYM(SYM_LT)
545 #define ENC_SYM_GT ENC_SYM(SYM_GT)
546 #define ENC_SYM_LEQ ENC_SYM(SYM_LEQ)
547 #define ENC_SYM_GEQ ENC_SYM(SYM_GEQ)
548 #define ENC_SYM_NOT ENC_SYM(SYM_NOT)
549 #define ENC_SYM_PERFORM_GC ENC_SYM(SYM_PERFORM_GC)
550 #define ENC_SYM_SELF ENC_SYM(SYM_SELF)
551 #define ENC_SYM_SET_MAILBOX_SIZE ENC_SYM(SYM_SET_MAILBOX_SIZE)
552 #define ENC_SYM_CONS ENC_SYM(SYM_CONS)
553 #define ENC_SYM_CAR ENC_SYM(SYM_CAR)
554 #define ENC_SYM_CDR ENC_SYM(SYM_CDR)
555 #define ENC_SYM_LIST ENC_SYM(SYM_LIST)
556 #define ENC_SYM_APPEND ENC_SYM(SYM_APPEND)
557 #define ENC_SYM_UNDEFINE ENC_SYM(SYM_UNDEFINE)
558 #define ENC_SYM_BYTEARRAY_CREATE ENC_SYM(SYM_BYTEARRAY_CREATE)
559 #define ENC_SYM_SYMBOL_TO_STRING ENC_SYM(SYM_ENC_SYMBOL_TO_STRING)
560 #define ENC_SYM_STRING_TO_SYMBOL ENC_SYM(SYM_STRING_TO_SYMBOL)
561 #define ENC_SYM_SYMBOL_TO_UINT ENC_SYM(SYM_SYMBOL_TO_UINT)
562 #define ENC_SYM_UINT_TO_SYMBOL ENC_SYM(SYM_UINT_TO_SYMBOL)
563 #define ENC_SYM_SET_CAR ENC_SYM(SYM_SET_CAR)
564 #define ENC_SYM_SET_CDR ENC_SYM(SYM_SET_CDR)
565 #define ENC_SYM_SET_IX ENC_SYM(SYM_SET_IX)
566 #define ENC_SYM_ASSOC ENC_SYM(SYM_ASSOC)
567 #define ENC_SYM_ACONS ENC_SYM(SYM_ACONS)
568 #define ENC_SYM_SET_ASSOC ENC_SYM(SYM_SET_ASSOC)
569 #define ENC_SYM_COSSA ENC_SYM(SYM_COSSA)
570 #define ENC_SYM_IX ENC_SYM(SYM_IX)
571 #define ENC_SYM_TO_I ENC_SYM(SYM_TO_I)
572 #define ENC_SYM_TO_I32 ENC_SYM(SYM_TO_I32)
573 #define ENC_SYM_TO_U ENC_SYM(SYM_TO_U)
574 #define ENC_SYM_TO_U32 ENC_SYM(SYM_TO_U32)
575 #define ENC_SYM_TO_FLOAT ENC_SYM(SYM_TO_FLOAT)
576 #define ENC_SYM_TO_I64 ENC_SYM(SYM_TO_I64)
577 #define ENC_SYM_TO_U64 ENC_SYM(SYM_TO_U64)
578 #define ENC_SYM_TO_DOUBLE ENC_SYM(SYM_TO_DOUBLE)
579 #define ENC_SYM_TO_BYTE ENC_SYM(SYM_TO_BYTE)
580 #define ENC_SYM_SHL ENC_SYM(SYM_SHL)
581 #define ENC_SYM_SHR ENC_SYM(SYM_SHR)
582 #define ENC_SYM_BITWISE_AND ENC_SYM(SYM_BITWISE_AND)
583 #define ENC_SYM_BITWISE_OR ENC_SYM(SYM_BITWISE_OR)
584 #define ENC_SYM_BITWISE_XOR ENC_SYM(SYM_BITWISE_XOR)
585 #define ENC_SYM_BITWISE_NOT ENC_SYM(SYM_BITWISE_NOT)
586 #define ENC_SYM_CUSTOM_DESTRUCT ENC_SYM(SYM_CUSTOM_DESTRUCT)
587 #define ENC_SYM_TYPE_OF ENC_SYM(SYM_TYPE_OF)
588 #define ENC_SYM_LIST_LENGTH ENC_SYM(SYM_LIST_LENGTH)
589 #define ENC_SYM_RANGE ENC_SYM(SYM_RANGE)
590 #define ENC_SYM_REG_EVENT_HANDLER ENC_SYM(SYM_REG_EVENT_HANDLER)
591 #define ENC_SYM_TAKE ENC_SYM(SYM_TAKE)
592 #define ENC_SYM_DROP ENC_SYM(SYM_DROP)
593 #define ENC_SYM_MKARRAY ENC_SYM(SYM_MKARRAY)
594 #define ENC_SYM_DM_CREATE ENC_SYM(SYM_DM_CREATE)
595 #define ENC_SYM_DM_ALLOC ENC_SYM(SYM_DM_ALLOC)
596 #define ENC_SYM_IS_LIST ENC_SYM(SYM_IS_LIST)
597 #define ENC_SYM_IS_NUMBER ENC_SYM(SYM_IS_NUMBER)
598 
599 #endif