21 , m_const_str(str ? str :
"")
22 , m_length(str ? ecs_os_strlen(str) : 0) { }
37 m_const_str = str.m_const_str;
38 m_length = str.m_length;
42 operator const char*()
const {
46 string& operator=(
string&& str) {
49 m_const_str = str.m_const_str;
50 m_length = str.m_length;
56 string& operator=(
const string& str) =
delete;
57 string(
const string& str) =
delete;
60 if (str.m_const_str == m_const_str) {
64 if (!m_const_str || !str.m_const_str) {
68 if (str.m_length != m_length) {
72 return ecs_os_strcmp(str, m_const_str) == 0;
76 return !(*
this == str);
79 bool operator==(
const char *str)
const {
80 if (m_const_str == str) {
84 if (!m_const_str || !str) {
88 return ecs_os_strcmp(str, m_const_str) == 0;
91 bool operator!=(
const char *str)
const {
92 return !(*
this == str);
95 const char* c_str()
const {
99 std::size_t length()
const {
100 return static_cast<std::size_t
>(m_length);
104 static constexpr size_t length(
char const (&)[N] ) {
108 std::size_t size()
const {
115 m_const_str =
nullptr;
126 , m_const_str(str ? str :
"")
127 , m_length(str ? ecs_os_strlen(str) : 0) { }
129 char *m_str =
nullptr;
130 const char *m_const_str;