00001
00011 #ifndef __CHASH_CHTBL_H__
00012 #define __CHASH_CHTBL_H__
00013
00014 #ifdef HAVE_CONFIG_H
00015 #include "config.h"
00016 #endif
00017
00018 #include <stdlib.h>
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include "threading.h"
00022 #include "errmanager.h"
00023 #include "linklist.h"
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00043 typedef struct CHTbl_ {
00045 T_RDWR rwlock;
00046
00048 int buckets;
00049
00051 int (*h)(const void *key);
00052
00054 List *table;
00055
00056 } CHTbl;
00057
00058
00059
00060
00061
00062
00063
00074 int chtbl_init(CHTbl *htbl, int buckets, int (*h)(const void *key), int
00075 (*match)(const void *obj1, const void *obj2), void (*destroy)(void *obj));
00076
00077
00083 void chtbl_destroy(CHTbl *htbl);
00084
00085
00092 int chtbl_size(CHTbl *htbl);
00093
00094
00104 int chtbl_insert(CHTbl *htbl, const void *data);
00105
00106
00114 int chtbl_remove(CHTbl *htbl, void **data);
00115
00116
00124 int chtbl_lookup(CHTbl *htbl, void **data);
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134 #endif
00135