/* evtgen string hash headers. Copyright (C) 2003 Julien Olivain and LSV, CNRS UMR 8643 & ENS Cachan. This file is part of evtgen. evtgen 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; either version 2, or (at your option) any later version. evtgen 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 evtgen; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Copyright (C) 2004 Tommi Rantala * * Modified for usage in Pacman. */ /* ** strhash.h -- */ #ifndef STRHASH_H #define STRHASH_H #define DEFAULT_STRHASH_FUNCTION strhash_pjw typedef struct strhash_elmt_s strhash_elmt_t; struct strhash_elmt_s { char *key; char *data; strhash_elmt_t *next; }; typedef unsigned long (*strhashfunc_t)(char *key); typedef struct strhash_s strhash_t; struct strhash_s { strhash_elmt_t **htable; size_t size; int elmts; strhashfunc_t hash; }; void strhash_add_list(strhash_t *hash, PMList* list); strhash_t *new_strhash(size_t hsize); void free_strhash(strhash_t *hash); void clear_strhash(strhash_t *hash); void strhash_remove(strhash_t *hash, char *key); void strhash_add(strhash_t *hash, char *key, char *data); int strhash_isin(strhash_t *hash, char* key); char* strhash_get(strhash_t *hash, char* key); int strhash_collide_count(strhash_t *hash); unsigned long strhash_pjw(char *key); #endif /* STRHASH_H */