+/**
+ * toqstr - convert ucs4 into QString
+ *
+ * QString uses utf16 internally.
+ */
+inline char_type const qchar_to_ucs4(QChar const & qchar) {
+ return static_cast<char_type>(qchar.unicode());
+}
+
+inline QChar const ucs4_to_qchar(char_type const ucs4) {
+ // FIXME: The following cast is not a real conversion but it work
+ // for the ucs2 subrange of unicode. Instead of an assertion we should
+ // return some special characters that indicates that its display is
+ // not supported.
+ BOOST_ASSERT(ucs4 < 65536);
+ return QChar(static_cast<unsigned short>(ucs4));
+}
+
+QString const toqstr(docstring const & ucs4);
+
+void ucs4_to_qstring(docstring const & str, QString & s);
+
+inline void ucs4_to_qstring(char_type const * str, size_t ls, QString & s)
+{
+ int i = static_cast<int>(ls);
+ s.resize(i);
+ for (i ; --i >= 0; )
+ s[i] = ucs4_to_qchar(str[i]);
+}
+
+
+QString ucs4_to_qstring(docstring const & str);
+
+docstring const qstring_to_ucs4(QString const & qstr);
+
+void qstring_to_ucs4(QString const & qstr, std::vector<char_type> & ucs4);
+