diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2017-03-31 16:51:16 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2017-04-06 12:05:33 +0000 |
commit | c928d082674124e57bec7afdcf6ee6d51e586464 (patch) | |
tree | 321fb065ff2059896c823f5da89a9178cfa6454c /src/corelib/codecs | |
parent | edb29be8ba282181bd64af0d2a316b3220a1f2ba (diff) |
QTextCodec: add QStringView overloads
[ChangeLog][QtCore][QTextCodec] Added fromUnicode()
and canEncode() overloads taking QStringView.
[ChangeLog][QtCore][QTextEncoder] Added fromUnicode()
overload taking QStringView.
Change-Id: I2599f25570480d967921ccd4414e092bfc90d821
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/codecs')
-rw-r--r-- | src/corelib/codecs/qtextcodec.cpp | 42 | ||||
-rw-r--r-- | src/corelib/codecs/qtextcodec.h | 9 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index aed3532024..d9c092bb4c 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -803,6 +803,7 @@ QTextEncoder* QTextCodec::makeEncoder(QTextCodec::ConversionFlags flags) const The \a state of the convertor used is updated. */ +#if QT_STRINGVIEW_LEVEL < 2 /*! Converts \a str from Unicode to the encoding of this codec, and returns the result in a QByteArray. @@ -811,6 +812,19 @@ QByteArray QTextCodec::fromUnicode(const QString& str) const { return convertFromUnicode(str.constData(), str.length(), 0); } +#endif + +/*! + \overload + \since 5.10 + + Converts \a str from Unicode to the encoding of this codec, and + returns the result in a QByteArray. +*/ +QByteArray QTextCodec::fromUnicode(QStringView str) const +{ + return convertFromUnicode(str.data(), str.length(), nullptr); +} /*! \fn QString QTextCodec::toUnicode(const char *input, int size, @@ -844,6 +858,7 @@ bool QTextCodec::canEncode(QChar ch) const return (state.invalidChars == 0); } +#if QT_STRINGVIEW_LEVEL < 2 /*! \overload @@ -856,7 +871,22 @@ bool QTextCodec::canEncode(const QString& s) const convertFromUnicode(s.constData(), s.length(), &state); return (state.invalidChars == 0); } +#endif + +/*! + \overload + \since 5.10 + Returns \c true if the Unicode string \a s can be fully encoded + with this codec; otherwise returns \c false. +*/ +bool QTextCodec::canEncode(QStringView s) const +{ + ConverterState state; + state.flags = ConvertInvalidToNull; + convertFromUnicode(s.data(), s.length(), &state); + return !state.invalidChars; +} /*! \overload @@ -921,6 +951,7 @@ bool QTextEncoder::hasFailure() const return state.invalidChars != 0; } +#if QT_STRINGVIEW_LEVEL < 2 /*! Converts the Unicode string \a str into an encoded QByteArray. */ @@ -929,6 +960,17 @@ QByteArray QTextEncoder::fromUnicode(const QString& str) QByteArray result = c->fromUnicode(str.constData(), str.length(), &state); return result; } +#endif + +/*! + \overload + \since 5.10 + Converts the Unicode string \a str into an encoded QByteArray. +*/ +QByteArray QTextEncoder::fromUnicode(QStringView str) +{ + return c->fromUnicode(str.data(), str.length(), &state); +} /*! \overload diff --git a/src/corelib/codecs/qtextcodec.h b/src/corelib/codecs/qtextcodec.h index 47b2fe6eed..70ef6e3692 100644 --- a/src/corelib/codecs/qtextcodec.h +++ b/src/corelib/codecs/qtextcodec.h @@ -79,11 +79,17 @@ public: static QTextCodec *codecForUtfText(const QByteArray &ba, QTextCodec *defaultCodec); bool canEncode(QChar) const; +#if QT_STRINGVIEW_LEVEL < 2 bool canEncode(const QString&) const; +#endif + bool canEncode(QStringView) const; QString toUnicode(const QByteArray&) const; QString toUnicode(const char* chars) const; +#if QT_STRINGVIEW_LEVEL < 2 QByteArray fromUnicode(const QString& uc) const; +#endif + QByteArray fromUnicode(QStringView uc) const; enum ConversionFlag { DefaultConversion, ConvertInvalidToNull = 0x80000000, @@ -135,7 +141,10 @@ public: explicit QTextEncoder(const QTextCodec *codec) : c(codec), state() {} QTextEncoder(const QTextCodec *codec, QTextCodec::ConversionFlags flags); ~QTextEncoder(); +#if QT_STRINGVIEW_LEVEL < 2 QByteArray fromUnicode(const QString& str); +#endif + QByteArray fromUnicode(QStringView str); QByteArray fromUnicode(const QChar *uc, int len); bool hasFailure() const; private: |