diff --git a/src/common/String.cpp b/src/common/String.cpp index a3e1788d9..c50f5fa34 100644 --- a/src/common/String.cpp +++ b/src/common/String.cpp @@ -437,135 +437,3 @@ String::Split String::SplitFloat(double &value, size_t pos, std::ios_base::fmtfl LocaleImpl.FlushWStream(); return split; } - -template<> std::ctype::~ctype() -{ -} -template<> std::numpunct::numpunct(size_t ref): std::locale::facet(ref) -{ -} -template<> std::numpunct::~numpunct() -{ -} - -static struct Locale32Impl -{ - std::ctype const &ctype16; - std::numpunct const &numpunct16; - Locale32Impl(): - ctype16(std::use_facet >(std::locale())), - numpunct16(std::use_facet >(std::locale())) - { - std::locale::global(std::locale(std::locale(), new std::ctype())); - std::locale::global(std::locale(std::locale(), new std::numpunct())); - std::locale::global(std::locale(std::locale(), new std::num_put())); - } -} -Locale32Impl; - -template<> bool std::ctype::do_is(mask m, char32_t ch) const -{ - return ch <= 0xFFFF ? Locale32Impl.ctype16.is(m, ch) : (m & print); -} -template<> char32_t const *std::ctype::do_is(char32_t const *low, char32_t const *high, mask *vec) const -{ - while(low < high) - { - if(*low <= 0xFFFF) - { - wchar_t l = *low; - Locale32Impl.ctype16.is(&l, &l + 1, vec); - } - else - *vec = print; - low++; - } - return high; -} -template<> char32_t const *std::ctype::do_scan_is(mask m, char32_t const *beg, char32_t const *end) const -{ - while(beg < end) - if(do_is(m, *beg)) - return beg; - else - beg++; - return end; -} -template<> char32_t const *std::ctype::do_scan_not(mask m, char32_t const *beg, char32_t const *end) const -{ - while(beg < end) - if(!do_is(m, *beg)) - return beg; - else - beg++; - return end; -} -template<> char32_t std::ctype::do_toupper(char32_t ch) const -{ - return ch <= 0xFFFF ? Locale32Impl.ctype16.toupper(ch) : ch; -} -template<> char32_t const *std::ctype::do_toupper(char32_t *beg, char32_t const *end) const -{ - while(beg < end) - { - *beg = do_toupper(*beg); - beg++; - } - return end; -} -template<> char32_t std::ctype::do_tolower(char32_t ch) const -{ - return ch <= 0xFFFF ? Locale32Impl.ctype16.tolower(ch) : ch; -} -template<> char32_t const *std::ctype::do_tolower(char32_t *beg, char32_t const *end) const -{ - while(beg < end) - { - *beg = do_tolower(*beg); - beg++; - } - return end; -} -template<> char32_t std::ctype::do_widen(char ch) const -{ - return Locale32Impl.ctype16.widen(ch); -} -template<> char const *std::ctype::do_widen(char const *beg, char const *end, char32_t *dst) const -{ - while(beg < end) - *(dst++) = do_widen(*(beg++)); - return end; -} -template<> char std::ctype::do_narrow(char32_t ch, char dflt) const -{ - return ch <= 0xFFFF ? Locale32Impl.ctype16.narrow(ch, dflt) : dflt; -} -template<> char32_t const *std::ctype::do_narrow(char32_t const *beg, char32_t const *end, char dflt, char *dst) const -{ - while(beg < end) - *(dst++) = do_narrow(*(beg++), dflt); - return end; -} - -template<> char32_t std::numpunct::do_decimal_point() const -{ - return Locale32Impl.numpunct16.decimal_point(); -} -template<> char32_t std::numpunct::do_thousands_sep() const -{ - return Locale32Impl.numpunct16.thousands_sep(); -} -template<> std::string std::numpunct::do_grouping() const -{ - return Locale32Impl.numpunct16.grouping(); -} -template<> std::basic_string std::numpunct::do_truename() const -{ - std::basic_string name = Locale32Impl.numpunct16.truename(); - return std::basic_string(name.begin(), name.end()); -} -template<> std::basic_string std::numpunct::do_falsename() const -{ - std::basic_string name = Locale32Impl.numpunct16.falsename(); - return std::basic_string(name.begin(), name.end()); -} diff --git a/src/common/String.h b/src/common/String.h index 3e64736fc..05629fc33 100644 --- a/src/common/String.h +++ b/src/common/String.h @@ -259,8 +259,6 @@ public: ByteString ToUtf8() const; ByteString ToAscii() const; template static String Build(Ts&&... args); - - using Stream = std::basic_stringstream; }; inline String operator+(String const &lhs, String const &rhs) { return static_cast const &>(lhs) + static_cast const &>(rhs); }