From: Thadeu Lima de Souza Cascardo Date: Sun, 11 Dec 2016 13:39:39 +0000 (-0200) Subject: pmhash: permite iterar os valores. X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fdeclara.git;a=commitdiff_plain;h=a0bd651ece702749b0d63b903b7ca34fd9b670e1 pmhash: permite iterar os valores. A função pmhash_next retorna o próximo valor de um hash dado um iterador opaco que deve ser iniciado com NULL. --- diff --git a/lib/pmhash.c b/lib/pmhash.c index 5bada1e..2bf6c43 100644 --- a/lib/pmhash.c +++ b/lib/pmhash.c @@ -95,3 +95,17 @@ void pmhash_del(struct pmhash *pmhash) } free(pmhash); } + +void * pmhash_next(struct pmhash *pmhash, void **iter) +{ + int i; + struct item *item = *iter; + if (item == NULL) + i = 0; + else + i = item - pmhash->items + 1; + if (i >= (int) pmhash->len) + return NULL; + *iter = pmhash->items + i; + return pmhash->items[i].val; +} diff --git a/lib/pmhash.h b/lib/pmhash.h index d1c0206..a4e6019 100644 --- a/lib/pmhash.h +++ b/lib/pmhash.h @@ -25,5 +25,6 @@ struct pmhash * pmhash_new(void); int pmhash_add(struct pmhash **pmhash, char *key, void *val); void * pmhash_get(struct pmhash *pmhash, char *key); void pmhash_del(struct pmhash *pmhash); +void * pmhash_next(struct pmhash *pmhash, void **iter); #endif