1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/hash.e,v 1.5 2011/05/16 16:21:57 william Exp $
19 */
20
21#ifndef _HASH_E_
22#define _HASH_E_
23
24#include "list.e"
25
26#define TG_HASH_SIZE_SMALL   251
27#define TG_HASH_SIZE_MEDIUM  509
28#define TG_HASH_SIZE_LARGE  2039
29
30typedef struct tagTgHash {
31   int num_buckets;
32   CVList *buckets;
33} TgHash;
34
35#ifdef _INCLUDE_FROM_HASH_C_
36#undef extern
37#define extern
38#endif /*_INCLUDE_FROM_HASH_C_*/
39
40extern void	CleanUpHash ARGS_DECL((TgHash*));
41extern int	InitHash ARGS_DECL((TgHash*, int which));
42
43extern int	HashStoreInt ARGS_DECL((TgHash*, char *key, int key_sz,
44				int value));
45extern int	HashStoreStr ARGS_DECL((TgHash*, char *key, int key_sz,
46				char *value));
47extern int	HashLookUpInt ARGS_DECL((TgHash*, char *key, int key_sz,
48				int *pn_value_return));
49extern char	*HashLookUpStr ARGS_DECL((TgHash*, char *key, int key_sz));
50
51#ifdef _INCLUDE_FROM_HASH_C_
52#undef extern
53#ifndef _NO_RECURSIVE_EXTERN
54#define extern extern
55#endif /* ~_NO_RECURSIVE_EXTERN */
56#endif /*_INCLUDE_FROM_HASH_C_*/
57
58#endif /*_HASH_E_*/
59