libGimbal 0.1.0
C17-Based Extended Standard Library and Cross-Language Runtime Framework
Loading...
Searching...
No Matches
gimbal::StringViewBase< CRTP > Class Template Reference
Inheritance diagram for gimbal::StringViewBase< CRTP >:
Collaboration diagram for gimbal::StringViewBase< CRTP >:

Public Types

using StringViewType
 
using Derived
 
using Iterable
 
using iterator
 
using const_iterator
 

Public Member Functions

 operator const GblStringBuffer * () const
 
const char & getElement_ (size_t index) const
 
char & getElement_ (size_t index)
 
void setElement_ (size_t index, char value)
 
size_t getElementCount_ (void) const
 
Size getStackBytes (void) const
 
constexpr Size getLength (void) const
 
constexpr Size getCapacity (void) const
 
Context * getContext (void) const
 
constexpr bool isEmpty (void) const
 
constexpr bool isStack (void) const
 
constexpr bool isHeap (void) const
 
const char * getCString (void) const
 
char * getCString (void)
 
std::string toStdString (void) const
 
constexpr std::string_view toStringView (void) const
 

Protected Member Functions

decltype(auto) str_ (void) const
 
decltype(auto) str_ (void)
 

Friends

constexpr bool operator== (const Derived &lhs, const char *pRhs) noexcept
 
constexpr decltype(auto) operator<=> (const Derived &lhs, const char *pRhs) noexcept
 
constexpr bool operator== (const Derived &lhs, const std::string &rhs) noexcept
 
constexpr decltype(auto) operator<=> (const Derived &lhs, const std::string &rhs) noexcept
 
constexpr bool operator== (const Derived &lhs, std::string_view rhs) noexcept
 
constexpr decltype(auto) operator<=> (const Derived &lhs, std::string_view rhs) noexcept
 
constexpr bool operator== (const Derived &lhs, const string_base auto &rhs)
 
constexpr decltype(auto) operator<=> (const Derived &lhs, const string_base auto &rhs)
 
std::ostream & operator<< (std::ostream &output, const Derived &s)
 

Detailed Description

template<typename CRTP>
class gimbal::StringViewBase< CRTP >

Definition at line 31 of file gimbal_string.hpp.

Member Typedef Documentation

◆ StringViewType

template<typename CRTP>
using gimbal::StringViewBase< CRTP >::StringViewType

Definition at line 37 of file gimbal_string.hpp.

◆ Derived

template<typename CRTP>
using gimbal::StringViewBase< CRTP >::Derived

Definition at line 38 of file gimbal_string.hpp.

◆ Iterable

template<typename CRTP>
using gimbal::StringViewBase< CRTP >::Iterable

Definition at line 39 of file gimbal_string.hpp.

◆ iterator

template<typename CRTP>
using gimbal::StringViewBase< CRTP >::iterator

Definition at line 40 of file gimbal_string.hpp.

◆ const_iterator

template<typename CRTP>
using gimbal::StringViewBase< CRTP >::const_iterator

Definition at line 41 of file gimbal_string.hpp.

Member Function Documentation

◆ str_() [1/2]

template<typename CRTP>
decltype(auto) gimbal::StringViewBase< CRTP >::str_ ( void ) const
inlineprotected

Definition at line 43 of file gimbal_string.hpp.

43 {
44 return static_cast<const CRTP*>(this)->getString_();
45 }

◆ str_() [2/2]

template<typename CRTP>
decltype(auto) gimbal::StringViewBase< CRTP >::str_ ( void )
inlineprotected

Definition at line 47 of file gimbal_string.hpp.

47 {
48 return static_cast<CRTP*>(this)->getString_();
49 }

◆ operator const GblStringBuffer *()

template<typename CRTP>
gimbal::StringViewBase< CRTP >::operator const GblStringBuffer * ( ) const
inline

Definition at line 53 of file gimbal_string.hpp.

53{ return str_(); }

◆ getElement_() [1/2]

template<typename CRTP>
const char & gimbal::StringViewBase< CRTP >::getElement_ ( size_t index) const
inline

Definition at line 56 of file gimbal_string.hpp.

56 {
57 return getCString()[index];
58 }

◆ getElement_() [2/2]

template<typename CRTP>
char & gimbal::StringViewBase< CRTP >::getElement_ ( size_t index)
inline

Definition at line 60 of file gimbal_string.hpp.

60 {
61 return getCString()[index];
62 }

◆ setElement_()

template<typename CRTP>
void gimbal::StringViewBase< CRTP >::setElement_ ( size_t index,
char value )
inline

Definition at line 64 of file gimbal_string.hpp.

64 {
65 const_cast<char*>(getCString())[index] = value;
66 }

◆ getElementCount_()

template<typename CRTP>
size_t gimbal::StringViewBase< CRTP >::getElementCount_ ( void ) const
inline

Definition at line 68 of file gimbal_string.hpp.

68 {
69 return getLength();
70 }

◆ getStackBytes()

template<typename CRTP>
Size gimbal::StringViewBase< CRTP >::getStackBytes ( void ) const
inline

Definition at line 74 of file gimbal_string.hpp.

74 {
76 return size;
77 }

◆ getLength()

