20 #pragma message "C++ support is required for extras module" 24 #ifndef MCR_EXTRAS_UTIL_STRING_H_ 25 #define MCR_EXTRAS_UTIL_STRING_H_ 27 #include "mcr/extras/base_cpp.h" 38 String(
const char *val =
nullptr,
size_t length = (
size_t)~0)
39 : _buffer(
nullptr), _length(0)
41 setString(val, length);
43 String(
const std::string &val)
44 : _buffer(
nullptr), _length(0)
46 setString(val.c_str(), val.size());
49 : _buffer(
nullptr), _length(0)
51 setString(copytron._buffer, copytron._length);
57 inline String &operator =(
const String ©tron)
59 if (©tron !=
this)
60 setString(copytron._buffer, copytron._length);
63 inline String &operator =(
const char *val)
69 inline operator bool()
const 71 return _buffer && _length && _buffer[0] !=
'\0';
74 inline bool operator !()
const 81 inline const char *operator *()
const 83 return empty() ?
"" : string();
86 inline char &operator[](
size_t index)
88 return _buffer[index];
90 inline const char &operator[](
size_t index)
const 92 return _buffer[index];
99 inline const char *string()
const 103 void setString(
const char *val =
nullptr,
size_t length = (
size_t)~0);
104 inline void terminate()
107 _buffer[_length] =
'\0';
110 inline bool empty()
const 112 return !_buffer || !_length || _buffer[0] ==
'\0';
115 inline size_t length()
const 119 inline size_t size()
const 137 void resize(
size_t val);
142 void setLength(
size_t val);
Raise a compiler error. Usage: #include "mcr/err.h"
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.