X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fq.c;h=e703b93b79562c4c252324e0428d38ec320ac2bb;hb=f58dce81384e4324f00f4ca51830f3245d15136b;hp=7d257f7fd6954adf6a2a05a83187a06ae70b1a42;hpb=efc92c191c8417ab626b0e8e639f8d516e4000ff;p=swftools.git diff --git a/lib/q.c b/lib/q.c index 7d257f7..e703b93 100644 --- a/lib/q.c +++ b/lib/q.c @@ -384,6 +384,16 @@ 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; +} +int dictionary_count(dictionary_t* dict) // this count includes entries that have been deleted +{ + dictionary_internal_t*d = (dictionary_internal_t*)dict->internal; + return d->num; +} void* dictionary_lookup(dictionary_t*dict, const char*name) { int s; @@ -430,6 +440,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 *))