ston testing
[henge/apc.git] / ston / ston_ht.h
index a0bf05f..11454b3 100644 (file)
 #ifndef STON_FUNC
 #define STON_FUNC STON_FUNC_STATIC STON_FUNC_INLINE
 #endif //STON_FUNC
-#ifndef STON_NOSTDIO
+#ifdef STON_HT_FREAD
 #include <stdio.h>
 #include <string.h> //memcpy
+#include <errno.h>
 #include <alloca.h>
-#endif //STON_NOSTDIO
+STON_FUNC_STATIC
+STON_FUNC_NOINLINE
+ston_ht   ston_ht32_fread(FILE*,long,void*(*)(size_t));
+#else
+#include <stddef.h>
+#endif //STON_HT_FREAD
 #include <stdint.h>
 /* STON Hashtable Structure
    Hashtables are stored as dynamically sized two dimensional arrays
@@ -61,9 +67,6 @@ typedef struct ston_ht_header_t
 
 STON_FUNC
 size_t    ston_up2pow(size_t);
-STON_FUNC_STATIC
-STON_FUNC_NOINLINE
-ston_ht   ston_ht32_fread(FILE*,long,void*(*)(size_t));
 STON_FUNC
 ston_ht   ston_ht32_create(uint16_t,size_t,uint8_t,void*(*)(size_t));
 STON_FUNC
@@ -71,7 +74,7 @@ uint32_t* ston_ht32_row(ston_ht,uint32_t);
 STON_FUNC
 uint32_t  ston_ht32_insert(ston_ht,uint32_t,uint16_t,uint32_t);
 
-#define   ston_ht32_new(_COL,_N,_F,_FN) ston_ht32_create(_COLS,ston_up2pow(_N << 1),_F,_FN)
+#define   ston_ht32_new(_COL,_N,_F,_FN) ston_ht32_create(_COL,ston_up2pow(_N << 1),_F,_FN)
 #define   ston_ht32_entry(_HT,_KEY,_COL)        (ston_ht32_row(_HT,_KEY) + _COL)
 #define   ston_ht32_insertx(_HT,_KEY,_COL,_VAL) *ston_ht32_entry(_HT,_KEY,_COL) = _VAL
 #define   ston_ht_size(_HT)            ((_HT)->ht_columns << (_HT)->ht_2pow)
@@ -123,7 +126,7 @@ ston_ht ston_ht32_create
   return ht;
 }
 
-#ifndef STON_NO_STDIO
+#ifdef STON_HT_FREAD
 /* Reads a 32-bit hash table out of the provided file at the provide fpos, into
    a buffer allocated by alloc_fn.  Memory is allocated to the stack until the
    entire structure is verified, and all file operations are finished.