Merge branch 'master' of dragon:/home/dav/yacasl2
[YACASL2.git] / include / hash.h
1 #ifndef YACASL2_HASH_INCLUDED
2 #define YACASL2_HASH_INCLUDED
3
4 #ifndef ARRAYSIZE
5 #define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
6 #endif
7
8 /* ハッシュ共用体の型 */
9 typedef enum {
10     CHARS = 0,
11     INT = 1,
12 } UTYPE;
13
14 /* ハッシュ共用体 */
15 typedef struct {
16     UTYPE type;
17     union {
18         char *s;
19         int i;
20     } val;
21 } HKEY;
22
23 /* ハッシュ表のサイズを決めるため、引数の数値未満で最大の素数を返す */
24 int hashtabsize(int size);
25
26 /* ハッシュ値を取得する */
27 unsigned hash(int keyc, HKEY *keyv[], int tabsize);
28
29 #endif