X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fq.c;h=0083dcd56056cc3482d0d7e418e4499c12bf4cde;hb=3ef17c4cee41231e1eed731c08381d3ddf0c8d1a;hp=7d257f7fd6954adf6a2a05a83187a06ae70b1a42;hpb=d1920e49f268abad90e5aabed8b65f6ea048a681;p=swftools.git diff --git a/lib/q.c b/lib/q.c index 7d257f7..0083dcd 100644 --- a/lib/q.c +++ b/lib/q.c @@ -384,6 +384,12 @@ void dictionary_put2(dictionary_t*dict, const char*t1, void* t2) string_set(&s, (char*)t1); dictionary_put(dict, s, t2); } +stringarray_t* dictionary_index(dictionary_t*dict) +{ + dictionary_internal_t*d = (dictionary_internal_t*)dict->internal; + return &d->keys; +} + void* dictionary_lookup(dictionary_t*dict, const char*name) { int s; @@ -430,6 +436,20 @@ void dictionary_destroy(dictionary_t*dict) free(dict); } +void dictionary_free_all(dictionary_t* dict, void (*freeFunction)(void*)) +{ + dictionary_internal_t*d = (dictionary_internal_t*)dict->internal; + int num = 0; + char* name = stringarray_at(&d->keys, num) ; + while (name) + { + freeFunction(dictionary_lookup(dict, name)); + num++; + name = stringarray_at(&d->keys, num); + } + dictionary_clear(dict); +} + // ------------------------------- heap_t ------------------------------- void heap_init(heap_t*h,int n,int elem_size, int(*compare)(const void *, const void *))