| /* Copyright (C) 1995-2014 Free Software Foundation, Inc. |
| This file is part of the GNU C Library. |
| Contributed by Ulrich Drepper <drepper@gnu.org>, 1995. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published |
| by the Free Software Foundation; version 2 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, see <http://www.gnu.org/licenses/>. */ |
| |
| #ifndef _SIMPLE_HASH_H |
| #define _SIMPLE_HASH_H |
| |
| #include <inttypes.h> |
| #include <obstack.h> |
| #include <stdint.h> |
| |
| typedef struct hash_table { |
| unsigned long int size; |
| unsigned long int filled; |
| void *first; |
| void *table; |
| struct obstack mem_pool; |
| } hash_table; |
| |
| extern int init_hash(hash_table *htab, unsigned long int init_size) __THROW; |
| extern int delete_hash(hash_table *htab) __THROW; |
| extern int insert_entry(hash_table *htab, const void *key, size_t keylen, |
| void *data) __THROW; |
| extern int find_entry(const hash_table *htab, const void *key, size_t keylen, |
| void **result) __THROW; |
| extern int set_entry(hash_table *htab, const void *key, size_t keylen, |
| void *newval) __THROW; |
| |
| extern int iterate_table(const hash_table *htab, void **ptr, const void **key, |
| size_t *keylen, void **data) __THROW; |
| |
| extern uint32_t compute_hashval(const void *key, size_t keylen) __THROW; |
| extern unsigned long int next_prime(unsigned long int seed) __THROW; |
| |
| #endif /* simple-hash.h */ |