altos/lisp: Generate built-in lambda atoms for const creation
[fw/altos] / src / lisp / ao_lisp_make_builtin
index b7b17cf48009c80673bc6ba3d4b5c7c4eec6ecb9..ddc9a0b37ec4210abbab150d0509656206dea56d 100644 (file)
@@ -142,6 +142,22 @@ dump_consts(builtin_t[*] builtins) {
        printf("#endif /* AO_LISP_BUILTIN_CONSTS */\n");
 }
 
+void
+dump_atoms(builtin_t[*] builtins) {
+       printf("#ifdef AO_LISP_BUILTIN_ATOMS\n");
+       printf("#undef AO_LISP_BUILTIN_ATOMS\n");
+       for (int i = 0; i < dim(builtins); i++) {
+               for (int j = 0; j < dim(builtins[i].lisp_names); j++) {
+                       printf("#define _ao_lisp_atom_");
+                       cify_lisp(builtins[i].lisp_names[j]);
+                       printf(" _atom(");
+                       cify_lisp(builtins[i].lisp_names[j]);
+                       printf(")\n");
+               }
+       }
+       printf("#endif /* AO_LISP_BUILTIN_ATOMS */\n");
+}
+
 void main() {
        if (dim(argv) < 2) {
                File::fprintf(stderr, "usage: %s <file>\n", argv[0]);
@@ -155,6 +171,7 @@ void main() {
                dump_funcs(builtins);
                dump_decls(builtins);
                dump_consts(builtins);
+               dump_atoms(builtins);
        }
 }