summaryrefslogtreecommitdiff
path: root/tern.c
diff options
context:
space:
mode:
Diffstat (limited to 'tern.c')
-rw-r--r--tern.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/tern.c b/tern.c
index c0d3abf..7e60a22 100644
--- a/tern.c
+++ b/tern.c
@@ -63,6 +63,23 @@ int tern_find(tern_node * head, char * key, tern_val *ret)
return 0;
}
+tern_node * tern_find_prefix(tern_node * head, char * key)
+{
+ tern_node * cur = head;
+ while (cur && *key)
+ {
+ if (cur->el == *key) {
+ cur = cur->straight.next;
+ key++;
+ } else if (*key < cur->el) {
+ cur = cur->left;
+ } else {
+ cur = cur->right;
+ }
+ }
+ return cur;
+}
+
intptr_t tern_find_int(tern_node * head, char * key, intptr_t def)
{
tern_val ret;