]> git.sesse.net Git - ccbs/blobdiff - bigscreen/ccbs_bigscreen.cpp
Switch to using std::wstring, it supports UCS-4 already, just with a different type :-)
[ccbs] / bigscreen / ccbs_bigscreen.cpp
index b82ab35a1ffaf3947a4f057b33ad3b4e2b74bae8..4f65b6ca79f3d9e33a920bd4c0e082a3bf0d0d53 100644 (file)
@@ -9,20 +9,20 @@
 
 iconv_t ucs4_iconv;
 
-// UCS-4 string
-class widestring : public std::basic_string<unsigned>
+// UCS-4 string with support for getting from UTF-8
+class widestring : public std::wstring
 {
 public:
        void operator= (const char *from)
        {
                unsigned bytes = std::strlen(from);
                char *from_buf = strdup(from);
-               unsigned *to_buf = new unsigned[bytes + 1];
+               wchar_t *to_buf = new wchar_t[bytes + 1];
 
                char *inptr = from_buf, *outptr = reinterpret_cast<char *> (to_buf);
 
                size_t in_left = bytes;
-               size_t out_left = bytes * sizeof(unsigned);
+               size_t out_left = bytes * sizeof(wchar_t);
 
                size_t ret = iconv(ucs4_iconv, NULL, NULL, &outptr, &out_left);
                if (ret == (size_t)(-1)) {
@@ -36,40 +36,13 @@ public:
                }
 
                erase(begin(), end());
-               std::copy(to_buf, reinterpret_cast<unsigned *> (outptr), std::back_inserter(*this));
+               std::copy(to_buf, reinterpret_cast<wchar_t *> (outptr), std::back_inserter(*this));
 
                free(from_buf);
                delete[] to_buf;
        }
 };
 
-template<>
-void std::char_traits<unsigned>::assign(unsigned &to, unsigned const &from)
-{
-       to = from;
-}
-
-template<>
-unsigned *std::char_traits<unsigned>::copy(unsigned *to, unsigned const *from, unsigned n)
-{
-       return static_cast<unsigned *>(memcpy(to, from, n * sizeof(unsigned)));
-}
-
-template<>
-unsigned *std::char_traits<unsigned>::move(unsigned *to, unsigned const *from, unsigned n)
-{
-       return static_cast<unsigned *>(memmove(to, from, n * sizeof(unsigned)));
-}
-
-template<>
-unsigned *std::char_traits<unsigned>::assign(unsigned *to, size_t n, unsigned a)
-{
-       for (unsigned i = 0; i < n; ++i)
-               *to++ = a;
-       return to;
-}
-
-
 template<>
 void pqxx::from_string<widestring>(const char *from, widestring &to)
 {