Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
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);
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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;
}