feat: implement extern block reading and parsing

This commit is contained in:
samsonium
2026-10-29 22:13:28 +03:00
parent 0448be0d38
commit f769313169
13 changed files with 719 additions and 3 deletions
+29
View File
@@ -94,11 +94,40 @@ void fzl_freeast(fzl_node_t *root)
{
switch (root->type)
{
case FZL_NODETYPE_REFERENCE:
case FZL_NODETYPE_ALIAS:
case FZL_NODETYPE_HANDLE:
case FZL_NODETYPE_BREAK:
case FZL_NODETYPE_IDENTIFIER:
case FZL_NODETYPE_LITERAL:
break;
case FZL_NODETYPE_EXTERN:
for (size_t i = 0; i < root->ext.typedefs_count; i++)
fzl_freeast(root->ext.typedefs[i]);
free(root->ext.typedefs);
for (size_t i = 0; i < root->ext.fns_count; i++)
fzl_freeast(root->ext.fns[i]);
free(root->ext.fns);
break;
case FZL_NODETYPE_EXTERN_FN:
for (size_t i = 0; i < root->ext_fn.args_count; i++)
fzl_freeast(root->ext_fn.args[i]);
free(root->ext_fn.args);
break;
case FZL_NODETYPE_STRUCT:
for (size_t i = 0; i < root->structure.entries_count; i++)
fzl_freeast(root->structure.entries[i]);
free(root->structure.entries);
break;
case FZL_NODETYPE_TYPEDEF:
fzl_freeast(root->typedefinition.type);
break;
case FZL_NODETYPE_FMT_STRING:
case FZL_NODETYPE_BLOCK:
if (root->list.entries)