From 965bac1833807fa8421d4d7a28f10ebbbc23254f Mon Sep 17 00:00:00 2001 From: Al Date: Sat, 30 Jul 2016 17:06:20 -0400 Subject: [PATCH] [trie] Making methods to construct string phrases from phrase matches available through trie_search.h --- src/trie_search.c | 23 +++++++++++++++++++++++ src/trie_search.h | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/trie_search.c b/src/trie_search.c index f39ff8ad..dc110d02 100644 --- a/src/trie_search.c +++ b/src/trie_search.c @@ -774,3 +774,26 @@ inline phrase_t trie_search_prefixes(trie_t *self, char *word, size_t len) { } +inline char *cstring_array_get_phrase_with_char_array(cstring_array *str, char_array *phrase_tokens, phrase_t phrase) { + char_array_clear(phrase_tokens); + + size_t phrase_end = phrase.start + phrase.len; + + for (int k = phrase.start; k < phrase_end; k++) { + char *w = cstring_array_get_string(str, k); + char_array_append(phrase_tokens, w); + if (k < phrase_end - 1) { + char_array_append(phrase_tokens, " "); + } + } + char_array_terminate(phrase_tokens); + + return char_array_get_string(phrase_tokens); +} + + +inline char *cstring_array_get_phrase(tokenized_string_t *str, char_array *phrase_tokens, phrase_t phrase) { + return cstring_array_get_phrase_with_char_array(str->strings, phrase_tokens, phrase); +} + + diff --git a/src/trie_search.h b/src/trie_search.h index b5e5ddb2..b2934dee 100644 --- a/src/trie_search.h +++ b/src/trie_search.h @@ -40,6 +40,7 @@ phrase_t trie_search_prefixes_from_index(trie_t *self, char *word, size_t len, u phrase_t trie_search_prefixes_from_index_get_prefix_char(trie_t *self, char *word, size_t len, uint32_t start_node_id); phrase_t trie_search_prefixes(trie_t *self, char *word, size_t len); - +char *cstring_array_get_phrase_with_char_array(cstring_array *str, char_array *phrase_tokens, phrase_t phrase); +char *cstring_array_get_phrase(tokenized_string_t *str, char_array *phrase_tokens, phrase_t phrase); #endif