示例#1
0
文件: hash.c 项目: mattn/Pone
pone_val* pone_hash_free(pone_world* world, pone_val* val) {
    pone_hash* h=(pone_hash*)val;
    const char* k;
    pone_val* v;
    kh_foreach(h->h, k, v, {
        pone_free(world, (void*)k); // k is strdupped.
        pone_refcnt_dec(world, v);
    });
示例#2
0
文件: opaque.c 项目: tokuhirom/Pone
void pone_opaque_free(pone_world* world, pone_val* v) {
    assert(pone_type(v) == PONE_OPAQUE);

    v->as.opaque.body->refcnt--;
    if (v->as.opaque.body->refcnt == 0) {
        pone_finalizer_t finalizer = v->as.opaque.body->finalizer;
        // finalizer is optional. it may null value.
        if (finalizer) {
            finalizer(world, v);
        }
    }
    pone_free(world, v->as.opaque.body);
}
示例#3
0
文件: re.c 项目: tokuhirom/Pone
static void re_finalizer(pone_world* world, pone_val* val) {
    pone_free(world, pone_opaque_ptr(val));
}