From 90b9e7301d92878d9b9477feb08f3b2a7a07319d Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Tue, 19 Mar 2024 02:33:57 +0200 Subject: [PATCH] Rename string class to basic_string --- include_std/string | 55 +++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/include_std/string b/include_std/string index 56484e9..a3bfefe 100644 --- a/include_std/string +++ b/include_std/string @@ -83,10 +83,10 @@ namespace std } /** - * @brief String class + * @brief Basic string class * String class that can be used to store strings. */ - class string + class basic_string { private: char *Data{}; @@ -96,17 +96,17 @@ namespace std public: static const size_t npos = -1; - string(const char *Str = "") + basic_string(const char *Str = "") { this->Length = strlen(Str); this->Capacity = this->Length + 1; this->Data = new char[this->Capacity]; strcpy(this->Data, Str); - strdbg("%#lx: New string created: \"%s\" (data: %#lx, length: %d, capacity: %d)", + strdbg("%#lx: New basic_string created: \"%s\" (data: %#lx, length: %d, capacity: %d)", this, this->Data, this->Data, this->Length, this->Capacity); } - ~string() + ~basic_string() { strdbg("%#lx: String deleted: \"%s\" (data: %#lx, length: %d, capacity: %d)", this, this->Data, this->Data, this->Length, this->Capacity); @@ -164,7 +164,7 @@ namespace std this, this->Data, this->Data, this->Length, this->Capacity); } - void concat(const string &Other) + void concat(const basic_string &Other) { size_t NewLength = this->Length + Other.Length; this->resize(NewLength); @@ -218,7 +218,7 @@ namespace std return npos; } - size_t find(const string &Str, size_t Pos = 0) const + size_t find(const basic_string &Str, size_t Pos = 0) const { strdbg("%#lx: String find: \"%s\", %d", this, Str.c_str(), Pos); @@ -397,19 +397,19 @@ namespace std return npos; } - size_t substr(const string &Str, size_t Pos = 0) const + size_t substr(const basic_string &Str, size_t Pos = 0) const { strdbg("%#lx: String substr: \"%s\", %d", this, Str.c_str(), Pos); return this->substr(Str.c_str(), Pos); } - string substr(size_t Pos = 0, size_t Count = npos) const + basic_string substr(size_t Pos = 0, size_t Count = npos) const { strdbg("%#lx: String substr: %d, %d", this, Pos, Count); if (Pos >= this->Length) - return string(); + return basic_string(); if (Count == npos) Count = this->Length - Pos; @@ -417,7 +417,7 @@ namespace std if (Pos + Count > this->Length) Count = this->Length - Pos; - string ret; + basic_string ret; ret.resize(Count); for (size_t i = 0; i < Count; i++) ret.Data[i] = this->Data[Pos + i]; @@ -451,7 +451,7 @@ namespace std this, this->Data, this->Data, this->Length, this->Capacity); } - void replace(size_t Pos, size_t Count, const string &Str) + void replace(size_t Pos, size_t Count, const basic_string &Str) { strdbg("%#lx: String replace: %d, %d, \"%s\"", this, Pos, Count, Str.Data); @@ -507,26 +507,25 @@ namespace std this, this->Data, this->Data, this->Length, this->Capacity); } - - string operator+(const string &Other) const + basic_string operator+(const basic_string &Other) const { - string result = *this; + basic_string result = *this; result.concat(Other); strdbg("%#lx: String added: \"%s\" (data: %#lx, length: %d, capacity: %d)", this, result.Data, result.Data, result.Length, result.Capacity); return result; } - string operator+(const char *Other) const + basic_string operator+(const char *Other) const { - string result = *this; + basic_string result = *this; result.concat(Other); strdbg("%#lx: String added: \"%s\" (data: %#lx, length: %d, capacity: %d)", this, result.Data, result.Data, result.Length, result.Capacity); return result; } - string &operator+=(const string &Other) + basic_string &operator+=(const basic_string &Other) { this->concat(Other); strdbg("%#lx: String appended: \"%s\" (data: %#lx, length: %d, capacity: %d)", @@ -534,7 +533,7 @@ namespace std return *this; } - string &operator+=(const char *Other) + basic_string &operator+=(const char *Other) { this->concat(Other); strdbg("%#lx: String appended: \"%s\" (data: %#lx, length: %d, capacity: %d)", @@ -542,7 +541,7 @@ namespace std return *this; } - string &operator+=(char Other) + basic_string &operator+=(char Other) { const char str[2] = {Other, '\0'}; this->concat(str); @@ -552,9 +551,9 @@ namespace std } /* warning: implicitly-declared 'constexpr String::String(const String&)' is deprecated [-Wdeprecated-copy] */ - string &operator=(const string &Other) = default; + basic_string &operator=(const basic_string &Other) = default; - // string &operator=(const string &Other) + // basic_string &operator=(const basic_string &Other) // { // if (this != &Other) // { @@ -568,7 +567,7 @@ namespace std // return *this; // } - string &operator=(const char *Other) + basic_string &operator=(const char *Other) { this->Length = strlen(Other); this->Capacity = this->Length + 1; @@ -580,7 +579,7 @@ namespace std return *this; } - string &operator<<(const string &Other) + basic_string &operator<<(const basic_string &Other) { this->concat(Other); strdbg("%#lx: String appended: \"%s\" (data: %#lx, length: %d, capacity: %d)", @@ -588,7 +587,7 @@ namespace std return *this; } - string &operator<<(const char *Other) + basic_string &operator<<(const char *Other) { this->concat(Other); strdbg("%#lx: String appended: \"%s\" (data: %#lx, length: %d, capacity: %d)", @@ -620,7 +619,7 @@ namespace std return this->Data[Index]; } - bool operator==(const string &Other) const + bool operator==(const basic_string &Other) const { strdbg("%#lx: String compared: \"%s\" == \"%s\"", this, this->Data, Other.Data); @@ -634,7 +633,7 @@ namespace std return strcmp(this->Data, Other) != 0; } - bool operator!=(const string &Other) const + bool operator!=(const basic_string &Other) const { strdbg("%#lx: String compared: \"%s\" != \"%s\"", this, this->Data, Other.Data); @@ -701,6 +700,8 @@ namespace std } }; + typedef basic_string string; + template class char_traits {