#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
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
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)
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.