예제 #1
0
파일: symtable.c 프로젝트: amjith/chimp
static chimp_bool_t
chimp_symtable_add (ChimpRef *self, ChimpRef *name, int64_t flags)
{
    ChimpRef *ste = CHIMP_SYMTABLE_GET_CURRENT_ENTRY(self);
    ChimpRef *symbols = CHIMP_SYMTABLE_ENTRY(ste)->symbols;
    ChimpRef *fl = chimp_int_new (flags);
    if (fl == NULL) {
        return CHIMP_FALSE;
    }
    if (!chimp_hash_put (symbols, name, fl)) {
        return CHIMP_FALSE;
    }
    return CHIMP_TRUE;
}
예제 #2
0
파일: task.c 프로젝트: eax/chimp
chimp_bool_t
chimp_task_add_module (ChimpTaskInternal *task, ChimpRef *module)
{
    if (task == NULL) {
        task = chimp_task_current ();
    }

    if (task->modules == NULL) {
        task->modules = chimp_hash_new ();
        if (task->modules == NULL) {
            return CHIMP_FALSE;
        }
        chimp_gc_make_root (NULL, task->modules);
    }

    return chimp_hash_put (task->modules, CHIMP_MODULE(module)->name, module);
}
예제 #3
0
파일: symtable.c 프로젝트: amjith/chimp
static chimp_bool_t
chimp_symtable_enter_scope (ChimpRef *self, ChimpRef *scope, int flags)
{
    ChimpRef *ste = CHIMP_SYMTABLE_GET_CURRENT_ENTRY(self);
    ChimpRef *new_ste = chimp_symtable_entry_new (self, ste, scope, flags);
    if (new_ste == NULL) {
        return CHIMP_FALSE;
    }
    if (!chimp_hash_put (CHIMP_SYMTABLE(self)->lookup, scope, new_ste)) {
        return CHIMP_FALSE;
    }
    if (ste != chimp_nil) {
        if (!chimp_array_push (CHIMP_SYMTABLE(self)->stack, ste)) {
            return CHIMP_FALSE;
        }
        if (!chimp_array_push (CHIMP_SYMTABLE_ENTRY_CHILDREN(ste), new_ste)) {
            return CHIMP_FALSE;
        }
    }
    CHIMP_SYMTABLE(self)->ste = new_ste;
    return CHIMP_TRUE;
}
예제 #4
0
파일: hash.c 프로젝트: eax/chimp
chimp_bool_t
chimp_hash_put_str (ChimpRef *self, const char *key, ChimpRef *value)
{
    return chimp_hash_put (self, chimp_str_new (key, strlen(key)), value);
}
예제 #5
0
파일: hash.c 프로젝트: eax/chimp
static ChimpRef *
_chimp_hash_put (ChimpRef *self, ChimpRef *args)
{
    return CHIMP_BOOL_REF(chimp_hash_put (self, CHIMP_ARRAY_ITEM(args, 0), CHIMP_ARRAY_ITEM(args, 1)));
}