[phrases] Adding num_keys attribute to trie

This commit is contained in:
Al
2015-08-31 21:41:34 -04:00
parent aac5b37e76
commit a8f6617294
2 changed files with 17 additions and 8 deletions

View File

@@ -56,6 +56,8 @@ static trie_t *trie_new_empty(uint8_t *alphabet, uint32_t alphabet_size) {
self->alphabet_size = alphabet_size;
self->num_keys = 0;
for (int i = 0; i < self->alphabet_size; i++) {
self->alpha_map[alphabet[i]] = i;
log_debug("setting alpha_map[%d] = %d\n", alphabet[i], i);
@@ -657,6 +659,7 @@ bool trie_add_at_index(trie_t *self, uint32_t node_id, char *key, size_t len, ui
}
}
self->num_keys++;
return true;
}
@@ -915,14 +918,13 @@ I/O methods
*/
bool trie_write(trie_t *self, FILE *file) {
if (!file_write_uint32(file, TRIE_SIGNATURE))
return false;
if (!file_write_uint32(file, (uint32_t)self->alphabet_size))
return false;
if (!file_write_chars(file, (char *)self->alphabet, self->alphabet_size))
return false;
if (!file_write_uint32(file, (uint32_t)self->nodes->n))
if (!file_write_uint32(file, TRIE_SIGNATURE) ||
!file_write_uint32(file, (uint32_t)self->alphabet_size)||
!file_write_chars(file, (char *)self->alphabet, self->alphabet_size) ||
!file_write_uint32(file, self->num_keys) ||
!file_write_uint32(file, (uint32_t)self->nodes->n)) {
return false;
}
int i;
trie_node_t node;
@@ -1002,6 +1004,12 @@ trie_t *trie_read(FILE *file) {
if (!trie)
goto exit_file_read;
uint32_t num_keys;
if (!file_read_uint32(file, &num_keys))
goto exit_file_read;
trie->num_keys = num_keys;
uint32_t num_nodes;
if (!file_read_uint32(file, &num_nodes))

View File

@@ -75,6 +75,7 @@ typedef struct trie {
char *alphabet;
uint8_t alpha_map[NUM_CHARS];
int alphabet_size;
uint32_t num_keys;
} trie_t;
trie_t *trie_new_alphabet(uint8_t *alphabet, uint32_t alphabet_size);