77 lines
1.8 KiB
C++
77 lines
1.8 KiB
C++
#include "MString.h"
|
|
#include "Log.h"
|
|
#include <iostream>
|
|
#include <stdlib.h>
|
|
|
|
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;
|
|
}
|
|
|
|
}
|