Sha256: 72637b8f84aa69a46e2e837fc27b56106777305d75cd6e4c1451bb6bcfbe6d01
Contents?: true
Size: 851 Bytes
Versions: 8
Compression:
Stored size: 851 Bytes
Contents
// Tiny implementation of strings. Avoids linking in all of std::string #include <stdlib.h> #include <string.h> class ministring { int used; char *buffer; int bufferSize; public: ministring() : used(0), buffer(NULL), bufferSize(0) {} ~ministring() { if (buffer) free(buffer); } char *c_str() { return buffer; } int size() { return used; } void clear() { used = 0; // keep the buffer alive as an optimization, just resize } ministring& operator+=(const char *s) { int len = strlen(s); if (used + len + 2 > bufferSize) { // try to avoid frequent reallocations bufferSize = 2*(bufferSize + len); bufferSize += 1024 - bufferSize % 1024; buffer = (char*)(buffer ? realloc(buffer, bufferSize) : malloc(bufferSize)); } strcpy(buffer + used, s); used += len; return *this; } };
Version data entries
8 entries across 8 versions & 1 rubygems