From 9360ff2c4b6af19200167881629ab4346b4fce54 Mon Sep 17 00:00:00 2001 From: Al Date: Mon, 20 Jul 2015 16:53:48 -0400 Subject: [PATCH] [geodb] geodb_builder using new trie_get/set_data_at_index methds --- src/geodb_builder.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/geodb_builder.c b/src/geodb_builder.c index 92e00777..a2877e63 100644 --- a/src/geodb_builder.c +++ b/src/geodb_builder.c @@ -359,7 +359,7 @@ uint16_t get_address_component(uint32_t boundary_type) { } } -bool geodb_builder_add_to_trie(geodb_builder_t *self, char *key, uint16_t address_component) { +bool geodb_builder_add_to_trie(geodb_builder_t *self, char *key, uint16_t address_components) { if (self == NULL || self->trie == NULL) return false; uint32_t node_id = trie_get(self->trie, key); @@ -367,19 +367,20 @@ bool geodb_builder_add_to_trie(geodb_builder_t *self, char *key, uint16_t addres value.value = 0; if (node_id == NULL_NODE_ID) { - value.components |= address_component; + value.components |= address_components; value.count = 1; - trie_add(self->trie, key, value.value); + return trie_add(self->trie, key, value.value); } else { - trie_node_t node = trie_get_node(self->trie, node_id); - trie_data_node_t data_node = trie_get_data_node(self->trie, node); - value.value = data_node.data; - value.components |= address_component; + if (!trie_get_data_at_index(self->trie, node_id, &value.value)) { + return false; + } + + value.components |= address_components; value.count++; - data_node.data = value.value; - trie_set_data_node(self->trie, -1 * node.base, data_node); + return trie_set_data_at_index(self->trie, node_id, value.value); + } }