X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=src%2Fecoli_htable.c;h=a8600e203dbcc545b6c9ebf938b8a3e5de548303;hb=67b4d8d2b2593e3e64a848ce548bc0fd76bc440a;hp=4b45a76ce7616a50b05cf28f7d0f31c888242663;hpb=41bf1ba66e15c00f38375d05e49b31aa70f92349;p=protos%2Flibecoli.git diff --git a/src/ecoli_htable.c b/src/ecoli_htable.c index 4b45a76..a8600e2 100644 --- a/src/ecoli_htable.c +++ b/src/ecoli_htable.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #define FACTOR 3 @@ -25,30 +26,6 @@ EC_LOG_TYPE_REGISTER(htable); static uint32_t ec_htable_seed; -struct ec_htable_elt { - void *key; - size_t key_len; - void *val; - uint32_t hash; - ec_htable_elt_free_t free; - unsigned int refcount; -}; - -struct ec_htable_elt_ref { - TAILQ_ENTRY(ec_htable_elt_ref) next; - TAILQ_ENTRY(ec_htable_elt_ref) hnext; - struct ec_htable_elt *elt; -}; - -TAILQ_HEAD(ec_htable_elt_ref_list, ec_htable_elt_ref); - -struct ec_htable { - size_t len; - size_t table_size; - struct ec_htable_elt_ref_list list; - struct ec_htable_elt_ref_list *table; -}; - struct ec_htable *ec_htable(void) { struct ec_htable *htable; @@ -290,7 +267,7 @@ ec_htable_iter_next(struct ec_htable_elt_ref *iter) return TAILQ_NEXT(iter, next); } -const char * +const void * ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter) { if (iter == NULL) @@ -299,6 +276,15 @@ ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter) return iter->elt->key; } +size_t +ec_htable_iter_get_key_len(const struct ec_htable_elt_ref *iter) +{ + if (iter == NULL) + return 0; + + return iter->elt->key_len; +} + void * ec_htable_iter_get_val(const struct ec_htable_elt_ref *iter) {