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