72 for (
p =
d->head;
p; )
77 d->destroy(
p->key,
p->value,
d->extra);
87 return d ?
d->num_entries : 0;
103 if (
d->head &&
d->comp(
k,
d->head->key,
d->extra) == 0)
105 for (
p =
d->head; !
ret &&
p &&
p->next;
p =
p->next)
107 if (
d->comp(
k,
p->next->key,
d->extra) == 0)
123 d->destroy((*prior)->key, (*prior)->value,
d->extra);
124 (*prior)->key = (
void *)
k;
125 (*prior)->value = (
void *)
v;
134 elem->key = (
void *)
k;
135 elem->value = (
void *)
v;
136 elem->next =
d->head;
154 *
value = (*prior)->value;
172 d->destroy((*prior)->key, (*prior)->value,
d->extra);
173 *prior = (*prior)->
next;
183 TRACE(
"(%p, %p, %p)\n",
d,
e, closure);
189 if (!
e(
p->key,
p->value,
d->extra, closure))
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
BOOL(* enumeratefunc)(const void *k, const void *v, void *extra, void *closure)
void(* destroyfunc)(void *k, void *v, void *extra)
int(* comparefunc)(const void *a, const void *b, void *extra)
#define HeapFree(x, y, z)
BOOL dictionary_find(struct dictionary *d, const void *k, void **value)
void dictionary_enumerate(struct dictionary *d, enumeratefunc e, void *closure)
void dictionary_remove(struct dictionary *d, const void *k)
static struct dictionary_entry ** dictionary_find_internal(struct dictionary *d, const void *k)
void dictionary_destroy(struct dictionary *d)
void dictionary_insert(struct dictionary *d, const void *k, const void *v)
struct dictionary * dictionary_create(comparefunc c, destroyfunc d, void *extra)
UINT dictionary_num_entries(struct dictionary *d)
static unsigned __int64 next
struct dictionary_entry * next
struct dictionary_entry * head