template<typename CRTP>
Size gimbal::StringViewBase< CRTP >::getLength ( void ) const
inlineconstexpr

Definition at line 79 of file gimbal_string.hpp.

79 {
80 return GblStringBuffer_length(str_());
81 }

◆ getCapacity()

template<typename CRTP>
Size gimbal::StringViewBase< CRTP >::getCapacity ( void ) const
inlineconstexpr

Definition at line 83 of file gimbal_string.hpp.

83 {
84 return GblStringBuffer_capacity(str_());
85 }

◆ getContext()

template<typename CRTP>
Context * gimbal::StringViewBase< CRTP >::getContext ( void ) const
inline

Definition at line 87 of file gimbal_string.hpp.

87 {
89 return pCtx == nullptr? nullptr : Context::fromGblObj(pCtx);
90 }

◆ isEmpty()

template<typename CRTP>
bool gimbal::StringViewBase< CRTP >::isEmpty ( void ) const
inlineconstexpr

Definition at line 92 of file gimbal_string.hpp.

92 {
94 return empty;
95 }

◆ isStack()

template<typename CRTP>
bool gimbal::StringViewBase< CRTP >::isStack ( void ) const
inlineconstexpr

Definition at line 97 of file gimbal_string.hpp.

97 {
99 return stack;
100 }

◆ isHeap()

template<typename CRTP>
bool gimbal::StringViewBase< CRTP >::isHeap ( void ) const
inlineconstexpr

Definition at line 104 of file gimbal_string.hpp.

104 {
105 return !isStack();
106 }

◆ getCString() [1/2]

template<typename CRTP>
const char * gimbal::StringViewBase< CRTP >::getCString ( void ) const
inline

Definition at line 108 of file gimbal_string.hpp.

108 {
109 const char* pCStr = GblStringBuffer_cString(str_());
110 return pCStr;
111 }

◆ getCString() [2/2]

template<typename CRTP>
char * gimbal::StringViewBase< CRTP >::getCString ( void )
inline

Definition at line 113 of file gimbal_string.hpp.

113 {
114 const char* pStr = GblStringBuffer_cString(str_());
115 return const_cast<char*>(pStr);
116 }

◆ toStdString()

template<typename CRTP>
std::string gimbal::StringViewBase< CRTP >::toStdString ( void ) const
inline

Definition at line 118 of file gimbal_string.hpp.

118 {
119 return std::string(getCString());
120 }

◆ toStringView()

template<typename CRTP>
std::string_view gimbal::StringViewBase< CRTP >::toStringView ( void ) const
inlineconstexpr

Definition at line 122 of file gimbal_string.hpp.

122 {
123 return getLength()?
124 std::string_view(getCString(), getLength()) : std::string_view();
125 }

Friends And Related Symbol Documentation

◆ operator== [1/4]

template<typename CRTP>
bool operator== ( const Derived & lhs,
const char * pRhs )
friend

Definition at line 126 of file gimbal_string.hpp.

126 {
127 return (lhs.toStringView() == std::string_view(pRhs));
128 }

◆ operator<=> [1/4]

template<typename CRTP>
decltype(auto) operator<=> ( const Derived & lhs,
const char * pRhs )
friend

Definition at line 129 of file gimbal_string.hpp.

129 {
130 return (lhs.toStringView() <=> std::string_view(pRhs));
131 }

◆ operator== [2/4]

template<typename CRTP>
bool operator== ( const Derived & lhs,
const std::string & rhs )
friend

Definition at line 132 of file gimbal_string.hpp.

132 {
133 return (lhs.toStdString() == rhs);
134 }

◆ operator<=> [2/4]

template<typename CRTP>
decltype(auto) operator<=> ( const Derived & lhs,
const std::string & rhs )
friend

Definition at line 135 of file gimbal_string.hpp.

135 {
136 return (lhs.toStdString() <=> rhs);
137 }

◆ operator== [3/4]

template<typename CRTP>
bool operator== ( const Derived & lhs,
std::string_view rhs )
friend

Definition at line 146 of file gimbal_string.hpp.

146 {
147 return (lhs.toStringView() == rhs);
148 }

◆ operator<=> [3/4]

template<typename CRTP>
decltype(auto) operator<=> ( const Derived & lhs,
std::string_view rhs )
friend

Definition at line 149 of file gimbal_string.hpp.

149 {
150 return (lhs.toStringView() <=> rhs);
151 }

◆ operator== [4/4]

template<typename CRTP>
bool operator== ( const Derived & lhs,
const string_base auto & rhs )
friend

Definition at line 152 of file gimbal_string.hpp.

152 {
154 return result == 0;
155 }

◆ operator<=> [4/4]

template<typename CRTP>
decltype(auto) operator<=> ( const Derived & lhs,
const string_base auto & rhs )
friend

Definition at line 156 of file gimbal_string.hpp.

156 {
157 return (lhs <=> rhs);
158 }

◆ operator<<

template<typename CRTP>
std::ostream & operator<< ( std::ostream & output,
const Derived & s )
friend

Definition at line 159 of file gimbal_string.hpp.

159 {
160 output << s.getCString();
162 return output;
163 }

The documentation for this class was generated from the following file: