diff --git a/MString.cpp b/MString.cpp index 521dbfa..b076742 100644 --- a/MString.cpp +++ b/MString.cpp @@ -42,6 +42,12 @@ namespace coreutils { cursor = data; } + MString::MString(ZString zstring) { + setSize(zstring.getLength()); + memcpy(data, zstring.getData(), zstring.getLength()); + cursor = data; + } + MString::MString(std::string data) { setSize(data.length()); memcpy(this->data, (char *)data.c_str(), data.length()); @@ -58,16 +64,25 @@ namespace coreutils { return 0; } - MString& MString::operator=(coreutils::ZString& value) { - if(*this == value) - return *this; - int len = length; - setSize(length + value.getLength()); - memcpy(data + len, value.getData(), value.getLength()); - return *this; - } + // MString& MString::operator=(coreutils::ZString& value) { + // if(*this == value) + // return *this; + // int len = length; + // setSize(length + value.getLength()); + // memcpy(data + len, value.getData(), value.getLength()); + // return *this; + // } - MString& MString::operator=(coreutils::MString& value) { + // MString& MString::operator=(coreutils::ZString& value) { + // if(*this == value) + // return *this; + // int len = length; + // setSize(length + value.getLength()); + // memcpy(data + len, value.getData(), value.getLength()); + // return *this; + // } + + MString& MString::operator=(coreutils::ZString value) { if(*this == value) return *this; int len = length; @@ -105,7 +120,15 @@ namespace coreutils { return *this; } - MString& MString::operator<<(coreutils::ZString &zstring) { + // MString& MString::operator<<(coreutils::ZString &zstring) { + // int temp = length; + // int len = length + zstring.getLength(); + // setSize(len); + // memcpy(data + temp, zstring.getData(), zstring.getLength()); + // return *this; + // } + + MString& MString::operator<<(coreutils::ZString zstring) { int temp = length; int len = length + zstring.getLength(); setSize(len); diff --git a/MString.h b/MString.h index ceff201..7f7d846 100644 --- a/MString.h +++ b/MString.h @@ -44,6 +44,8 @@ namespace coreutils { MString(ZString &zstring); + MString(ZString zstring); + /// /// Consructor providing a copy of a ZString. /// @@ -62,13 +64,15 @@ namespace coreutils { /// Assignment operator will copy data to backing store. /// - MString& operator=(coreutils::ZString& data); +// MString& operator=(coreutils::ZString& data); /// /// Assignment operator will copy data to backing store. /// - MString& operator=(coreutils::MString& data); +// MString& operator=(coreutils::ZString& data); + + MString& operator=(coreutils::ZString data); /// /// Assignment operator will copy data to backing store. @@ -90,7 +94,9 @@ namespace coreutils { MString& operator<<(const int value); - MString& operator<<(coreutils::ZString &zstring); +// MString& operator<<(coreutils::ZString &zstring); + + MString& operator<<(coreutils::ZString zstring); MString& operator<<(std::string value); diff --git a/ZString.cpp b/ZString.cpp index f63d34d..9b7f7d3 100644 --- a/ZString.cpp +++ b/ZString.cpp @@ -53,7 +53,7 @@ namespace coreutils { ZString::~ZString() { if(cdata) - free(cdata); + free(cdata); } bool ZString::operator<(const ZString &valuex) const { diff --git a/testing/mstring_test b/testing/mstring_test index 7069478..393b408 100755 Binary files a/testing/mstring_test and b/testing/mstring_test differ