carb::detail::RStringTraits
Defined in carb/RString.h
- 
template<bool Uncased, class Base = RStringBase>
 class RStringTraits : protected carb::detail::RStringBase
- The base class for all registered string classes: RString, RStringU, RStringKey, and RStringUKey. - Template Parameters
- Uncased – - trueif representing an “un-cased” (i.e. case-insensitive) registered string;- falseotherwise.
 - Public Functions - 
bool isValid() const noexcept
- Checks to see if this registered string has been corrupted. - Note - It is not possible for this registered string to become corrupted through normal use of the API. It could be caused by bad casts or use-after-free. - Returns
- trueif- *thisrepresents a valid registered string;- falseif- *thisis corrupted.
 
 - 
constexpr bool isEmpty() const noexcept
- Checks to see if this registered string represents the “” (empty) value. - Returns
- trueif- *thisis default-initialized or initialized to eRString::Empty;- falseotherwise.
 
 - 
constexpr bool isUncased() const noexcept
- Checks to see if this registered string represents an “un-cased” (i.e. - case-insensitive) registered string. - Returns
- trueif- *thisis “un-cased” (i.e. case-insensitive);- falseif case-sensitive.
 
 - 
constexpr uint32_t getStringId() const noexcept
- Returns the registered string ID. - This ID is only useful for debugging purposes and should not be used for comparisons. - Returns
- The string ID for this registered string. 
 
 - 
size_t getHash() const
- Returns the hash value as by - carb::hashString(this->c_str()).- Note - This value is computed once for a registered string and cached, so this operation is generally very fast. - Returns
- The hash value as computed by - carb::hashString(this->c_str()).
 
 - 
size_t getUncasedHash() const noexcept
- Returns the hash value as by - carb::hashLowercaseString(this->c_str()).- Note - This value is pre-computed for registered strings and cached, so this operation is always O(1). - Returns
- The hash value as computed by - carb::hashLowercaseString(this->c_str()).
 
 - 
const char *c_str() const noexcept
- Resolves this registered string to a C-style NUL-terminated string. - Note - This operation is O(1). - Returns
- The C-style string previously registered. 
 
 - 
const char *data() const noexcept
- An alias for c_str(); resolves this registered string to a C-style NUL-terminated string. - Note - This operation is O(1). - Returns
- The C-style string previously registered. 
 
 - 
size_t length() const noexcept
- Returns the length of the registered string. - If the string contains embedded NUL (‘\0’) characters this may differ from - std::strlen(c_str()).- Note - This operation is O(1). - Returns
- The length of the registered string not including the NUL terminator. 
 
 - 
bool operator==(const RStringTraits &other) const
- Equality comparison between this registered string and another. - Parameters
- other – Another registered string. 
- Returns
- trueif- *thisand- otherrepresent the same registered string;- falseotherwise.
 
 - 
bool operator!=(const RStringTraits &other) const
- Inequality comparison between this registered string and another. - Parameters
- other – Another registered string. 
- Returns
- falseif- *thisand- otherrepresent the same registered string;- trueotherwise.
 
 - 
bool owner_before(const RStringTraits &other) const
- Checks whether this registered string is stably (but not lexicographically) ordered before another registered string. - This ordering is to make registered strings usable as keys in ordered associative containers in O(1) time. - Note - This is NOT a lexicographical comparison; for that use one of the compare() functions. To reduce ambiguity between a strict ordering and lexicographical comparison there is no - operator<function for this string class. While a lexicographical comparison would be O(n), this comparison is O(1).- Parameters
- other – Another registered string. 
- Returns
- trueif- *thisshould be ordered-before- other;- falseotherwise.
 
 - 
template<bool OtherUncased, class OtherBase>
 int compare(const RStringTraits<OtherUncased, OtherBase> &other) const
- Lexicographically compares this registered string with another. - Note - If either - *thisor- otheris “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Template Parameters
- OtherUncased – - trueif- otheris “un-cased” (i.e. case-insensitive);- falseotherwise.
- Parameters
- other – Another registered string to compare against. 
- Returns
- 0if the strings are equal,- >0if- otheris lexicographically ordered before- *this, or- <0if- *thisis lexicographically ordered before- other. See note above regarding case-sensitivity.
 
 - 
int compare(const char *s) const
- Lexicographically compares this registered string with a C-style string. - Note - If - *thisis “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Parameters
- s – A C-style string to compare against. 
- Returns
- 0if the strings are equal,- >0if- sis lexicographically ordered before- *this, or- <0if- *thisis lexicographically ordered before- s. See note above regarding case-sensitivity.
 
 - 
int compare(size_t pos, size_t count, const char *s) const
- Lexicographically compares a substring of this registered string with a C-style string. - Note - If - *thisis “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Parameters
- pos – The starting offset of the registered string represented by - *this. Must less-than-or-equal-to the length of the registered string.
- count – The length from - posto use in the comparison. This value is automatically clamped to the end of the registered string.
- s – A C-style string to compare against. 
 
- Returns
- 0if the strings are equal,- >0if- sis lexicographically ordered before the substring of- *this, or- <0if the substring of- *thisis lexicographically ordered before- s. See note above regarding case-sensitivity.
 
 - 
int compare(size_t pos, size_t count, const char *s, size_t len) const
- Lexicographically compares a substring of this registered string with a C-style string. - Note - If - *thisis “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Parameters
- pos – The starting offset of the registered string represented by - *this. Must less-than-or-equal-to the length of the registered string.
- count – The length from - posto use in the comparison. This value is automatically clamped to the end of the registered string.
- s – A C-style string to compare against. 
- len – The number of characters of - sto compare against.
 
- Returns
- 0if the strings are equal,- >0if- sis lexicographically ordered before the substring of- *this, or- <0if the substring of- *thisis lexicographically ordered before- s. See note above regarding case-sensitivity.
 
 - 
int compare(const std::string &s) const
- Lexicographically compares this registered string with a string. - Note - If - *thisis “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Parameters
- s – A string to compare against. 
- Returns
- 0if the strings are equal,- >0if- sis lexicographically ordered before- *this, or- <0if- *thisis lexicographically ordered before- s. See note above regarding case-sensitivity.
 
 - 
int compare(size_t pos, size_t count, const std::string &s) const
- Lexicographically compares a substring of this registered string with a string. - Note - If - *thisis “un-cased” (i.e. case-insensitive), a case-insensitive compare is performed.- Parameters
- pos – The starting offset of the registered string represented by - *this. Must less-than-or-equal-to the length of the registered string.
- count – The length from - posto use in the comparison. This value is automatically clamped to the end of the registered string.
- s – A string to compare against. 
 
- Returns
- 0if the strings are equal,- >0if- sis lexicographically ordered before the substring of- *this, or- <0if the substring of- *thisis lexicographically ordered before- s. See note above regarding case-sensitivity.