libclamav/table.h
e3aaff8e
 /*
2023340a
  *  Copyright (C) 2007-2008 Sourcefire, Inc.
  *
  *  Authors: Nigel Horne
e3aaff8e
  *
  *  This program is free software; you can redistribute it and/or modify
2023340a
  *  it under the terms of the GNU General Public License version 2 as
  *  published by the Free Software Foundation.
e3aaff8e
  *
  *  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;
 	struct	tableEntry	*next;
b5231f5f
 	int	value;
e3aaff8e
 } 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);
93928eab
 void	tableIterate(table_t *table, void(*callback)(char *key, int value, void *arg), void *arg);