#include "MString.h" #include "Log.h" #include #include namespace coreutils { MString::MString() { data = NULL; length = 0; cursor = NULL; } MString::MString(const char *data) { this->length = strlen(data); setSize(this->length); this->data = (char *)malloc(bufferSize); memcpy(this->data, data, length); cursor = this->data; } MString::MString(char *data, size_t length) { this->length = length; setSize(length); memcpy(this->data, data, length); cursor = this->data; } MString::MString(const char *data, size_t length) { this->length = length; setSize(length); memcpy(this->data, data, length); cursor = this->data; } MString::MString(const MString &mstring) { bufferSize = (mstring.length % 256) + 256; data = (char *)malloc(bufferSize); memcpy(data, mstring.data, mstring.length); length = mstring.length; cursor = data; // Log(LOG_DEBUG_2) << "MString Copy Constructor: "; } MString::MString(std::string data) { setSize(data.length()); memcpy(this->data, (char *)data.c_str(), data.length()); length = data.length(); cursor = this->data; } MString::~MString() { if(data) free(data); } int MString::write(char ch) { setSize(bufferSize + 1); data[length++] = ch; return 1; } int MString::write(ZString &value) { setSize(bufferSize + value.getLength()); memcpy(data, value.getData(), value.getLength()); length += value.getLength(); return value.getLength(); } void MString::setSize(int size) { bufferSize = (size % 256) + 256; data = (char *)realloc(data, bufferSize); length = size; } }