summaryrefslogtreecommitdiffstats
path: root/strduptab.h
diff options
context:
space:
mode:
Diffstat (limited to 'strduptab.h')
-rw-r--r--strduptab.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/strduptab.h b/strduptab.h
new file mode 100644
index 0000000..2bbc67c
--- /dev/null
+++ b/strduptab.h
@@ -0,0 +1,13 @@
+/* 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 pointer". Will try to insert the
+ * string in the table. If the same string was already there, it will
+ * return a pointer to that string, otherwise it will insert a copy of
+ * the new string. */
+
+struct stringduptable {
+ size_t n,a;
+ const char** s;
+};
+
+const char* strduptab_add(struct stringduptable* t,const char* s);