Template Class BaseString
Defined in File base_string.hpp
Nested Relationships
Nested Types
Class Documentation
-
template<::size64_t BUFFER_SIZE>
class BaseString BaseString defines a base string class with constant memory footprint. The internal buffer size is defined by BUFFER_SIZE template parameter. The maximum length for a string is (BUFFER_SIZE - 1ULL). One character is reserved for terminating zero. The class serves as a common storage and method provider for derived classes.
- Template Parameters:
BUFFER_SIZE – defines the size of static string including its terminating zero.
Public Types
-
using char_type = char8_t
Public Functions
-
inline BaseString(void) noexcept
default constructor
- inline constexpr const ::char8_t * data () const noexcept
Converts the contents of a string into a pointer to an array of characters.
- Returns:
return a pointer to the internal zero-terminated array of characters
-
inline BaseString substr(const ::size64_t pos = 0U, const ::size64_t len = npos) const
Returns a newly constructed string object with its value initialized to a copy of a substring of this object. The substring is the portion of the object that starts at character position pos and spans len characters (or until the end of the string, whichever comes first).
- Parameters:
pos – [in] is a position of the first character to be copied as a substring. If this is equal to the string length, the function returns an empty string. If this is greater than the string length, it throws out_of_range. Note: The first character is denoted by a value of 0 (not 1).
len – [in] is a number of characters to include in the substring. If the string is shorter, as many characters as possible are used. A value of BaseString::npos indicates all characters until the end of the string.
- Throws:
std::out_of_range –
- inline int32_t compare (const ::size64_t pos1, const ::size64_t count1, const ::char8_t *const s, const ::size64_t count2=npos) const
Compares the value of the string object (or a substring) to the sequence of characters specified by its arguments. The compared string is the value of the string object or (if the signature used has a pos1 and a count1 parameters) the substring that begins at its character in position pos1 and spans count1 characters. This string is compared to a comparing string, which is determined by the other arguments passed to the function.
- Parameters:
pos1 – [in] is a position of the first character in the compared string. If this is greater than the string length, it throws out_of_range. Note: The first character is denoted by a value of 0 (not 1).
count1 – [in] is length of compared string. If the string is shorter, as many characters as possible. If count1 is npos, the strings length is assumed
s – [in] is pointer to an array of characters. If NULL, std::invalid_argument is thrown.
count2 – [in] is number of characters to compare. It it’s npos, all characters compared.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
- inline int32_t compare (const ::char8_t *const s) const
Compares the value of the string object (or a substring) to the sequence of characters specified by its arguments. The compared string is the value of the string object or (if the signature used has a pos1 and a _count1 parameters) the substring that begins at its character in position pos1 and spans _count1 characters. This string is compared to a comparing string, which is determined by the other arguments passed to the function. param [in] s is pointer to an array of characters. If NULL, std::invalid_argument is thrown.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
-
inline bool operator==(const char8_t *const rhs) const
operator==
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
return True if the strings are equal, false otherwise
-
template<::size64_t LEN>
inline int32_t compare(const ::size64_t pos1, const ::size64_t count1, const BaseString<LEN> &str) const Compares the value of the string object (or a substring) to the given string. The compared string is the value of the string object or (if the signature used has a pos1 and a _count1 parameters) the substring that begins at its character in position pos1 and spans _count1 characters. This string is compared to a comparing string, which is determined by the other arguments passed to the function.
- Parameters:
pos1 – [in] is a position of the first character in the compared string. If this is greater than the string length, it throws out_of_range. Note: The first character is denoted by a value of 0 (not 1).
count1 – [in] is length of compared string. If the string is shorter, as many characters as possible. If count1 is npos, full string length assumed.
str – [in] is a comparand string.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
-
inline int32_t compare(const ::size64_t pos1, const ::size64_t count1, const std::string &str) const
Compares the value of the string object (or a substring) to the given string. The compared string is the value of the string object or (if the signature used has a pos1 and a _count1 parameters) the substring that begins at its character in position pos1 and spans _count1 characters. This string is compared to a comparing string, which is determined by the other arguments passed to the function.
- Parameters:
pos1 – [in] is a position of the first character in the compared string. If this is greater than the string length, it throws out_of_range. Note: The first character is denoted by a value of 0 (not 1).
count1 – [in] is length of compared string. If the string is shorter, as many characters as possible. If count1 is npos, full string length assumed.
str – [in] is a comparand string.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
-
template<::size64_t LEN>
inline int32_t compare(const BaseString<LEN> &str) const Compares the value of the string object to the given string specified by its arguments.
- Parameters:
str – [in] is a comparand string.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
-
inline int32_t compare(const std::string &str) const
Compares the value of the string object to the given string specified by its arguments.
- Parameters:
str – [in] is a comparand string.
- Throws:
std::invalid_argument –
std::out_of_range –
- Returns:
Returns a signed integral indicating the relation between the strings: 0 They compare equal <0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter. >0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.
-
template<::size64_t LEN>
inline bool operator==(const BaseString<LEN> &rhs) const operator==
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if the strings are equal, false otherwise
-
inline bool operator==(const std::string &rhs) const
operator==
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if the strings are equal, false otherwise
-
inline bool operator!=(const char8_t *const rhs) const
operator!=
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Returns:
return True if the strings are not equal, false otherwise
-
template<::size64_t LEN>
inline bool operator!=(const BaseString<LEN> &rhs) const operator!=
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if the strings are not equal, false otherwise
-
inline bool operator!=(const std::string &rhs) const
operator!=
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if the strings are not equal, false otherwise
-
inline bool operator<(const char8_t *const rhs) const
operator<
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Throws:
std::invalid_argument –
- Returns:
return True if rhs is larger
-
template<::size64_t LEN>
inline bool operator<(const BaseString<LEN> &rhs) const operator<
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is larger
-
inline bool operator<(const std::string &rhs) const
operator<
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is larger
-
inline bool operator<=(const char8_t *const rhs) const
operator<=
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Returns:
return True if rhs is larger or equal
-
template<::size64_t LEN>
inline bool operator<=(const BaseString<LEN> &rhs) const operator<
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is larger
-
inline bool operator<=(const std::string &rhs) const
operator<
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is larger
-
inline bool operator>(const char8_t *const rhs) const
operator>
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Throws:
std::invalid_argument –
- Returns:
return True if rhs is smaller
-
template<::size64_t LEN>
inline bool operator>(const BaseString<LEN> &rhs) const operator>
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is smaller
-
inline bool operator>(const std::string &rhs) const
operator>
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is smaller
-
inline bool operator>=(const char8_t *const rhs) const
operator>=
- Parameters:
rhs – [in] is the right hand comparand up to APEX_STRING_SIZE characters
- Returns:
return True if rhs is smaller or equal
-
template<size64_t LEN>
inline bool operator>=(const BaseString<LEN> &rhs) const operator>
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is smaller
-
inline bool operator>=(const std::string &rhs) const
operator>
- Parameters:
rhs – [in] is the right hand comparand
- Returns:
return True if rhs is smaller
-
inline bool empty() const noexcept
Test whether the string contains anything.
- Returns:
true if the string contains no characters; false if it has at least one character.
-
inline const char8_t *c_str() const noexcept
return pointer to the internal string buffer.
-
inline char8_t *data() noexcept
return non const pointer to the internal string buffer.
-
inline constexpr size64_t capacity() const
return the largest number of elements that could be stored in the string.
-
inline char8_t &operator[](size64_t idx)
a standard index operator
- Parameters:
idx – [in] is the index of the indexed character
- Throws:
std::out_of_range –
- Returns:
reference to the indexed character
-
inline char8_t operator[](size64_t idx) const
a standard index operator
- Parameters:
idx – [in] is the index to get the value at
- Throws:
std::out_of_range –
- Returns:
return value at the index
-
inline constexpr ::size64_t get_buffer_size() const noexcept
return the total number of character in the buffer, including the terminating zero
- Returns:
the total number of character in the buffer, including the terminating zero
-
inline operator std::string() const
Convert apex::string to an STL string
- Returns:
return STL string
-
inline void clear() noexcept
Public Static Functions
Public Static Attributes
Protected Attributes
-
char8_t m_string[BUFFER_SIZE]
m_string is string’s storage
-
template<typename Type>
class abs_iterator : public std::iterator<std::random_access_iterator_tag, Type> Public Types
Public Functions
-
inline abs_iterator()
-
inline abs_iterator(const abs_iterator &rhs)
-
inline abs_iterator &operator+=(difference_type rhs)
-
inline abs_iterator &operator-=(difference_type rhs)
-
inline Type &operator[](difference_type rhs)
-
inline const Type &operator[](difference_type rhs) const
-
inline abs_iterator &operator++()
-
inline abs_iterator &operator--()
-
inline abs_iterator operator++(int)
-
inline abs_iterator operator--(int)
-
inline difference_type operator-(const abs_iterator &rhs) const
-
inline abs_iterator operator+(difference_type rhs) const
-
inline abs_iterator operator-(difference_type rhs) const
-
inline bool operator==(const abs_iterator &rhs) const
-
inline bool operator!=(const abs_iterator &rhs) const
-
inline bool operator>(const abs_iterator &rhs) const
-
inline bool operator<(const abs_iterator &rhs) const
-
inline bool operator>=(const abs_iterator &rhs) const
-
inline bool operator<=(const abs_iterator &rhs) const
Friends
-
inline friend abs_iterator operator+(difference_type lhs, const abs_iterator &rhs)
-
inline friend abs_iterator operator-(difference_type lhs, const abs_iterator &rhs)
-
inline abs_iterator()