Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

hashlib.h

Go to the documentation of this file.
00001 
00013 /* {{{ Initial headers */
00014 /*
00015  * $LastChangedDate: 2003-11-27 01:55:17 +0100 (Thu, 27 Nov 2003) $
00016  * $LastChangedRevision: 5 $
00017  * $LastChangedBy: ckruse $
00018  *
00019  */
00020 /* }}} */
00021 
00022 #ifndef __HASHLIB_H
00023 #define __HASHLIB_H
00024 
00025 typedef           u_int32_t  ub4;   
00026 typedef           u_char     ub1;   
00031 #define CF_HASH_SIZE 9
00032 
00038 #define CF_HASH_MAX_DOUBLES 5
00039 
00043 typedef void (*t_cf_hash_cleanup)(void *);
00044 
00048 typedef struct s_cf_hashentry {
00049   unsigned char *key; 
00050   size_t keylen; 
00051   int stat; 
00053   void *data; 
00055   ub4 hashval; 
00061   struct s_cf_hashentry *next;
00062 
00067   struct s_cf_hashentry *prev;
00068 } t_cf_hash_entry;
00069 
00074 typedef struct s_cf_hash {
00081   ub4 tablesize;
00082 
00087   t_cf_hash_cleanup destroy;
00088 
00093   t_cf_hash_entry **table;
00094 } t_cf_hash;
00095 
00099 #define hashsize(n) ((ub4)1<<(n))
00100 
00104 #define hashmask(n) (hashsize(n)-1)
00105 
00113 ub4 lookup(register ub1 *k, register ub4 length, register ub4 level);
00114 
00126 t_cf_hash *cf_hash_new(t_cf_hash_cleanup cl);
00127 
00141 int cf_hash_set(t_cf_hash *hsh,unsigned char *key,size_t keylen,void *data,size_t datalen);
00142 
00158 int cf_hash_set_static(t_cf_hash *hsh,unsigned char *key,size_t keylen,void *data);
00159 
00168 void *cf_hash_get(t_cf_hash *hsh,unsigned char *key,size_t keylen);
00169 
00177 int cf_hash_entry_delete(t_cf_hash *hsh,unsigned char *key,size_t keylen);
00178 
00185 void cf_hash_destroy(t_cf_hash *hsh);
00186 
00187 #endif

Generated on Sun Apr 25 16:37:39 2004 for Classic Forum by doxygen 1.3.5