summaryrefslogtreecommitdiff
path: root/tern.h
diff options
context:
space:
mode:
Diffstat (limited to 'tern.h')
-rw-r--r--tern.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/tern.h b/tern.h
new file mode 100644
index 0000000..0c5935a
--- /dev/null
+++ b/tern.h
@@ -0,0 +1,28 @@
+#ifndef TERN_H_
+#define TERN_H_
+
+#include <stdint.h>
+
+typedef union {
+ void *ptrval;
+ intptr_t intval;
+} tern_val;
+
+typedef struct tern_node {
+ struct tern_node *left;
+ union {
+ struct tern_node *next;
+ tern_val value;
+ } straight;
+ struct tern_node *right;
+ char el;
+} tern_node;
+
+tern_node * tern_insert(tern_node * head, char * key, tern_val value);
+int tern_find(tern_node * head, char * key, tern_val *ret);
+intptr_t tern_find_int(tern_node * head, char * key, intptr_t def);
+tern_node * tern_insert_int(tern_node * head, char * key, intptr_t value);
+void * tern_find_ptr(tern_node * head, char * key);
+tern_node * tern_insert_ptr(tern_node * head, char * key, void * value);
+
+#endif //TERN_H_