Mercurial > repos > blastem
diff tern.h @ 429:f6fdde540791
Added ternary tree implementation and a simple test program for it
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 09 Jul 2013 20:51:42 -0700 |
parents | |
children | 440efd7d27a9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tern.h Tue Jul 09 20:51:42 2013 -0700 @@ -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_