int main() { void *prm; char *v; cp_trie *t = cp_trie_create(0); if (t == NULL) { printf("can\'t create trie\n"); exit(1); } cp_trie_add(t, "ferguson", "xxx"); cp_trie_add(t, "fermat", "yyy"); cp_trie_prefix_match(t, "ferry", &prm); v = prm; printf("prefix match for ferry: %s\n", v ? v : "none"); v = cp_trie_exact_match(t, "ferry"); printf("exact match for ferry: %s\n", v ? v : "none"); cp_trie_prefix_match(t, "fergusonst", &prm); v = prm; printf("prefix match for fergusonst: %s\n", v ? v : "none"); v = cp_trie_exact_match(t, "fergusonst"); printf("exact match for fergusonst: %s\n", v ? v : "none"); cp_trie_destroy(t); return 0; }
ds_hash_table_t *ds_trie_mgmt_find(char *key, hash_tbl_props_t* htp) { ds_hash_table_t *obj = NULL; cp_trie_prefix_match(htp->trie, key, (void **)&obj); if (!obj) { return NULL; } return obj; }
int32_t ds_trie_mgmt_remove(char *key, hash_tbl_props_t* htp){ ds_hash_table_t *obj = NULL; cp_trie_prefix_match(htp->trie, key, (void **) &obj); if (!obj) { return -1; } cp_trie_remove(htp->trie, key, (void **)&obj); glob_ds_hash_table_mgmt_entries--; return 0; }