From 74061b4e2d33d7e2101c4edda26cfc2a1294f32b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 12 Jan 2003 21:17:26 +0000 Subject: use "userstring" for all user viewable strings --- otk/userstring.hh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 83 insertions(+), 7 deletions(-) (limited to 'otk/userstring.hh') diff --git a/otk/userstring.hh b/otk/userstring.hh index 0690f802..601d54e4 100644 --- a/otk/userstring.hh +++ b/otk/userstring.hh @@ -3,26 +3,102 @@ #define __userstring_hh #include +#include + +extern "C" { +#include +} //! userstring is a std::string with an extra flag specifying if the string is //! UTF-8 encoded. class userstring : public std::string { +public: + //! A vector of userstrings + typedef std::vector vector; + private: bool _utf8; public: userstring(bool utf8) : std::string(), _utf8(utf8) {} - userstring(const userstring& s, bool utf8, size_type pos = 0, - size_type n = npos) : std::string(s, pos, n), _utf8(utf8) {} - userstring(const charT *s, bool utf8) : std::string(s), _utf8(utf8) {} - userstring(const charT* s, size_type n, bool utf8) : std::string(s, n), - _utf8(utf8) {} - userstring(size_type n, charT c, bool utf8) : std::string(n, c), - _utf8(utf8) {} + userstring(const userstring& s, size_type pos = 0, + size_type n = npos) : std::string(s, pos, n), _utf8(s._utf8) {} + userstring(const char *s, bool utf8) : std::string(s), _utf8(utf8) {} + userstring(const char *s, size_type n, bool utf8) : std::string(s, n), + _utf8(utf8) {} + userstring(size_type n, char c, bool utf8) : std::string(n, c), + _utf8(utf8) {} + userstring(const_iterator first, const_iterator last, bool utf8) : + std::string(first, last), _utf8(utf8) {} //! Returns if the string is encoded in UTF-8 or not inline bool utf8() const { return _utf8; } + + inline void setUtf8(bool u) { _utf8 = u; } + + inline userstring& insert(size_type pos, const userstring& s) { + assert(s._utf8 == _utf8); + std::string::insert(pos, s); + return *this; + } + + inline userstring& insert(size_type pos, + const userstring& s, + size_type pos1, size_type n) { + assert(s._utf8 == _utf8); + std::string::insert(pos, s, pos1, n); + return *this; + } + + inline userstring& append(const userstring& s) { + assert(s._utf8 == _utf8); + std::string::append(s); + return *this; + } + + inline userstring& append(const userstring& s, + size_type pos, size_type n) { + assert(s._utf8 == _utf8); + std::string::append(s, pos, n); + return *this; + } + + inline userstring& assign(const userstring& s) { + assert(s._utf8 == _utf8); + std::string::assign(s); + return *this; + } + + inline userstring& assign(const userstring& s, + size_type pos, size_type n) { + assert(s._utf8 == _utf8); + std::string::assign(s, pos, n); + return *this; + } + + inline userstring& replace(size_type pos, size_type n, + const userstring& s) { + assert(s._utf8 == _utf8); + std::string::replace(pos, n, s); + return *this; + } + + inline userstring& replace(size_type pos, size_type n, + const userstring& s, + size_type pos1, size_type n1) { + assert(s._utf8 == _utf8); + std::string::replace(pos, n, s, pos1, n1); + return *this; + } + + inline userstring& operator=(const userstring& s) { + return assign(s); + } + + inline userstring& operator+=(const userstring& s) { + return append(s); + } }; #endif // __userstring_hh -- cgit v1.2.3