wip: begin writer impl for externs

This commit is contained in:
samsonium
2026-11-05 04:01:23 +03:00
parent 66f31ab865
commit de0e88f2e9
3 changed files with 10 additions and 15 deletions
+4 -5
View File
@@ -32,9 +32,6 @@ gen_res_t gen_externfn(fzl_gen_t *gen, fzl_node_t *node)
for (size_t i = 0; i < node->ext_fn.args_count; i++)
{
fzl_node_t *argnode = node->ext_fn.args[i];
if (gen_common(gen, argnode).error)
return gen_error;
if (args_count >= args_remainder)
{
args_remainder *= 2;
@@ -105,7 +102,8 @@ gen_res_t gen_externfn(fzl_gen_t *gen, fzl_node_t *node)
return gen_error;
}
if (ret != FZL_TYPE_NULL)
if (ret == FZL_TYPE_OBJECT || ret == FZL_TYPE_STRUCT ||
ret == FZL_TYPE_HANDLE)
{
res = fzl_symt_setobjclass(gen->syms[0], node->ext_fn.name, ex_retcn);
if (res != FZL_SYMTABLE_RESULT_OK)
@@ -130,7 +128,8 @@ gen_res_t gen_externfn(fzl_gen_t *gen, fzl_node_t *node)
result->args_count = args_count;
result->has_return = ret != FZL_TYPE_NULL;
result->used_name = node->ext_fn.name;
result->symbol_name = node->ext_fn.original_name;
result->symbol_name = node->ext_fn.original_name ? node->ext_fn.original_name
: node->ext_fn.name;
return gen_ok_null;
}
+1 -10
View File
@@ -17,10 +17,7 @@ gen_res_t gen_struct(fzl_gen_t *gen, fzl_node_t *node)
if (!gen || !node)
return gen_error;
type_buf.kind = FZL_EXTERN_KIND_STRUCT;
fzl_gen_ctx_t *ctx = gen_ctx(gen, FZL_GEN_CTX_TYPE_UNECCESSARY, node);
if (!ctx)
return gen_error;
type_buf.kind = FZL_EXTERN_KIND_STRUCT;
size_t remainder = 2;
size_t count = 0;
@@ -32,12 +29,6 @@ gen_res_t gen_struct(fzl_gen_t *gen, fzl_node_t *node)
for (size_t i = 0; i < node->structure.entries_count; i++)
{
fzl_node_t *fnode = node->structure.entries[i];
if (gen_common(gen, fnode).error)
{
free(fields);
return gen_error;
}
if (count >= remainder)
{
remainder *= 2;