예제 #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));
}