summaryrefslogtreecommitdiff
path: root/code/ecp/htable/hashtable_private.h
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2018-01-11 21:28:22 +0100
committerUros Majstorovic <majstor@majstor.org>2018-01-11 21:28:22 +0100
commit0d0e9facfcea3cf96da3b63285865182fdd5477e (patch)
treecca42e7aab184cad981c794073a4376aa2616193 /code/ecp/htable/hashtable_private.h
parent05e11f491b84a110b9ca08612df370b91e9bdcbc (diff)
refatoring dirs
Diffstat (limited to 'code/ecp/htable/hashtable_private.h')
-rwxr-xr-xcode/ecp/htable/hashtable_private.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/code/ecp/htable/hashtable_private.h b/code/ecp/htable/hashtable_private.h
new file mode 100755
index 0000000..2330b00
--- /dev/null
+++ b/code/ecp/htable/hashtable_private.h
@@ -0,0 +1,84 @@
+/* Copyright (C) 2002, 2004 Christopher Clark <firstname.lastname@cl.cam.ac.uk> */
+
+#ifndef __HASHTABLE_PRIVATE_CWC22_H__
+#define __HASHTABLE_PRIVATE_CWC22_H__
+
+#include "hashtable.h"
+
+/*****************************************************************************/
+struct entry
+{
+ void *k, *v;
+ unsigned int h;
+ struct entry *next;
+};
+
+struct hashtable {
+ unsigned int tablelength;
+ struct entry **table;
+ unsigned int entrycount;
+ unsigned int loadlimit;
+ unsigned int primeindex;
+ unsigned int (*fn_hash) (void *k);
+ int (*fn_eq) (void *k1, void *k2);
+ void *(*fn_malloc) (size_t);
+ void *(*fn_realloc) (void *,size_t);
+ void (*fn_free) (void *);
+ void (*fn_free_k) (void *);
+ void (*fn_free_v) (void *);
+};
+
+/*****************************************************************************/
+unsigned int
+hashtable_hash(struct hashtable *h, void *k);
+
+/*****************************************************************************/
+/* indexFor */
+static inline unsigned int
+indexFor(unsigned int tablelength, unsigned int hashvalue) {
+ return (hashvalue % tablelength);
+};
+
+/* Only works if tablelength == 2^N */
+/*
+static inline unsigned int
+indexFor(unsigned int tablelength, unsigned int hashvalue)
+{
+ return (hashvalue & (tablelength - 1u));
+}
+*/
+
+#endif /* __HASHTABLE_PRIVATE_CWC22_H__*/
+
+/*
+ * Copyright (c) 2002, Christopher Clark
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of the original author; nor the names of any contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/