feat: implement objects and classes
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include <common/fzl_types.h>
|
||||
#include <compiler/utils/fzl_symtable.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
@@ -37,10 +38,31 @@ fzl_symtable_res_t fzl_symt_put(fzl_symtable_t *symt, char *name,
|
||||
}
|
||||
|
||||
symt->symbols[symt->size++] =
|
||||
(fzl_sym_t){.name = name, .type = type, .ip = ip};
|
||||
(fzl_sym_t){.name = name, .type = type, .ip = ip, .classname = NULL};
|
||||
return FZL_SYMTABLE_RESULT_OK;
|
||||
}
|
||||
|
||||
fzl_symtable_res_t fzl_symt_setobjclass(fzl_symtable_t *symt, char *name,
|
||||
char *classname)
|
||||
{
|
||||
if (!symt)
|
||||
return FZL_SYMTABLE_RESULT_ERR;
|
||||
|
||||
for (size_t i = 0; i < symt->size; i++)
|
||||
{
|
||||
if (strcmp(symt->symbols[i].name, name) == 0)
|
||||
{
|
||||
if (symt->symbols[i].type != FZL_TYPE_OBJECT)
|
||||
return FZL_SYMTABLE_RESULT_NOT_OBJECT;
|
||||
|
||||
symt->symbols[i].classname = classname;
|
||||
return FZL_SYMTABLE_RESULT_OK;
|
||||
}
|
||||
}
|
||||
|
||||
return FZL_SYMTABLE_RESULT_ERR;
|
||||
}
|
||||
|
||||
bool fzl_symt_get(fzl_symtable_t *symt, char *name, fzl_sym_t *res)
|
||||
{
|
||||
if (!symt)
|
||||
|
||||
Reference in New Issue
Block a user