diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-21 19:57:31 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-22 12:43:06 +0100 |
commit | 329e3092542067f3a99fda328a8118e8d024e054 (patch) | |
tree | c1ccf987b3a616a46405cd7f788b4bc78767f7bf /trie.h | |
parent | Fix c++ compile warnings. (diff) | |
download | calp-329e3092542067f3a99fda328a8118e8d024e054.tar.gz calp-329e3092542067f3a99fda328a8118e8d024e054.tar.xz |
Build, but doesn't link.
Diffstat (limited to 'trie.h')
-rw-r--r-- | trie.h | 50 |
1 files changed, 25 insertions, 25 deletions
@@ -5,42 +5,42 @@ #include "macro.h" -#define TRIE(T) TEMPL(trie, T) -#define TRIE_NODE(T) TEMPL(trie_node, T) +// #define TRIE(T) TEMPL(trie, T) +// #define TRIE_NODE(T) TEMPL(trie_node, T) -#endif /* TRIE_H */ -#ifdef TYPE +// #endif /* TRIE_H */ +// #ifdef TYPE -typedef struct TRIE_NODE(TYPE) { +template<class T> struct trie_node { char c; - TYPE* value; - struct TRIE_NODE(TYPE)* next; - struct TRIE_NODE(TYPE)* child; -} TRIE_NODE(TYPE); + T* value; + trie_node* next; + trie_node* child; -typedef struct { - TRIE_NODE(TYPE)* root; -} TRIE(TYPE); + trie_node (char c); + trie_node (char c, trie_node* next, trie_node* child); + ~trie_node (); +}; -INIT_F ( TRIE(TYPE) ); +template<class T> struct trie { + trie_node<T>* root; -INIT_F (TRIE_NODE(TYPE), char c); + trie (); + ~trie(); -INIT_F (TRIE_NODE(TYPE), - char c, TRIE_NODE(TYPE)* next, TRIE_NODE(TYPE)* child ); + int push (char* key, T* val); + T* get (char* key); -int PUSH(TRIE(TYPE)) ( TRIE(TYPE)* trie, char* key, TYPE* val ); + int empty (); +}; -TYPE* GET(TRIE(TYPE)) ( TRIE(TYPE)* trie, char* key ); +// FMT_F(TRIE_NODE(TYPE)); +// FMT_F(TRIE(TYPE)); -FREE_F(TRIE_NODE(TYPE)); +extern template struct trie<content_line>; +extern template struct trie_node<content_line>; -FREE_F(TRIE(TYPE)); - -int EMPTY(TRIE(TYPE))(TRIE(TYPE)*); - -FMT_F(TRIE_NODE(TYPE)); -FMT_F(TRIE(TYPE)); +#include "trie.c.inc" #endif /* TYPE */ |