libclamav/table.h
e3aaff8e
 /*
  *  Copyright (C) 2002 Nigel Horne <njh@bandsman.co.uk>
  *
  *  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; either 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, write to the Free Software
48b7b4a7
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  *  MA 02110-1301, USA.
e3aaff8e
  */
 
 /*
  * Hashtable mapping strings to numbers
  */
 typedef	struct	tableEntry {
 	char	*key;
 	int	value;
 	struct	tableEntry	*next;
 } tableEntry;
 
 typedef struct table {
 	tableEntry	*tableHead;
 	tableEntry	*tableLast;
b650cc71
 	unsigned	int	flags;
e3aaff8e
 } table_t;
 
b650cc71
 #define	TABLE_HAS_DELETED_ENTRIES	0x1
 
e3aaff8e
 struct	table	*tableCreate(void);
 void	tableDestroy(table_t *table);
 int	tableInsert(table_t *table, const char *key, int value);
23a5e3b7
 int	tableUpdate(table_t *table, const char *key, int new_value);
e3aaff8e
 int	tableFind(const table_t *table, const char *key);
b650cc71
 void	tableRemove(table_t *table, const char *key);
 void	tableIterate(table_t *table, void(*callback)(char *key, int value));