1/*-
2 * Copyright (c) 2004,2008 Oracle.  All rights reserved.
3 *
4 * http://www.apache.org/licenses/LICENSE-2.0.txt
5 *
6 * authors: Thies C. Arntzen <thies@php.net>
7 *	    Sterling Hughes <sterling@php.net>
8 *	    George Schlossnagle <george@omniti.com>
9 */
10
11#ifndef _MM_HASH_H
12#define _MM_HASH_H
13#include "mm.h"
14
15typedef void (*MM_HashDtor)(void *);
16
17typedef struct _MM_Bucket {
18	struct _MM_Bucket *next;
19	char *key;
20	int length;
21	unsigned int hash;
22	void *data;
23} MM_Bucket;
24
25#define MM_HASH_SIZE 1009
26typedef struct _Hash {
27	 MM_Bucket *buckets[ MM_HASH_SIZE ];
28	 MM *mm;
29	 MM_HashDtor dtor;
30	 int nElements;
31} MM_Hash;
32
33MM_Hash *mm_hash_new(MM *, MM_HashDtor);
34void mm_hash_free(MM_Hash *table);
35void *mm_hash_find(MM_Hash *table, const void *key, int length);
36void mm_hash_add(MM_Hash *table, char *key, int length, void *data);
37void mm_hash_delete(MM_Hash *table, char *key, int length);
38void mm_hash_update(MM_Hash *table, char *key, int length, void *data);
39#endif
40
41/*
42Local variables:
43tab-width: 4
44c-basic-offset: 4
45End:
46vim600: noet sw=4 ts=4 fdm=marker
47vim<600: noet sw=4 ts=4
48*/
49