X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fqstring_helpers.h;h=206d23948694693c48a5aee242e9f2ce08c307c1;hb=8711df9282463c658c2f1972414161430e7e64d8;hp=b53a13a7a5d9fce75cfd79dcdeae36acb1212347;hpb=14f7e7fffec066a1b787ac2eff5cfda1c5c2a225;p=lyx.git diff --git a/src/support/qstring_helpers.h b/src/support/qstring_helpers.h index b53a13a7a5..206d239486 100644 --- a/src/support/qstring_helpers.h +++ b/src/support/qstring_helpers.h @@ -15,6 +15,7 @@ #include "support/docstring.h" #include +#include namespace lyx { @@ -56,17 +57,23 @@ inline bool is_utf16(char_type c) * This is the preferred method of converting anything that possibly * contains non-ASCII stuff to QString. */ -#if QT_VERSION >= 0x040200 inline QString const toqstr(docstring const & ucs4) { // If possible we let qt do the work, since this version does not // need to be superfast. - return QString::fromUcs4(reinterpret_cast(ucs4.data()), ucs4.length()); + return QString::fromUcs4((uint const *)ucs4.data(), ucs4.length()); } -#else -QString const toqstr(docstring const & ucs4); -#endif +/** + * toqstr - convert a UCS4 encoded character into a QString + * + * This is the preferred method of converting anything that possibly + * contains non-ASCII stuff to QString. + */ +inline QString const toqstr(char_type ucs4) +{ + return QString::fromUcs4((uint const *)&ucs4, 1); +} /** * qstring_to_ucs4 - convert a QString into a UCS4 encoded docstring @@ -74,8 +81,13 @@ QString const toqstr(docstring const & ucs4); * This is the preferred method of converting anything that possibly * contains non-ASCII stuff to docstring. */ -docstring const qstring_to_ucs4(QString const & qstr); - +inline docstring const qstring_to_ucs4(QString const & qstr) +{ + if (qstr.isEmpty()) + return docstring(); + QVector const ucs4 = qstr.toUcs4(); + return docstring((char_type const *)(ucs4.constData()), ucs4.size()); +} /** * fromqstr - convert a QString into a UTF8 encoded std::string @@ -83,7 +95,10 @@ docstring const qstring_to_ucs4(QString const & qstr); * This should not be used except for output to lyxerr, since all possibly * non-ASCII stuff should be stored in a docstring. */ -std::string const fromqstr(QString const & str); +inline std::string const fromqstr(QString const & str) +{ + return str.isEmpty() ? std::string() : std::string(str.toUtf8()); +} } // namespace lyx