diff options
Diffstat (limited to 'mduptab.h')
-rw-r--r-- | mduptab.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mduptab.h b/mduptab.h new file mode 100644 index 0000000..5704e87 --- /dev/null +++ b/mduptab.h @@ -0,0 +1,19 @@ +/* save memory for constant strings by keeping a list of the ones that + * we already saw and not allocating memory for each new one. The only + * API is "add string and return offset". The offset is relative to the + * root of the pstorage_t. Will try to insert the string in the table. + * If the same string was already there, it will return offset of that + * string, otherwise it will insert a copy of the new string. */ + +#include "mstorage.h" + +typedef struct mduptable { + mstorage_t table,strings; + mstorage_t* Strings; +} mduptab_t; + +void mduptab_init(mduptab_t* t); +void mduptab_init_reuse(mduptab_t* t,mstorage_t* s); +long mduptab_add(mduptab_t* t,const char* s,size_t len); +long mduptab_adds(mduptab_t* t,const char* s); +void mduptab_reset(mduptab_t* t); |