X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fqstring_helpers.h;h=905343e77d568d164055dcc0c609bc6127a48dbf;hb=9214f925992d61d0471e8ab401a07e2aeb8db750;hp=87b77ccd107b5c73d27fadd8c6037695d08aeb3d;hpb=09ff5016cdd4394929ff0a714a0a00bf4d0d03d0;p=features.git diff --git a/src/support/qstring_helpers.h b/src/support/qstring_helpers.h index 87b77ccd10..905343e77d 100644 --- a/src/support/qstring_helpers.h +++ b/src/support/qstring_helpers.h @@ -12,23 +12,23 @@ #ifndef QSTRING_HELPERS_H #define QSTRING_HELPERS_H -#include "support/docstring.h" +#include "support/strfwd.h" -#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); /** @@ -37,10 +37,7 @@ 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? @@ -57,13 +54,15 @@ inline bool is_utf16(char_type c) * This is the preferred method of converting anything that possibly * contains non-ASCII stuff to QString. */ -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()); -} +QString toqstr(docstring const & ucs4); +/** + * 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. + */ +QString toqstr(char_type ucs4); /** * qstring_to_ucs4 - convert a QString into a UCS4 encoded docstring @@ -71,13 +70,7 @@ inline QString const toqstr(docstring const & ucs4) * This is the preferred method of converting anything that possibly * contains non-ASCII stuff to docstring. */ -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()); -} +docstring qstring_to_ucs4(QString const & qstr); /** * fromqstr - convert a QString into a UTF8 encoded std::string @@ -85,10 +78,28 @@ inline 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. */ -inline std::string const fromqstr(QString const & str) -{ - return str.isEmpty() ? std::string() : std::string(str.toUtf8()); -} +std::string fromqstr(QString const & str); + +/** + * constructs a regex to filter on consecutive characters + * matches lower- and uppercase on lowercase characters, + * and just uppercase for uppercase + */ +QString charFilterRegExp(QString const & filter); + +/** + * as above, but constructs a capturing regex for a sequence of characters + */ +QString charFilterRegExpC(QString const & filter); + +/// Method to replace dot with localized decimal separator +QString locLengthString(QString const & str); + +/// Same for doscstring +docstring locLengthDocString(docstring const str); + +/// Method to replace localized decimal separator by dot +QString unlocLengthString(QString const & str); } // namespace lyx