diff --git a/src/string_utils.c b/src/string_utils.c index b5f3bea0..46eddf06 100644 --- a/src/string_utils.c +++ b/src/string_utils.c @@ -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)); } diff --git a/src/string_utils.h b/src/string_utils.h index 90d78df1..87595d90 100644 --- a/src/string_utils.h +++ b/src/string_utils.h @@ -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