X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fqstring_helpers.h;h=9c28092811ed9c980ff04f89c18ec0531a5a2efa;hb=8d640dc77608bedddb5b00982c23665584f52d21;hp=86b2e037fe33040dbe6a4e48d52abb8821d531ea;hpb=1d64673c2202837146e62dfc3bd9c411f81e0dc1;p=lyx.git diff --git a/src/support/qstring_helpers.h b/src/support/qstring_helpers.h index 86b2e037fe..9c28092811 100644 --- a/src/support/qstring_helpers.h +++ b/src/support/qstring_helpers.h @@ -12,25 +12,23 @@ #ifndef QSTRING_HELPERS_H #define QSTRING_HELPERS_H -#include "support/docstring.h" +#include "support/strfwd.h" -#include -#include - -#include +class QString; namespace lyx { +class LyXErr; + +LyXErr & operator<<(LyXErr &, QString const &); + /** * toqstr - convert a UTF8 encoded char * into a QString * * This should not be used, since all possibly non-ASCII stuff should be * stored in a docstring. */ -inline QString const toqstr(char const * str) -{ - return QString::fromUtf8(str); -} +QString toqstr(char const * str); /** @@ -39,14 +37,11 @@ inline QString const toqstr(char const * str) * This should not be used, since all possibly non-ASCII stuff should be * stored in a docstring. */ -inline QString const toqstr(std::string const & str) -{ - return toqstr(str.c_str()); -} +QString toqstr(std::string const & str); /// Is \p c a valid utf16 char? -inline bool is_utf16(char_type c) +inline bool is_utf16(unsigned int c) { // 0xd800 ... 0xdfff is the range of surrogate pairs. return c < 0xd800 || (c > 0xdfff && c < 0x10000); @@ -54,50 +49,20 @@ inline bool is_utf16(char_type c) /** - * Convert a QChar into a UCS4 character. - * This is a hack (it does only make sense for the common part of the UCS4 - * and UTF16 encodings) and should not be used. - * This does only exist because of performance reasons (a real conversion - * using iconv is too slow on windows). - */ -inline char_type const qchar_to_ucs4(QChar const & qchar) -{ - BOOST_ASSERT(is_utf16(static_cast(qchar.unicode()))); - return static_cast(qchar.unicode()); -} - - -/** - * Convert a UCS4 character into a QChar. - * This is a hack (it does only make sense for the common part of the UCS4 - * and UTF16 encodings) and should not be used. - * This does only exist because of performance reasons (a real conversion - * using iconv is too slow on windows). + * toqstr - convert a UCS4 encoded docstring into a QString + * + * This is the preferred method of converting anything that possibly + * contains non-ASCII stuff to QString. */ -inline QChar const ucs4_to_qchar(char_type const ucs4) -{ - BOOST_ASSERT(is_utf16(ucs4)); - return QChar(static_cast(ucs4)); -} - +QString toqstr(docstring const & ucs4); /** - * toqstr - convert a UCS4 encoded docstring into a QString + * 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. */ -#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()); -} -#else -QString const toqstr(docstring const & ucs4); -#endif - +QString toqstr(char_type ucs4); /** * qstring_to_ucs4 - convert a QString into a UCS4 encoded docstring @@ -105,8 +70,7 @@ 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); - +docstring qstring_to_ucs4(QString const & qstr); /** * fromqstr - convert a QString into a UTF8 encoded std::string @@ -114,7 +78,7 @@ 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); +std::string fromqstr(QString const & str); } // namespace lyx