diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2011-10-18 12:27:24 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-18 14:15:50 +0200 |
commit | 74110936f0426248058e1ec1655b5c164bf40b70 (patch) | |
tree | 1761fdef058fc26a945323ea36d4ed6b30be590c /src/corelib/tools/qstring.h | |
parent | 044770f9b004ff364a1581a4a442bcad2e663325 (diff) |
make fromWCharArray() and toWCharArray() inlined
because we may have the size of wchar_t varying,
we need to know which is the correct encoding: UTF-16 or UCS-4
Merge-request: 49
Change-Id: Ib5a1e7dea51d0cd8394e686634a36aae984fa072
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Diffstat (limited to 'src/corelib/tools/qstring.h')
-rw-r--r-- | src/corelib/tools/qstring.h | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h index b73a34a2a0..313b4769e7 100644 --- a/src/corelib/tools/qstring.h +++ b/src/corelib/tools/qstring.h @@ -415,8 +415,8 @@ public: static QString fromUcs4(const uint *, int size = -1); static QString fromRawData(const QChar *, int size); - int toWCharArray(wchar_t *array) const; - static QString fromWCharArray(const wchar_t *, int size = -1); + inline int toWCharArray(wchar_t *array) const; + static inline QString fromWCharArray(const wchar_t *string, int size = -1) Q_REQUIRED_RESULT; QString &setRawData(const QChar *unicode, int size); QString &setUnicode(const QChar *unicode, int size); @@ -625,6 +625,7 @@ private: const QChar *data2, int length2); static Data *fromLatin1_helper(const char *str, int size = -1); static Data *fromAscii_helper(const char *str, int size = -1); + static int toUcs4_helper(const ushort *uc, int length, uint *out); void replace_helper(uint *indices, int nIndices, int blen, const QChar *after, int alen); friend class QCharRef; friend class QTextCodec; @@ -771,6 +772,20 @@ inline QString QString::arg(const QString &a1, const QString &a2, const QString inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const { return section(QString(asep), astart, aend, aflags); } +inline int QString::toWCharArray(wchar_t *array) const +{ + if (sizeof(wchar_t) == sizeof(QChar)) { + qMemCopy(array, d->data(), sizeof(QChar) * size()); + return size(); + } + return toUcs4_helper(d->data(), size(), reinterpret_cast<uint *>(array)); +} +inline QString QString::fromWCharArray(const wchar_t *string, int size) +{ + return sizeof(wchar_t) == sizeof(QChar) ? fromUtf16((const ushort *)string, size) + : fromUcs4((uint *)string, size); +} + class Q_CORE_EXPORT QCharRef { QString &s; |