added support for special media buttons on Amazon Fire TV remote control
[rocksndiamonds.git] / src / libgame / hash.h
index c8836fda09ed95becf261d02e8daa1324a0710a0..90c5896c7263681783161adddf18c62122562308 100644 (file)
@@ -1,15 +1,13 @@
-/***********************************************************
-* Artsoft Retro-Game Library                               *
-*----------------------------------------------------------*
-* (c) 1994-2006 Artsoft Entertainment                      *
-*               Holger Schemel                             *
-*               Detmolder Strasse 189                      *
-*               33604 Bielefeld                            *
-*               Germany                                    *
-*               e-mail: info@artsoft.org                   *
-*----------------------------------------------------------*
-* hash.h                                                   *
-***********************************************************/
+// ============================================================================
+// Artsoft Retro-Game Library
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+//                         Holger Schemel
+//                 info@artsoft.org
+//                 http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// hash.h
+// ============================================================================
 
 /*
  * Copyright (C) 2002 Christopher Clark <firstname.lastname@cl.cam.ac.uk>
 /*****************************************************************************/
 struct entry
 {
-    void *k, *v;
-    unsigned int h;
-    struct entry *next;
+  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 (*hashfn) (void *k);
-    int (*eqfn) (void *k1, void *k2);
+struct hashtable
+{
+  unsigned int tablelength;
+  struct entry **table;
+  unsigned int entrycount;
+  unsigned int loadlimit;
+  unsigned int (*hashfn) (void *k);
+  int (*eqfn) (void *k1, void *k2);
 };
 
 /*****************************************************************************/
 struct hashtable_itr
 {
-    struct hashtable *h;
-    struct entry *e;
-    unsigned int index;
+  struct hashtable *h;
+  struct entry *e;
+  unsigned int index;
 };
 
 
@@ -162,7 +161,7 @@ hashtable_insert(struct hashtable *h, void *k, void *v);
 #define DEFINE_HASHTABLE_INSERT(fnname, keytype, valuetype) \
 int fnname (struct hashtable *h, keytype *k, valuetype *v) \
 { \
-    return hashtable_insert(h,k,v); \
+  return hashtable_insert(h,k,v); \
 }
 
 /*****************************************************************************
@@ -181,7 +180,7 @@ hashtable_change(struct hashtable *h, void *k, void *v);
 #define DEFINE_HASHTABLE_CHANGE(fnname, keytype, valuetype) \
 int fnname (struct hashtable *h, keytype *k, valuetype *v) \
 { \
-    return hashtable_change(h,k,v); \
+  return hashtable_change(h,k,v); \
 }
 
 /*****************************************************************************
@@ -199,7 +198,7 @@ hashtable_search(struct hashtable *h, void *k);
 #define DEFINE_HASHTABLE_SEARCH(fnname, keytype, valuetype) \
 valuetype * fnname (struct hashtable *h, keytype *k) \
 { \
-    return (valuetype *) (hashtable_search(h,k)); \
+  return (valuetype *) (hashtable_search(h,k)); \
 }
 
 /*****************************************************************************
@@ -217,7 +216,7 @@ hashtable_remove(struct hashtable *h, void *k);
 #define DEFINE_HASHTABLE_REMOVE(fnname, keytype, valuetype) \
 valuetype * fnname (struct hashtable *h, keytype *k) \
 { \
-    return (valuetype *) (hashtable_remove(h,k)); \
+  return (valuetype *) (hashtable_remove(h,k)); \
 }
 
 
@@ -250,23 +249,16 @@ struct hashtable_itr *
 hashtable_iterator(struct hashtable *h);
 
 /*****************************************************************************/
-/* hashtable_iterator_key
- * - return the value of the (key,value) pair at the current position */
+/* key - return the key of the (key,value) pair at the current position */
 
-extern inline void *
-hashtable_iterator_key(struct hashtable_itr *i)
-{
-    return i->e->k;
-}
+void *
+hashtable_iterator_key(struct hashtable_itr *i);
 
 /*****************************************************************************/
 /* value - return the value of the (key,value) pair at the current position */
 
-extern inline void *
-hashtable_iterator_value(struct hashtable_itr *i)
-{
-    return i->e->v;
-}
+void *
+hashtable_iterator_value(struct hashtable_itr *i);
 
 /*****************************************************************************/
 /* advance - advance the iterator to the next element