String::String(const char *str) : _size(0), _str(_storage) { if (str == 0) { _storage[0] = 0; _size = 0; } else initWithCStr(str, strlen(str)); }
U32String::U32String(const char *str) : _size(0), _str(_storage) { if (str == nullptr) { _storage[0] = 0; _size = 0; } else { initWithCStr(str, strlen(str)); } }
U32String::U32String(const value_type *str) : _size(0), _str(_storage) { if (str == nullptr) { _storage[0] = 0; _size = 0; } else { uint32 len = 0; const value_type *s = str; while (*s++) { ++len; } initWithCStr(str, len); } }
U32String::U32String(const String &str) : _size(0) { initWithCStr(str.c_str(), str.size()); }
U32String::U32String(const char *beginP, const char *endP) : _size(0), _str(_storage) { assert(endP >= beginP); initWithCStr(beginP, endP - beginP); }
U32String::U32String(const char *str, uint32 len) : _size(0), _str(_storage) { initWithCStr(str, len); }
U32String::U32String(const value_type *str, uint32 len) : _size(0), _str(_storage) { initWithCStr(str, len); }
U32String &U32String::operator=(const char *str) { initWithCStr(str, strlen(str)); return *this; }
U32String &U32String::operator=(const String &str) { initWithCStr(str.c_str(), str.size()); return *this; }