1*d5c9a868SElliott Hughes /* Copyright 1996,1997,2001,2002,2009 Alain Knaff. 2*d5c9a868SElliott Hughes * This file is part of mtools. 3*d5c9a868SElliott Hughes * 4*d5c9a868SElliott Hughes * Mtools is free software: you can redistribute it and/or modify 5*d5c9a868SElliott Hughes * it under the terms of the GNU General Public License as published by 6*d5c9a868SElliott Hughes * the Free Software Foundation, either version 3 of the License, or 7*d5c9a868SElliott Hughes * (at your option) any later version. 8*d5c9a868SElliott Hughes * 9*d5c9a868SElliott Hughes * Mtools is distributed in the hope that it will be useful, 10*d5c9a868SElliott Hughes * but WITHOUT ANY WARRANTY; without even the implied warranty of 11*d5c9a868SElliott Hughes * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*d5c9a868SElliott Hughes * GNU General Public License for more details. 13*d5c9a868SElliott Hughes * 14*d5c9a868SElliott Hughes * You should have received a copy of the GNU General Public License 15*d5c9a868SElliott Hughes * along with Mtools. If not, see <http://www.gnu.org/licenses/>. 16*d5c9a868SElliott Hughes * 17*d5c9a868SElliott Hughes * hashtable 18*d5c9a868SElliott Hughes */ 19*d5c9a868SElliott Hughes 20*d5c9a868SElliott Hughes typedef struct hashtable T_HashTable; 21*d5c9a868SElliott Hughes typedef void *T_HashTableEl; 22*d5c9a868SElliott Hughes typedef uint32_t (*T_HashFunc)(void *); 23*d5c9a868SElliott Hughes typedef int (*T_ComparFunc)(void *, void *); 24*d5c9a868SElliott Hughes 25*d5c9a868SElliott Hughes 26*d5c9a868SElliott Hughes int make_ht(T_HashFunc f1, T_HashFunc f2, T_ComparFunc c, size_t size, 27*d5c9a868SElliott Hughes T_HashTable **H); 28*d5c9a868SElliott Hughes int hash_add(T_HashTable *H, T_HashTableEl *E, size_t *hint); 29*d5c9a868SElliott Hughes int hash_remove(T_HashTable *H, T_HashTableEl *E, size_t hint); 30*d5c9a868SElliott Hughes int hash_lookup(T_HashTable *H, T_HashTableEl *E, T_HashTableEl **E2, 31*d5c9a868SElliott Hughes size_t *hint); 32*d5c9a868SElliott Hughes int free_ht(T_HashTable *H, T_HashFunc entry_free); 33*d5c9a868SElliott Hughes 34