2
// Tiny implementation of strings. Avoids linking in all of std::string
12
ministring() : used(0), buffer(NULL), bufferSize(0) {}
13
~ministring() { if (buffer) free(buffer); }
15
char *c_str() { return buffer; }
16
int size() { return used; }
19
used = 0; // keep the buffer alive as an optimization, just resize
22
ministring& operator+=(const char *s) {
24
if (used + len + 2 > bufferSize) {
25
// try to avoid frequent reallocations
26
bufferSize = 2*(bufferSize + len);
27
bufferSize += 1024 - bufferSize % 1024;
28
buffer = (char*)(buffer ? realloc(buffer, bufferSize) : malloc(bufferSize));
30
strcpy(buffer + used, s);