diff options
Diffstat (limited to 'src/Core/UnicodeString.h')
-rw-r--r-- | src/Core/UnicodeString.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/Core/UnicodeString.h b/src/Core/UnicodeString.h new file mode 100644 index 0000000..aed53b6 --- /dev/null +++ b/src/Core/UnicodeString.h @@ -0,0 +1,64 @@ +/* + * UnicodeString.h + * + * Copyright (C) 2009 Matthias Schiffer <matthias@gamezock.de> + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef MAD_CORE_UNICODESTRING_H_ +#define MAD_CORE_UNICODESTRING_H_ + +#include "export.h" + +#include <string> +#include <boost/cstdint.hpp> +#include <boost/scoped_array.hpp> + +#define U_USING_ICU_NAMESPACE 0 +#include <unicode/unistr.h> + +namespace Mad { +namespace Core { + +class MAD_CORE_EXPORT UnicodeString : public icu::UnicodeString { + public: + UnicodeString() {} + UnicodeString(const icu::UnicodeString &str) : icu::UnicodeString(str) {} + UnicodeString(const char *str) : icu::UnicodeString(str) {} + + UnicodeString substr(boost::int32_t start, boost::int32_t length = -1) const { + if(length < 0) + return icu::UnicodeString(*this, start); + else + return icu::UnicodeString(*this, start, length); + } + + boost::int32_t findFirstOf(const UnicodeString &chars, boost::int32_t start = 0) const; + boost::int32_t findFirstNotOf(const UnicodeString &chars, boost::int32_t start = 0) const; + + std::string extract() const { + boost::uint32_t len = (boost::uint32_t)icu::UnicodeString::extract(0, length(), (char*)0, 0u); + + boost::scoped_array<char> buf(new char[len]); + icu::UnicodeString::extract(0, length(), buf.get(), len); + + return std::string(buf.get(), len); + } +}; + +} +} + +#endif /* MAD_CORE_UNICODESTRING_H_ */ |