return m;
}
#endif
-void* qmalloc_internal(int len)
-{
- void*val = malloc(len);
- if(!val) {
- printf("memory error! Couldn't reserve %d bytes\n", len);
- fprintf(stderr, "memory error! Couldn't reserve %d bytes\n", len);
- exit(1);
- }
- return val;
-}
-void* qrealloc_internal(void*old, int len)
-{
- void*val = realloc(old, len);
- if(!val) {
- printf("memory error! Couldn't reserve %d bytes\n", len);
- fprintf(stderr, "memory error! Couldn't reserve %d bytes\n", len);
- exit(1);
- }
- return val;
-}
-void qfree_internal(void*old)
-{
- free(old);
-}
char*qstrdup(const char*string)
{
return strdup(string);
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;
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 *))