From 69acccc2f29a309504b15af31fae2d9d20db19d0 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Mon, 1 Jun 2015 03:03:15 -0400 Subject: [PATCH] Added erase() to String_Type. Added concatentation operators and constructors for various String classes. --- Jupiter/CString.h | 50 ++++++++++++++----- Jupiter/CString_Imp.h | 96 +++++++++++++++++++++++++++++++++++++ Jupiter/Shift_String.h | 5 ++ Jupiter/Shift_String_Imp.h | 6 +++ Jupiter/String.h | 50 ++++++++++++++----- Jupiter/String_Imp.h | 96 +++++++++++++++++++++++++++++++++++++ Jupiter/String_Type.h | 5 ++ Jupiter/String_Type_Imp.h | 7 +++ Release/Jupiter.lib | Bin 268568 -> 271056 bytes 9 files changed, 290 insertions(+), 25 deletions(-) diff --git a/Jupiter/CString.h b/Jupiter/CString.h index 8f3ee00..b54bc63 100644 --- a/Jupiter/CString.h +++ b/Jupiter/CString.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2013-2014 Justin James. + * Copyright (C) 2013-2015 Justin James. * * This license must be preserved. * Any applications, libraries, or code which make any use of any @@ -205,15 +205,6 @@ namespace Jupiter size_t concat(const T *in); size_t concat(const T in); - /** Assignment Operators */ - inline CString_Type &operator=(const CString_Type &right) { this->set(right); return *this; }; - inline CString_Type &operator=(const Readable_String &right) { this->set(right); return *this; }; - inline CString_Type &operator=(const std::basic_string &right) { this->set(right); return *this; }; - inline CString_Type &operator=(const T *right) { this->set(right); return *this; }; - inline CString_Type &operator=(const T right) { this->set(right); return *this; }; - - static const Jupiter::CString_Type empty; /** Empty instantation of CString_Type */ - /** Default Constructor */ CString_Type(); @@ -235,6 +226,22 @@ namespace Jupiter CString_Type(const T *in, size_t len); CString_Type(const T *in); + /** Concatenation Constructor */ + CString_Type(const Readable_String &lhs, const Readable_String &rhs); + + /** Addition Operators */ + inline CString_Type operator+(const CString_Type &rhs) const; + inline CString_Type operator+(const Readable_String &rhs) const; + + /** Assignment Operators */ + inline CString_Type &operator=(const CString_Type &right) { this->set(right); return *this; }; + inline CString_Type &operator=(const Readable_String &right) { this->set(right); return *this; }; + inline CString_Type &operator=(const std::basic_string &right) { this->set(right); return *this; }; + inline CString_Type &operator=(const T *right) { this->set(right); return *this; }; + inline CString_Type &operator=(const T right) { this->set(right); return *this; }; + + static const Jupiter::CString_Type empty; /** Empty instantiation of CString_Type */ + protected: /** @@ -260,6 +267,11 @@ namespace Jupiter }; template using CString_Strict = CString_Type; +#if defined JUPITER_CSTRING_TYPE_OPERATOR_PLUS + /** String_Loose Addition Operator */ + template static inline Jupiter::CString_Type operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs); +#endif // JUPITER_CSTRING_TYPE_OPERATOR_PLUS + /** * @brief Provides a "loose" CString implementation that's more optimized for repeated concatenations. * Note: The underlying C-style string will always have a size which is a power of 2, but no fewer than 8 elements. @@ -382,14 +394,18 @@ namespace Jupiter CString_Loose(CString_Loose &&source); /** Copy Constructors */ - CString_Loose(const CString_Loose &in); + CString_Loose(const CString_Loose &in); CString_Loose(const Readable_String &in); CString_Loose(const std::basic_string &in); CString_Loose(const T *in, size_t len); CString_Loose(const T *in); - static const Jupiter::CString_Loose empty; /** Empty instantation of CString_Loose */ - static const size_t start_size = 8; /** Starting size for loose CStrings. */ + /** Concatenation Constructor */ + CString_Loose(const Readable_String &lhs, const Readable_String &rhs); + + /** Addition Operators */ + inline CString_Loose operator+(const CString_Loose &rhs) const; + inline CString_Loose operator+(const Readable_String &rhs) const; /** Assignment Operators */ inline CString_Loose &operator=(const CString_Loose &right) { this->set(right); return *this; }; @@ -399,6 +415,9 @@ namespace Jupiter inline CString_Loose &operator=(const T *right) { this->set(right); return *this; }; inline CString_Loose &operator=(const T right) { this->set(right); return *this; }; + static const Jupiter::CString_Loose empty; /** Empty instantiation of CString_Loose */ + static const size_t start_size = 8; /** Starting size for loose CStrings. */ + protected: /** @@ -425,6 +444,11 @@ namespace Jupiter size_t strSize; /** Size of underlying C-string buffer */ }; +#if defined JUPITER_CSTRING_LOOSE_OPERATOR_PLUS + /** String_Loose Addition Operator */ + template static inline Jupiter::CString_LOOSE operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs); +#endif // JUPITER_CSTRING_LOOSE_OPERATOR_PLUS + /** Definition of a Loose CString. */ typedef CString_Loose CStringL; diff --git a/Jupiter/CString_Imp.h b/Jupiter/CString_Imp.h index b50f304..71a3c00 100644 --- a/Jupiter/CString_Imp.h +++ b/Jupiter/CString_Imp.h @@ -108,6 +108,36 @@ template Jupiter::CString_Type::CString_Type(const T *in) } } +template Jupiter::CString_Type::CString_Type(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) : CString_Type(lhs.size() + rhs.size()) +{ + const T *itr; + const T *end; + + if (lhs.isNotEmpty()) + { + itr = lhs.ptr(); + end = itr + lhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + if (rhs.isNotEmpty()) + { + itr = rhs.ptr(); + end = itr + rhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + *Jupiter::String_Type::str = 0; + Jupiter::String_Type::length = Jupiter::String_Type::str - Jupiter::Shift_String_Type::base; + Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; +} + template bool Jupiter::CString_Type::setBufferSize(size_t len) { if (Jupiter::Shift_String_Type::setBufferSize(len + 1)) @@ -385,6 +415,24 @@ template size_t Jupiter::CString_Type::concat(const T c) return Jupiter::String_Type::length; } +// Operators +template inline Jupiter::CString_Type Jupiter::CString_Type::operator+(const Jupiter::CString_Type &rhs) const +{ + return Jupiter::CString_Type::operator+(reinterpret_cast &>(rhs)); +} + +template inline Jupiter::CString_Type Jupiter::CString_Type::operator+(const Jupiter::Readable_String &rhs) const +{ + return Jupiter::operator+(*this, rhs); +} + +#if defined JUPITER_CSTRING_TYPE_OPERATOR_PLUS +template static inline Jupiter::CString_Type Jupiter::operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) +{ + return Jupiter::CString_Type(lhs, rhs); +} +#endif // JUPITER_CSTRING_TYPE_OPERATOR_PLUS + template const Jupiter::CString_Type Jupiter::CString_Type::empty = Jupiter::CString_Type(); // Jupiter::DataBuffer specialization @@ -479,6 +527,36 @@ template Jupiter::CString_Loose::CString_Loose(const T *in) : Jup } } +template Jupiter::CString_Loose::CString_Loose(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) : CString_Loose(lhs.size() + rhs.size()) +{ + const T *itr; + const T *end; + + if (lhs.isNotEmpty()) + { + itr = lhs.ptr(); + end = itr + lhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + if (rhs.isNotEmpty()) + { + itr = rhs.ptr(); + end = itr + rhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + *Jupiter::String_Type::str = 0; + Jupiter::String_Type::length = Jupiter::String_Type::str - Jupiter::Shift_String_Type::base; + Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; +} + template bool Jupiter::CString_Loose::setBufferSize(size_t len) { len = getPowerTwo32(len + 1); @@ -590,6 +668,24 @@ template Jupiter::CString_Loose Jupiter::CString_Loose::gotoWo return Jupiter::Readable_String::gotoWord(in, pos, whitespace); } +// Operators +template inline Jupiter::CString_Loose Jupiter::CString_Loose::operator+(const Jupiter::CString_Loose &rhs) const +{ + return Jupiter::CString_Loose::operator+(reinterpret_cast &>(rhs)); +} + +template inline Jupiter::CString_Loose Jupiter::CString_Loose::operator+(const Jupiter::Readable_String &rhs) const +{ + return Jupiter::operator+(*this, rhs); +} + +#if defined JUPITER_CSTRING_LOOSE_OPERATOR_PLUS +template static inline Jupiter::CString_Loose Jupiter::operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) +{ + return Jupiter::CString_Loose(lhs, rhs); +} +#endif // JUPITER_CSTRING_LOOSE_OPERATOR_PLUS + template const Jupiter::CString_Loose Jupiter::CString_Loose::empty = Jupiter::CString_Loose(); // Jupiter::DataBuffer specialization diff --git a/Jupiter/Shift_String.h b/Jupiter/Shift_String.h index 7ecf043..13a9e95 100644 --- a/Jupiter/Shift_String.h +++ b/Jupiter/Shift_String.h @@ -76,6 +76,11 @@ namespace Jupiter */ virtual void remove(size_t index, size_t length) override; + /** + * @brief Removes all elements from the string. + */ + virtual void erase(); + /** * @brief Default constructor for the Shift_String_Type class. */ diff --git a/Jupiter/Shift_String_Imp.h b/Jupiter/Shift_String_Imp.h index 7465128..f2fd40a 100644 --- a/Jupiter/Shift_String_Imp.h +++ b/Jupiter/Shift_String_Imp.h @@ -72,6 +72,12 @@ template void Jupiter::Shift_String_Type::remove(size_t index, si Jupiter::String_Type::remove(index, len); } +template void Jupiter::Shift_String_Type::erase() +{ + Jupiter::String_Type::erase(); + Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; +} + template bool Jupiter::Shift_String_Type::setBufferSize(size_t len) { if (len > Jupiter::String_Type::length) diff --git a/Jupiter/String.h b/Jupiter/String.h index 6b842ec..fd3d147 100644 --- a/Jupiter/String.h +++ b/Jupiter/String.h @@ -203,15 +203,6 @@ namespace Jupiter static String_Strict gotoToken(const Jupiter::Readable_String &in, size_t pos, const T &token); static String_Strict gotoToken(const Jupiter::Readable_String &in, size_t pos, const Jupiter::Readable_String &token); - /** Assignment Operators */ - inline String_Strict &operator=(const String_Strict &right) { this->set(right); return *this; }; - inline String_Strict &operator=(const Readable_String &right) { this->set(right); return *this; }; - inline String_Strict &operator=(const std::basic_string &right) { this->set(right); return *this; }; - inline String_Strict &operator=(const T *right) { this->set(right); return *this; }; - inline String_Strict &operator=(const T right) { this->set(right); return *this; }; - - static const Jupiter::String_Strict empty; /** Empty instantation of String_Strict */ - /** Default Constructor */ String_Strict(); @@ -234,12 +225,33 @@ namespace Jupiter String_Strict(const T *in); String_Strict(const Jupiter::DataBuffer &in); + /** Concatenation Constructor */ + String_Strict(const Readable_String &lhs, const Readable_String &rhs); + + /** Addition Operators */ + inline String_Strict operator+(const String_Strict &rhs) const; + inline String_Strict operator+(const Readable_String &rhs) const; + + /** Assignment Operators */ + inline String_Strict &operator=(const String_Strict &right) { this->set(right); return *this; }; + inline String_Strict &operator=(const Readable_String &right) { this->set(right); return *this; }; + inline String_Strict &operator=(const std::basic_string &right) { this->set(right); return *this; }; + inline String_Strict &operator=(const T *right) { this->set(right); return *this; }; + inline String_Strict &operator=(const T right) { this->set(right); return *this; }; + + static const Jupiter::String_Strict empty; /** Empty instantiation of String_Strict */ + protected: /** Dummy constructor to prevent string initialization */ String_Strict(Jupiter::String_Constructor_Base &) {}; }; +#if defined JUPITER_STRING_STRICT_OPERATOR_PLUS + /** String_Loose Addition Operator */ + template static inline Jupiter::String_Strict operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs); +#endif // JUPITER_STRING_STRICT_OPERATOR_PLUS + /** * @brief Provides a "loose" String implementation that's more optimized for repeated concatenations. * Note: The underlying string will always have a size which is a power of 2, but no fewer than 8 elements. @@ -424,15 +436,19 @@ namespace Jupiter String_Loose(String_Loose &&source); /** Copy Constructors */ - String_Loose(const String_Loose &in); + String_Loose(const String_Loose &in); String_Loose(const Readable_String &in); String_Loose(const std::basic_string &in); String_Loose(const T *in, size_t len); String_Loose(const T *in); String_Loose(const Jupiter::DataBuffer &in); - static const Jupiter::String_Loose empty; /** Empty instantation of String_Loose */ - static const size_t start_size = 8; /** Starting size for loose Strings. */ + /** Concatenation Constructor */ + String_Loose(const Readable_String &lhs, const Readable_String &rhs); + + /** Addition Operators */ + inline String_Loose operator+(const String_Loose &rhs) const; + inline String_Loose operator+(const Readable_String &rhs) const; /** Assignment Operators */ inline String_Loose &operator=(const String_Loose &right) { this->set(right); return *this; }; @@ -441,6 +457,9 @@ namespace Jupiter inline String_Loose &operator=(const T *right) { this->set(right); return *this; }; inline String_Loose &operator=(const T right) { this->set(right); return *this; }; + static const Jupiter::String_Loose empty; /** Empty instantiation of String_Loose */ + static const size_t start_size = 8; /** Starting size for loose Strings. */ + protected: /** @@ -467,6 +486,13 @@ namespace Jupiter size_t strSize; /** Size of underlying string buffer */ }; +#if !defined JUPITER_STRING_STRICT_OPERATOR_PLUS +#if !defined DISABLE_DEFAULT_JUPITER_STRING_OPERATOR_PLUS + /** String_Loose Addition Operator */ + template static inline Jupiter::String_Loose operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs); +#endif // DISABLE_DEFAULT_JUPITER_STRING_OPERATOR_PLUS +#endif // JUPITER_STRING_STRICT_OPERATOR_PLUS + /** Definition of a Loose String. */ typedef String_Loose StringL; diff --git a/Jupiter/String_Imp.h b/Jupiter/String_Imp.h index 4f10b88..5b87dcd 100644 --- a/Jupiter/String_Imp.h +++ b/Jupiter/String_Imp.h @@ -105,6 +105,35 @@ template Jupiter::String_Strict::String_Strict(const Jupiter::Dat { } +template Jupiter::String_Strict::String_Strict(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) : String_Strict(lhs.size() + rhs.size()) +{ + const T *itr; + const T *end; + + if (lhs.isNotEmpty()) + { + itr = lhs.ptr(); + end = itr + lhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + if (rhs.isNotEmpty()) + { + itr = rhs.ptr(); + end = itr + rhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + Jupiter::String_Type::length = Jupiter::String_Type::str - Jupiter::Shift_String_Type::base; + Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; +} + // vformat() template<> size_t inline Jupiter::String_Strict::vformat(const char *format, va_list args) @@ -286,6 +315,24 @@ template Jupiter::String_Strict Jupiter::String_Strict::gotoTo return Jupiter::Readable_String::gotoToken(in, pos, token); } +// Operators +template inline Jupiter::String_Strict Jupiter::String_Strict::operator+(const Jupiter::String_Strict &rhs) const +{ + return Jupiter::String_Strict::operator+(reinterpret_cast &>(rhs)); +} + +template inline Jupiter::String_Strict Jupiter::String_Strict::operator+(const Jupiter::Readable_String &rhs) const +{ + return Jupiter::operator+(*this, rhs); +} + +#if defined JUPITER_STRING_STRICT_OPERATOR_PLUS +template static inline Jupiter::String_Strict Jupiter::operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) +{ + return Jupiter::String_Strict(lhs, rhs); +} +#endif // JUPITER_STRING_STRICT_OPERATOR_PLUS + template const Jupiter::String_Strict Jupiter::String_Strict::empty = Jupiter::String_Strict(); // Jupiter::DataBuffer specialization @@ -385,6 +432,35 @@ template Jupiter::String_Loose::String_Loose(const Jupiter::DataB { } +template Jupiter::String_Loose::String_Loose(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) : String_Loose(lhs.size() + rhs.size()) +{ + const T *itr; + const T *end; + + if (lhs.isNotEmpty()) + { + itr = lhs.ptr(); + end = itr + lhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + if (rhs.isNotEmpty()) + { + itr = rhs.ptr(); + end = itr + rhs.size(); + *Jupiter::String_Type::str = *itr; + while (++itr != end) + *++Jupiter::String_Type::str = *itr; + ++Jupiter::String_Type::str; + } + + Jupiter::String_Type::length = Jupiter::String_Type::str - Jupiter::Shift_String_Type::base; + Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; +} + template bool Jupiter::String_Loose::setBufferSize(size_t len) { return Jupiter::Shift_String_Type::setBufferSize(Jupiter::String_Loose::strSize = getPowerTwo32(len)); @@ -576,6 +652,26 @@ template Jupiter::String_Loose Jupiter::String_Loose::gotoToke return Jupiter::Readable_String::gotoToken(in, pos, token); } +// Operators +template inline Jupiter::String_Loose Jupiter::String_Loose::operator+(const Jupiter::String_Loose &rhs) const +{ + return Jupiter::String_Loose::operator+(reinterpret_cast &>(rhs)); +} + +template inline Jupiter::String_Loose Jupiter::String_Loose::operator+(const Jupiter::Readable_String &rhs) const +{ + return Jupiter::operator+(*this, rhs); +} + +#if !defined JUPITER_STRING_STRICT_OPERATOR_PLUS +#if !defined DISABLE_DEFAULT_JUPITER_STRING_OPERATOR_PLUS +template static inline Jupiter::String_Loose Jupiter::operator+(const Jupiter::Readable_String &lhs, const Jupiter::Readable_String &rhs) +{ + return Jupiter::String_Loose(lhs, rhs); +} +#endif // DISABLE_DEFAULT_JUPITER_STRING_OPERATOR_PLUS +#endif // JUPITER_STRING_STRICT_OPERATOR_PLUS + template const Jupiter::String_Loose Jupiter::String_Loose::empty = Jupiter::String_Loose(); // Jupiter::DataBuffer specialization diff --git a/Jupiter/String_Type.h b/Jupiter/String_Type.h index f7ae093..1634041 100644 --- a/Jupiter/String_Type.h +++ b/Jupiter/String_Type.h @@ -116,6 +116,11 @@ namespace Jupiter */ virtual void remove(size_t index, size_t length); + /** + * @brief Removes all elements from the string. + */ + virtual void erase(); + /** * @brief Processes escape sequences in a string. * Source reference: http://en.cppreference.com/w/cpp/language/escape diff --git a/Jupiter/String_Type_Imp.h b/Jupiter/String_Type_Imp.h index 788426d..fe018f7 100644 --- a/Jupiter/String_Type_Imp.h +++ b/Jupiter/String_Type_Imp.h @@ -152,6 +152,13 @@ template void Jupiter::String_Type::remove(size_t index, size_t l } } +// erase + +template void Jupiter::String_Type::erase() +{ + Jupiter::String_Type::length = 0; +} + // processEscapeSequences template void Jupiter::String_Type::processEscapeSequences() diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index df56c4a67f07fca67f84866352f96bba2bf1a244..8850119378e967dd44a9bf130a4ce01b6dfcad25 100644 GIT binary patch delta 38498 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