Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Related Pages

hi_util_kmap.h

Go to the documentation of this file.
00001 /*
00002 *   kmap.h
00003 *
00004 *   Keyword Trie based Map Table
00005 *
00006 *   Copyright(C) 2002 Marc A Norton
00007 *
00008 */
00009 
00010 #ifndef KTRIE_H
00011 #define KTRIE_H
00012 
00013 #define ALPHABET_SIZE 256
00014 
00015 
00016 #ifdef WIN32
00017 
00018 #ifndef inline 
00019 #define inline __inline
00020 #endif
00021 
00022 #else
00023 
00024 #define inline
00025 
00026 #endif
00027 
00028 /*
00029 *
00030 */
00031 typedef struct _keynode {
00032 
00033   struct  _keynode * next;
00034 
00035   unsigned char * key;
00036   int             nkey;
00037   void          * userdata;  /* data associated with this pattern */
00038   
00039 } KEYNODE;
00040 
00041 /*
00042 *
00043 */
00044 typedef struct _kmapnode {
00045 
00046   int      nodechar;  /* node character */
00047 
00048   struct  _kmapnode * sibling; 
00049   struct  _kmapnode * child; 
00050 
00051   KEYNODE * knode;
00052 
00053 } KMAPNODE;
00054 
00055 /*
00056 *
00057 */
00058 typedef struct _kmap {
00059 
00060   KMAPNODE * root[256];  /* KTrie nodes */
00061 
00062   KEYNODE  * keylist; // list of key+data pairs
00063   KEYNODE  * keynext; // findfirst/findnext node
00064 
00065   void      (*userfree)(void*p);  // fcn to free user data
00066  
00067   int        nchars; // # character nodes
00068 
00069   int        nocase;
00070 
00071 } KMAP;
00072 
00073 /*
00074 *  PROTOTYPES
00075 */
00076 KMAP * KMapNew ( void (*userfree)(void*p) );
00077 void   KMapSetNoCase( KMAP * km, int flag );
00078 int    KMapAdd ( KMAP * km, void * key, int ksize, void * userdata );
00079 void * KMapFind( KMAP * km, void * key, int ksize );
00080 void * KMapFindFirst( KMAP * km );
00081 void * KMapFindNext ( KMAP * km );
00082 KEYNODE * KMapFindFirstKey( KMAP * km );
00083 KEYNODE * KMapFindNextKey ( KMAP * km );
00084 void KMapDelete(KMAP *km);
00085 
00086 #endif
00087 
00088 

Generated on Sun May 14 14:51:15 2006 by  doxygen 1.4.2