From be014d0d245600af45ba5374b1c4ab9e103f1cc5 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Sat, 29 Jan 2022 15:50:32 +0000 Subject: [PATCH] ZString debugged. --- ZString.cpp | 223 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 134 insertions(+), 89 deletions(-) diff --git a/ZString.cpp b/ZString.cpp index 6366579..f4991bb 100644 --- a/ZString.cpp +++ b/ZString.cpp @@ -1,26 +1,32 @@ #include "ZString.h" #include "Log.h" -namespace coreutils { +namespace coreutils +{ - std::ostream& operator<<(std::ostream& os, const ZString &zstring) { - for(int ix = 0; ix < (zstring.length - (zstring.cursor - zstring.data)); ++ix) { + std::ostream &operator<<(std::ostream &os, const ZString &zstring) + { + for (int ix = 0; ix < (zstring.length - (zstring.cursor - zstring.data)); ++ix) + { os << zstring.cursor[ix]; } return os; } - std::ostream& operator<<(std::ostream& os, const std::string &string) { + std::ostream &operator<<(std::ostream &os, const std::string &string) + { os << string; return os; } - std::ostream& operator+(std::ostream& os, const ZString &zstring) { + std::ostream &operator+(std::ostream &os, const ZString &zstring) + { os << zstring; return os; } - ZString::ZString() { + ZString::ZString() + { data = NULL; length = 0; cursor = data; @@ -32,179 +38,212 @@ namespace coreutils { ZString::ZString(const char *data, size_t length) : data((char *)data), length(length), cursor((char *)data) {} - ZString::ZString(const ZString &zstring) { + ZString::ZString(const ZString &zstring) + { data = zstring.data; length = zstring.length; cursor = zstring.cursor; -// Log(LOG_DEBUG_2) << "ZString Copy Constructor: "; + // Log(LOG_DEBUG_2) << "ZString Copy Constructor: "; } - ZString::ZString(std::string data) { + ZString::ZString(std::string data) + { this->data = (char *)data.c_str(); length = data.length(); cursor = (char *)data.c_str(); } - bool ZString::operator<(const ZString &valuex) const { - return (strncmp(cursor, valuex.cursor, (valuex.length <= length ? valuex.length: length) < 0)); + bool ZString::operator<(const ZString &valuex) const + { + return (strncmp(cursor, valuex.cursor, (valuex.length <= length ? valuex.length : length) < 0)); } - bool ZString::operator>(const ZString &valuex) const { - return (strncmp(data, valuex.data, valuex.length <= length ? valuex.length: length) > 0); + bool ZString::operator>(const ZString &valuex) const + { + return (strncmp(data, valuex.data, valuex.length <= length ? valuex.length : length) > 0); } - bool ZString::operator==(const ZString &valuex) const { - return (strncmp(data, valuex.data, valuex.length <= length ? valuex.length: length) == 0); + bool ZString::operator==(const ZString &valuex) const + { + return (strncmp(data, valuex.data, valuex.length <= length ? valuex.length : length) == 0); } - std::vector &ZString::getList() { + std::vector &ZString::getList() + { return list; } - int ZString::asInteger() { + int ZString::asInteger() + { std::stringstream temp(std::string(data, length)); int tempInt = 0; temp >> tempInt; return tempInt; } - std::string ZString::str() { + std::string ZString::str() + { return std::string(data, length); } - std::string ZString::str(int len) { + std::string ZString::str(int len) + { return std::string(data, len); } - std::vector &ZString::split(std::string delimiter, size_t maxSize) { + std::vector &ZString::split(std::string delimiter, size_t maxSize) + { coreutils::ZString zDelimiter((char *)delimiter.c_str(), delimiter.size()); return split(zDelimiter, maxSize); } - std::vector &ZString::split(ZString &delimiter, size_t maxSize) { + std::vector &ZString::split(ZString &delimiter, size_t maxSize) + { list.clear(); - if(length == 0) { - list.push_back(ZString("")); - return list; + if (length == 0) { + list.push_back(ZString("")); + return list; } char *end = data + length; char *pos = cursor; - while((pos + delimiter.getLength()) < end) { - if(strncmp(pos, delimiter.getData(), delimiter.getLength()) == 0) { - list.push_back(ZString(cursor, pos - cursor)); - cursor = pos + delimiter.getLength(); - pos = cursor; - } - else { - ++pos; - } - } - pos += delimiter.getLength(); + while ((pos + delimiter.getLength()) <= end) { + if (strncmp(pos, delimiter.getData(), delimiter.getLength()) == 0) + { + list.push_back(ZString(cursor, pos - cursor)); + cursor = pos + delimiter.getLength(); + pos = cursor; + } + else + { + ++pos; + } + } list.push_back(ZString(cursor, pos - cursor)); cursor = pos; return list; } - bool ZString::isCharacter(char ch, const char *string) { + bool ZString::isCharacter(char ch, const char *string) + { int len = strlen(string); - for(int ix = 0; ix < len; ++ix) { - if(ch == string[ix]) - return true; + for (int ix = 0; ix < len; ++ix) + { + if (ch == string[ix]) + return true; } return false; } - ZString ZString::getTokenInclude(const char *include) { + ZString ZString::getTokenInclude(const char *include) + { char *start = cursor; - while((cursor <= (data + length)) && isCharacter(*cursor, include)) - ++cursor; + while ((cursor <= (data + length)) && isCharacter(*cursor, include)) + ++cursor; return ZString(start, cursor - start); } - ZString ZString::getTokenExclude(const char *exclude) { + ZString ZString::getTokenExclude(const char *exclude) + { char *start = cursor; - while((cursor <= (data + length)) && !isCharacter(*cursor, exclude)) - ++cursor; + while ((cursor <= (data + length)) && !isCharacter(*cursor, exclude)) + ++cursor; return ZString(start, cursor - start); } - ZString ZString::getTokenExclude(std::string exclude) { + ZString ZString::getTokenExclude(std::string exclude) + { return getTokenExclude(exclude.c_str()); } - ZString &ZString::operator[](int index) { + ZString &ZString::operator[](int index) + { return list[index]; } - bool ZString::eod() { + bool ZString::eod() + { return cursor >= data + length; } - bool ZString::equals(const char *value) { - if(strlen(value) != length) - return false; + bool ZString::equals(const char *value) + { + if (strlen(value) != length) + return false; return strncmp(data, value, length) == 0; } - bool ZString::equals(char *value) { - if(strlen(value) != length) - return false; + bool ZString::equals(char *value) + { + if (strlen(value) != length) + return false; return strncmp(data, value, length) == 0; } - bool ZString::equals(ZString &zstring) { - if(zstring.getLength() != length) - return false; + bool ZString::equals(ZString &zstring) + { + if (zstring.getLength() != length) + return false; return strncmp(data, zstring.getData(), length) == 0; } - bool ZString::equals(std::string &string) { + bool ZString::equals(std::string &string) + { return string == std::string(data, length); } - bool ZString::ifNext(const char *value) { - if(((data + length) - cursor) < strlen(value)) - return false; + bool ZString::ifNext(const char *value) + { + if (((data + length) - cursor) < strlen(value)) + return false; bool test = (strncmp(cursor, value, strlen(value)) == 0); - if(test) - cursor += strlen(value); + if (test) + cursor += strlen(value); return test; } - int ZString::ifEqualsCount(ZString &comparator) { + int ZString::ifEqualsCount(ZString &comparator) + { int count = 0; - while(cursor < (data + length)) { - if(*cursor == *comparator.cursor) { + while (cursor < (data + length)) + { + if (*cursor == *comparator.cursor) + { ++count; ++cursor; ++comparator.cursor; } - else { + else + { return count; } } return count; } - int ZString::skipWhitespace() { + int ZString::skipWhitespace() + { int len = strspn(cursor, " \t"); cursor += len; return len; } - ZString ZString::goeol() { + ZString ZString::goeol() + { bool set = false; char *temp = cursor; char *tempend = data + length; - while(cursor <= (data + length)) { - if(*cursor == '\r') { + while (cursor <= (data + length)) + { + if (*cursor == '\r') + { tempend = cursor++; set = true; } - if(*cursor == '\n') { - if(!set) - tempend = cursor; + if (*cursor == '\n') + { + if (!set) + tempend = cursor; ++cursor; break; } @@ -213,44 +252,50 @@ namespace coreutils { return ZString(temp, tempend - temp); } - ZString ZString::readBlock(size_t size) { + ZString ZString::readBlock(size_t size) + { char *temp = cursor; cursor += size; return ZString(temp, size); } - char* ZString::getData() { + char *ZString::getData() + { return data; } - size_t ZString::getLength() { + size_t ZString::getLength() + { return length - (cursor - data); } - void ZString::setZString(ZString zstring) { + void ZString::setZString(ZString zstring) + { data = zstring.getData(); length = zstring.getLength(); cursor = data; } - void ZString::reset() { + void ZString::reset() + { cursor = data; } - char ZString::charAt(int index) { + char ZString::charAt(int index) + { return *(data + index); } - bool ZString::ifCRLF() { + bool ZString::ifCRLF() + { int len = length; - if(*(data + length - 1) == '\n') - --length; - if(*(data + length - 1) == '\r') - --length; - if(cursor > (data + length)) - cursor = data + length; - return len != length; + if (*(data + length - 1) == '\n') + --length; + if (*(data + length - 1) == '\r') + --length; + if (cursor >= (data + length)) + cursor = data + length; + return len != length; } - }