#include <ecoli_log.h>
#include <ecoli_test.h>
#include <ecoli_murmurhash.h>
+#include <ecoli_htable_private.h>
#include <ecoli_htable.h>
#define FACTOR 3
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;
return TAILQ_NEXT(iter, next);
}
-const char *
+const void *
ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter)
{
if (iter == NULL)
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)
{