summaryrefslogtreecommitdiffstats
path: root/hash.h
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>1998-06-08 09:16:03 +0000
committerThomas Roessler <roessler@does-not-exist.org>1998-06-08 09:16:03 +0000
commit1a5381e07e97fe482c2b3a7c75f99938f0b105d4 (patch)
treeb4fa4088bbbf5fc9217ee6f87ab60034175e6899 /hash.h
Initial revision
Diffstat (limited to 'hash.h')
-rw-r--r--hash.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/hash.h b/hash.h
new file mode 100644
index 00000000..a0757c6b
--- /dev/null
+++ b/hash.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
+ *
+ * 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
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+struct hash_elem
+{
+ const char *key;
+ void *data;
+ struct hash_elem *next;
+};
+
+typedef struct
+{
+ int nelem;
+ struct hash_elem **table;
+}
+HASH;
+
+#define hash_find(table, key) hash_find_hash(table, hash_string ((unsigned char *)key, table->nelem), key)
+
+#define hash_delete(table,key,data,destroy) hash_delete_hash(table, hash_string ((unsigned char *)key, table->nelem), key, data, destroy)
+
+HASH *hash_create (int nelem);
+int hash_string (const unsigned char *s, int n);
+int hash_insert (HASH * table, const char *key, void *data, int allow_dup);
+void *hash_find_hash (const HASH * table, int hash, const char *key);
+void hash_delete_hash (HASH * table, int hash, const char *key, const void *data,
+ void (*destroy) (void *));
+void hash_destroy (HASH ** hash, void (*destroy) (void *));