From b110033b70ce7b1c7e8c595102361c1a13dcb95d Mon Sep 17 00:00:00 2001 From: Daniel Salzman <daniel.salzman@nic.cz> Date: Tue, 27 Sep 2016 16:33:51 +0200 Subject: [PATCH] qp-trie: replace value_t with trie_val_t --- src/contrib/qp-trie/qp.c | 20 ++++++++++---------- src/contrib/qp-trie/qp.h | 23 +++++++++++------------ 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/contrib/qp-trie/qp.c b/src/contrib/qp-trie/qp.c index 462ba8a38c..6eaaa36d5e 100644 --- a/src/contrib/qp-trie/qp.c +++ b/src/contrib/qp-trie/qp.c @@ -63,7 +63,7 @@ typedef struct leaf { byte flags; #endif tkey_t *key; /*!< The pointer must be aligned to 4-byte multiples! */ - value_t val; + trie_val_t val; } leaf_t; struct tkey { @@ -286,7 +286,7 @@ size_t qp_trie_weight(const struct qp_trie *tbl) return tbl->weight; } -value_t* qp_trie_get_try(trie_t *tbl, const char *key, uint32_t len) +trie_val_t* qp_trie_get_try(trie_t *tbl, const char *key, uint32_t len) { assert(tbl); if (!tbl->weight) @@ -304,7 +304,7 @@ value_t* qp_trie_get_try(trie_t *tbl, const char *key, uint32_t len) return &t->leaf.val; } -int qp_trie_del(struct qp_trie *tbl, const char *key, uint32_t len, value_t *val) +int qp_trie_del(struct qp_trie *tbl, const char *key, uint32_t len, trie_val_t *val) { assert(tbl); if (!tbl->weight) @@ -324,7 +324,7 @@ int qp_trie_del(struct qp_trie *tbl, const char *key, uint32_t len, value_t *val return KNOT_ENOENT; mm_free(&tbl->mm, t->leaf.key); if (val != NULL) - *val = t->leaf.val; // we return value_t directly when deleting + *val = t->leaf.val; // we return trie_val_t directly when deleting --tbl->weight; if (unlikely(!p)) { // whole trie was a single leaf assert(tbl->weight == 0); @@ -608,7 +608,7 @@ static int ns_next_leaf(nstack_t *ns) } while (true); } -int qp_trie_get_leq(struct qp_trie *tbl, const char *key, uint32_t len, value_t **val) +int qp_trie_get_leq(struct qp_trie *tbl, const char *key, uint32_t len, trie_val_t **val) { assert(tbl && val); *val = NULL; // so on failure we can just return; @@ -683,7 +683,7 @@ static int mk_leaf(node_t *leaf, const char *key, uint32_t len, knot_mm_t *mm) return KNOT_EOK; } -value_t* qp_trie_get_ins(struct qp_trie *tbl, const char *key, uint32_t len) +trie_val_t* qp_trie_get_ins(struct qp_trie *tbl, const char *key, uint32_t len) { assert(tbl); // First leaf in an empty tbl? @@ -752,8 +752,8 @@ err_leaf: return NULL; } -/*! \brief Apply a function to every value_t*, in order; a recursive solution. */ -static int apply_trie(node_t *t, int (*f)(value_t *, void *), void *d) +/*! \brief Apply a function to every trie_val_t*, in order; a recursive solution. */ +static int apply_trie(node_t *t, int (*f)(trie_val_t *, void *), void *d) { assert(t); if (!isbranch(t)) @@ -764,7 +764,7 @@ static int apply_trie(node_t *t, int (*f)(value_t *, void *), void *d) return KNOT_EOK; } -int qp_trie_apply(struct qp_trie *tbl, int (*f)(value_t *, void *), void *d) +int qp_trie_apply(struct qp_trie *tbl, int (*f)(trie_val_t *, void *), void *d) { assert(tbl && f); if (!tbl->weight) @@ -822,7 +822,7 @@ const char* qp_trie_it_key(qp_trie_it_t *it, size_t *len) return key->chars; } -value_t* qp_trie_it_val(qp_trie_it_t *it) +trie_val_t* qp_trie_it_val(qp_trie_it_t *it) { assert(it && it->len); node_t *t = it->stack[it->len - 1]; diff --git a/src/contrib/qp-trie/qp.h b/src/contrib/qp-trie/qp.h index c0c9361604..b841f97fbf 100644 --- a/src/contrib/qp-trie/qp.h +++ b/src/contrib/qp-trie/qp.h @@ -20,19 +20,18 @@ #include <stdint.h> #include "libknot/mm_ctx.h" -#include "contrib/hhash.h" /* only for value_t */ /*! * \file \brief Native API of QP-tries: * * - keys are char strings, not necessarily zero-terminated, * the structure copies the contents of the passed keys - * - values are typedef void* value_t, typically you get an ephemeral pointer to it + * - values are void* pointers, typically you get an ephemeral pointer to it * - key lengths are limited by 2^32-1 ATM */ -/*! Opaque structure holding a QP-trie. */ -struct qp_trie; +/*! \brief Element value. */ +typedef void* trie_val_t; /*! Opaque type for holding a QP-trie iterator. */ typedef struct qp_trie_it qp_trie_it_t; @@ -50,10 +49,10 @@ void qp_trie_clear(struct qp_trie *tbl); size_t qp_trie_weight(const struct qp_trie *tbl); /*! \brief Search the trie, returning NULL on failure. */ -value_t* qp_trie_get_try(struct qp_trie *tbl, const char *key, uint32_t len); +trie_val_t* qp_trie_get_try(struct qp_trie *tbl, const char *key, uint32_t len); -/*! \brief Search the trie, inserting NULL value_t on failure. */ -value_t* qp_trie_get_ins(struct qp_trie *tbl, const char *key, uint32_t len); +/*! \brief Search the trie, inserting NULL trie_val_t on failure. */ +trie_val_t* qp_trie_get_ins(struct qp_trie *tbl, const char *key, uint32_t len); /*! * \brief Search for less-or-equal element. @@ -62,21 +61,21 @@ value_t* qp_trie_get_ins(struct qp_trie *tbl, const char *key, uint32_t len); * \return KNOT_EOK for exact match, 1 for previous, KNOT_ENOENT for not-found, * or KNOT_E*. */ -int qp_trie_get_leq(struct qp_trie *tbl, const char *key, uint32_t len, value_t **val); +int qp_trie_get_leq(struct qp_trie *tbl, const char *key, uint32_t len, trie_val_t **val); /*! - * \brief Apply a function to every value_t, in order. + * \brief Apply a function to every trie_val_t, in order. * * \return KNOT_EOK if success or KNOT_E* if error. */ -int qp_trie_apply(struct qp_trie *tbl, int (*f)(value_t *, void *), void *d); +int qp_trie_apply(struct qp_trie *tbl, int (*f)(trie_val_t *, void *), void *d); /*! * \brief Remove an item, returning KNOT_EOK if succeeded or KNOT_ENOENT if not found. * * If val!=NULL and deletion succeeded, the deleted value is set. */ -int qp_trie_del(struct qp_trie *tbl, const char *key, uint32_t len, value_t *val); +int qp_trie_del(struct qp_trie *tbl, const char *key, uint32_t len, trie_val_t *val); /*! \brief Create a new iterator pointing to the first element (if any). */ qp_trie_it_t* qp_trie_it_begin(struct qp_trie *tbl); @@ -99,4 +98,4 @@ void qp_trie_it_free(qp_trie_it_t *it); const char* qp_trie_it_key(qp_trie_it_t *it, size_t *len); /*! \brief Return pointer to the value of the current element (writable). */ -value_t* qp_trie_it_val(qp_trie_it_t *it); +trie_val_t* qp_trie_it_val(qp_trie_it_t *it); -- GitLab