[utils] Adding method to get a particular token alternative from a string tree

This commit is contained in:
Al
2015-06-28 15:15:29 -04:00
parent 246237c1f1
commit a5dacf3d2b
2 changed files with 11 additions and 0 deletions

View File

@@ -687,6 +687,14 @@ string_tree_t *string_tree_new(void) {
return string_tree_new_size((size_t)DEFAULT_STRING_TREE_SIZE);
}
inline char *string_tree_get_alternative(string_tree_t *self, size_t token_index, size_t alternative) {
if (token_index >= self->token_indices->n) return NULL;
uint32_t token_start = self->token_indices->a[token_index];
return cstring_array_get_string(self->strings, token_start + alternative);
}
inline void string_tree_finalize_token(string_tree_t *self) {
uint32_array_push(self->token_indices, cstring_array_num_strings(self->strings));
}

View File

@@ -179,6 +179,9 @@ typedef struct string_tree {
string_tree_t *string_tree_new(void);
string_tree_t *string_tree_new_size(size_t size);
// get
char *string_tree_get_alternative(string_tree_t *self, size_t token_index, size_t alternative);
// finalize
void string_tree_finalize_token(string_tree_t *self);
// terminated