[expansion] Adding the ability to search address dictionary phrases with a NULL language, will return phrases in any language

This commit is contained in:
Al
2015-09-15 13:24:53 -04:00
parent c47ff1b113
commit e122824448
6 changed files with 17 additions and 12 deletions

View File

@@ -140,6 +140,10 @@ exit_key_created:
}
static trie_prefix_result_t get_language_prefix(char *lang) {
if (lang == NULL) {
return ROOT_PREFIX_RESULT;
}
trie_prefix_result_t prefix = trie_get_prefix(address_dict->trie, lang);
if (prefix.node_id == NULL_NODE_ID) {
@@ -156,7 +160,7 @@ static trie_prefix_result_t get_language_prefix(char *lang) {
}
phrase_array *search_address_dictionaries(char *str, char *lang) {
if (str == NULL || lang == NULL) return NULL;
if (str == NULL) return NULL;
trie_prefix_result_t prefix = get_language_prefix(lang);
@@ -168,7 +172,7 @@ phrase_array *search_address_dictionaries(char *str, char *lang) {
}
phrase_array *search_address_dictionaries_tokens(char *str, token_array *tokens, char *lang) {
if (str == NULL || lang == NULL) return NULL;
if (str == NULL) return NULL;
trie_prefix_result_t prefix = get_language_prefix(lang);
@@ -180,7 +184,7 @@ phrase_array *search_address_dictionaries_tokens(char *str, token_array *tokens,
}
phrase_t search_address_dictionaries_prefix(char *str, size_t len, char *lang) {
if (str == NULL || lang == NULL) return NULL_PHRASE;
if (str == NULL) return NULL_PHRASE;
trie_prefix_result_t prefix = get_language_prefix(lang);
@@ -193,7 +197,7 @@ phrase_t search_address_dictionaries_prefix(char *str, size_t len, char *lang) {
}
phrase_t search_address_dictionaries_suffix(char *str, size_t len, char *lang) {
if (str == NULL || lang == NULL) return NULL_PHRASE;
if (str == NULL) return NULL_PHRASE;
trie_prefix_result_t prefix = get_language_prefix(lang);
@@ -512,8 +516,8 @@ bool address_dictionary_save(char *path) {
return ret_val;
}
inline bool address_dictionary_module_setup(void) {
return address_dictionary_load(DEFAULT_ADDRESS_EXPANSION_PATH);
inline bool address_dictionary_module_setup(char *filename) {
return address_dictionary_load(filename == NULL ? DEFAULT_ADDRESS_EXPANSION_PATH: filename);
}
void address_dictionary_module_teardown(void) {

View File

@@ -75,7 +75,7 @@ void address_dictionary_destroy(address_dictionary_t *self);
bool address_dictionary_load(char *path);
bool address_dictionary_save(char *path);
bool address_dictionary_module_setup(void);
bool address_dictionary_module_setup(char *filename);
void address_dictionary_module_teardown(void);

View File

@@ -163,8 +163,8 @@ inline geonames_generic_t *geodb_get(char *key) {
}
bool geodb_module_setup(char *dir) {
if (db == NULL && dir != NULL) {
return geodb_load(dir);
if (db == NULL) {
return geodb_load(dir == NULL ? LIBPOSTAL_GEODB_DIR : dir);
}
return false;

View File

@@ -563,11 +563,11 @@ bool numex_table_save(char *filename) {
Must be called only once before the module can be used
*/
bool numex_module_setup(char *filename) {
if (filename == NULL) {
if (filename == NULL && numex_table == NULL) {
numex_table = numex_table_new();
return numex_table != NULL;
} else if (numex_table == NULL) {
return numex_table_load(filename);
return numex_table_load(filename == NULL ? DEFAULT_NUMEX_PATH : filename);
}
return false;
}

View File

@@ -1909,7 +1909,7 @@ bool transliteration_module_setup(char *filename) {
trans_table = transliteration_table_new();
return true;
} else if (trans_table == NULL) {
return transliteration_table_load(filename);
return transliteration_table_load(filename == NULL ? DEFAULT_TRANSLITERATION_PATH : filename);
}
return false;

View File

@@ -129,6 +129,7 @@ typedef struct trie_prefix_result {
size_t tail_pos;
} trie_prefix_result_t;
#define ROOT_PREFIX_RESULT (trie_prefix_result_t) {ROOT_NODE_ID, 0}
#define NULL_PREFIX_RESULT (trie_prefix_result_t) {NULL_NODE_ID, 0}
trie_prefix_result_t trie_get_prefix(trie_t *self, char *key);