#ifndef FZL_SYMTABLE_H #define FZL_SYMTABLE_H #include #include #include #include typedef enum { FZL_SYMTABLE_RESULT_OK, FZL_SYMTABLE_RESULT_ERR, FZL_SYMTABLE_RESULT_EXISTS, FZL_SYMTABLE_RESULT_NOT_OBJECT } fzl_symtable_res_t; // Symbols table entry descriptor typedef struct { char *name; fzl_type_t type; size_t ip; char *classname; } fzl_sym_t; // Symbols table descriptor typedef struct { size_t size; size_t remainder; fzl_sym_t *symbols; } fzl_symtable_t; // Allocate new symbtable fzl_symtable_t *fzl_mksymt(); // Put new entry into symtable fzl_symtable_res_t fzl_symt_put(fzl_symtable_t *symt, char *name, fzl_type_t type, uint64_t ip); // Assign class name to object type fzl_symtable_res_t fzl_symt_setobjclass(fzl_symtable_t *symt, char *name, char *classname); // Get entry from specified symtable bool fzl_symt_get(fzl_symtable_t *symt, char *name, fzl_sym_t *res); // Free symbtable void fzl_freesymt(fzl_symtable_t *symt); #endif // FZL_SYMTABLE_H