aboutsummaryrefslogtreecommitdiff
path: root/structs.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-09-18 01:01:15 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-09-18 01:01:15 -0400
commit2158bb97fc2a9744c5ed1bf4b5cd056498904925 (patch)
tree7c4f0d1c0e21649d23b624a4cb254464398c349b /structs.c
parent0829e1a2d1fc1c1d284b6e929a62479cdd01064e (diff)
Clean up struct code a bit
Diffstat (limited to 'structs.c')
-rw-r--r--structs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/structs.c b/structs.c
index 6584eac8..48fce6dd 100644
--- a/structs.c
+++ b/structs.c
@@ -171,7 +171,7 @@ void compile_struct_def(env_t *env, ast_t *ast)
compile_namespace(env, def->name, def->namespace);
}
-CORD compile_struct_typedef(env_t *env, ast_t *ast)
+CORD compile_struct_header(env_t *env, ast_t *ast)
{
auto def = Match(ast, StructDef);
CORD full_name = CORD_cat(namespace_prefix(env->libname, env->namespace), def->name);
@@ -192,7 +192,9 @@ CORD compile_struct_typedef(env_t *env, ast_t *ast)
"typedef struct {\n",
full_name, "_t value;\n"
"Bool_t is_null:1;\n"
- "} ", namespace_prefix(env->libname, env->namespace), "$Optional", def->name, "_t;\n");
+ "} ", namespace_prefix(env->libname, env->namespace), "$Optional", def->name, "_t;\n"
+ "extern const TypeInfo ", full_name, ";\n",
+ compile_namespace_header(env, def->name, def->namespace));
}
// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0