void ty_register_enum(char *name) { Hashtable *en = hst_get(&enum_table, name, NULL, NULL); if(en) die(-1, "Redeclaring enum with name: %s", name); en = malloc(sizeof(*en)); *en = hst_create(); en->duplicate_keys = 1; hst_put(&enum_table, name, en, NULL, NULL); }
void ty_register_class(char *name) { Hashtable *lst = hst_get(&method_table, name, NULL, NULL); if(lst) die(-1, "Redeclaring class with name: %s", name); lst = malloc(sizeof(Hashtable)); *lst = hst_create(); lst->duplicate_keys = 1; hst_put(&method_table, name, lst, NULL, NULL); }
void vs_push(VarScopeStack *vs) { VarScope *scope = malloc(sizeof(VarScope)); scope->table = hst_create(); scope->table.duplicate_keys = 1; scope->scope = SCOPE; scope->next = vs->scope; scope->deferments = arr_create(2); vs->scope = scope; }
VarScopeStack vs_make() { VarScopeStack vs; vs.pool = pool_create(); vs.scope = NULL; vs.modules = hst_create(); vs.modules.duplicate_keys = 1; vs.warnunused = 1; vs.deferCallback = NULL; return vs; }
void ty_add_method(char *name, char *method, EagleComplexType *ty) { Hashtable *lst = hst_get(&method_table, name, NULL, NULL); if(!lst) { lst = malloc(sizeof(Hashtable)); *lst = hst_create(); lst->duplicate_keys = 1; hst_put(&method_table, name, lst, NULL, NULL); } hst_put(lst, method, ty, NULL, NULL); }
VarBundle *vs_put_in_module(VarScopeStack *vs, char *ident, char *module, LLVMValueRef val, EagleComplexType *type) { VarBundle *vb = vs_create(ident, module, type, val, -1); Hashtable *mod = hst_get(&vs->modules, module, NULL, NULL); if(!mod) { mod = malloc(sizeof(Hashtable)); *mod = hst_create(); mod->duplicate_keys = 1; hst_put(&vs->modules, module, mod, NULL, NULL); } hst_put(mod, ident, vb, NULL, NULL); pool_add(&vs->pool, vb); return vb; }
void ty_prepare() { name_table = hst_create(); name_table.duplicate_keys = 1; typedef_table = hst_create(); typedef_table.duplicate_keys = 1; enum_table = hst_create(); enum_table.duplicate_keys = 1; struct_table = hst_create(); struct_table.duplicate_keys = 1; types_table = hst_create(); types_table.duplicate_keys = 1; counted_table = hst_create(); counted_table.duplicate_keys = 1; method_table = hst_create(); method_table.duplicate_keys = 1; init_table = hst_create(); init_table.duplicate_keys = 1; type_named_table = hst_create(); type_named_table.duplicate_keys = 1; enum_named_table = hst_create(); enum_named_table.duplicate_keys = 1; interface_table = hst_create(); interface_table.duplicate_keys = 1; generic_ident_table = hst_create(); generic_ident_table.duplicate_keys = 1; type_mempool = pool_create(); list_mempool = pool_create(); list_mempool.free_func = list_mempool_free; }