diff --git a/src/trie.c b/src/trie.c index a1b96e5d..bdc391ea 100644 --- a/src/trie.c +++ b/src/trie.c @@ -714,19 +714,22 @@ inline bool trie_set_data_node(trie_t *self, uint32_t index, trie_data_node_t da return true; } -inline bool trie_get_data(trie_t *self, char *key, uint32_t *data) { - uint32_t node_id = trie_get(self, key); +inline bool trie_get_data_at_index(trie_t *self, uint32_t index, uint32_t *data) { if (node_id == NULL_NODE_ID) return false; trie_node_t node = trie_get_node(self, node_id); trie_data_node_t data_node = trie_get_data_node(self, node); *data = data_node.data; - return true; + return true; } -inline bool trie_set_data(trie_t *self, char *key, uint32_t data) { +inline bool trie_get_data(trie_t *self, char *key, uint32_t *data) { uint32_t node_id = trie_get(self, key); + return trie_get_data_at_index(self, node_id, data); +} + +inline bool trie_set_data_at_index(trie_t *self, uint32_t index, uint32_t data) { if (node_id == NULL_NODE_ID) { return trie_add(self, key, data); } @@ -735,6 +738,12 @@ inline bool trie_set_data(trie_t *self, char *key, uint32_t data) { trie_data_node_t data_node = trie_get_data_node(self, node); data_node.data = data; return trie_set_data_node(self, node_id, data_node); + +} + +inline bool trie_set_data(trie_t *self, char *key, uint32_t data) { + uint32_t node_id = trie_get(self, key); + return trie_set_data_at_index(self, node_id, data); } trie_prefix_result_t trie_get_prefix_from_index(trie_t *self, char *key, size_t len, uint32_t start_index, size_t tail_pos) { diff --git a/src/trie.h b/src/trie.h index ac66f0d7..c9d6f4c7 100644 --- a/src/trie.h +++ b/src/trie.h @@ -88,7 +88,9 @@ trie_node_t trie_get_free_list(trie_t *self); trie_data_node_t trie_get_data_node(trie_t *self, trie_node_t node); bool trie_set_data_node(trie_t *self, uint32_t index, trie_data_node_t data_node); +bool trie_get_data_at_index(trie_t *self, uint32_t index, uint32_t *data); bool trie_get_data(trie_t *self, char *key, uint32_t *data); +bool trie_set_data_at_index(trie_t *self, uint32_t index, uint32_t data); bool trie_set_data(trie_t *self, char *key, uint32_t data); bool trie_tail_match(trie_t *self, char *str, uint32_t tail_index);