Browse Source

Backport from xs.

default 1 year ago
parent
commit
5b3c7d45bb
3 changed files with 20 additions and 16 deletions
  1. 18 0
      xs.h
  2. 1 15
      xs_set.h
  3. 1 1
      xs_version.h

+ 18 - 0
xs.h

@@ -122,6 +122,7 @@ xs_str *xs_hex_enc(const xs_val *data, int size);
 xs_val *xs_hex_dec(const xs_str *hex, int *size);
 int xs_is_hex(const char *str);
 
+unsigned int xs_hash_func(const char *data, int size);
 
 #ifdef XS_ASSERT
 #include <assert.h>
@@ -136,6 +137,8 @@ extern xs_val xs_stock_null[];
 extern xs_val xs_stock_true[];
 extern xs_val xs_stock_false[];
 
+#define xs_return(v) xs_val *__r = v; v = NULL; return __r
+
 
 #ifdef XS_IMPLEMENTATION
 
@@ -1186,6 +1189,21 @@ int xs_is_hex(const char *str)
 }
 
 
+unsigned int xs_hash_func(const char *data, int size)
+/* a general purpose hashing function */
+{
+    unsigned int hash = 0x666;
+    int n;
+
+    for (n = 0; n < size; n++) {
+        hash ^= data[n];
+        hash *= 111111111;
+    }
+
+    return hash ^ hash >> 16;
+}
+
+
 #endif /* XS_IMPLEMENTATION */
 
 #endif /* _XS_H */

+ 1 - 15
xs_set.h

@@ -51,26 +51,12 @@ void xs_set_free(xs_set *s)
 }
 
 
-static unsigned int _calc_hash(const char *data, int size)
-{
-    unsigned int hash = 0x666;
-    int n;
-
-    for (n = 0; n < size; n++) {
-        hash ^= data[n];
-        hash *= 111111111;
-    }
-
-    return hash ^ hash >> 16;
-}
-
-
 static int _store_hash(xs_set *s, const char *data, int value)
 {
     unsigned int hash, i;
     int sz = xs_size(data);
 
-    hash = _calc_hash(data, sz);
+    hash = xs_hash_func(data, sz);
 
     while (s->hash[(i = hash % s->elems)]) {
         /* get the pointer to the stored data */

+ 1 - 1
xs_version.h

@@ -1 +1 @@
-/* 567d70ecbe16b2358873b8bc971a6e092c3c0074 */
+/* dada4e932155b621ab6d66820f62ea9cf09cbb70 */