summaryrefslogtreecommitdiffstats
path: root/mduptab.h
blob: 5704e87fdfe46fb83d31fab5ef766df71c0ff2ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);