QString{En,De}coder: add constructors with QString parameters

Because QStringConverter::availableCodecs() returns QString.

Added as Q_WEAK_OVERLOAD so this doesn't create ambiguous overloads when
passing QByteArrays.

Fixes: QTBUG-123919
Change-Id: If1bf59ecbe014b569ba1fffd17c29a253ac22abe
Reviewed-by: Sune Vuorela <sune@vuorela.dk>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Thiago Macieira 2024-04-02 16:24:52 -07:00
parent 99f78eb708
commit f8359084b9
2 changed files with 26 additions and 0 deletions

View File

@ -2509,6 +2509,16 @@ const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e)
\sa isValid()
*/
/*!
\fn constexpr QStringEncoder::QStringEncoder(const QString &name, Flags flags = Flag::Default)
\since 6.8
Creates an encoder object using \a name and \a flags.
If \a name is not the name of a known encoding an invalid converter will get created.
\sa isValid()
*/
/*!
\fn QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)
\fn QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)
@ -2600,6 +2610,16 @@ const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e)
\sa isValid()
*/
/*!
\fn constexpr QStringDecoder::QStringDecoder(const QString &name, Flags flags = Flag::Default)
\since 6.8
Creates an decoder object using \a name and \a flags.
If \a name is not the name of a known encoding an invalid converter will get created.
\sa isValid()
*/
/*!
\fn QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::operator()(const QByteArray &ba)
\fn QStringDecoder::EncodedData<const QByteArray &> QStringDecoder::decode(const QByteArray &ba)

View File

@ -33,6 +33,9 @@ public:
explicit QStringEncoder(const char *name, Flags flags = Flag::Default)
: QStringConverter(name, flags)
{}
Q_WEAK_OVERLOAD explicit QStringEncoder(const QString &name, Flags flags = Flag::Default)
: QStringEncoder(name.toLatin1().constData(), flags)
{}
template<typename T>
struct DecodedData
@ -95,6 +98,9 @@ public:
explicit QStringDecoder(const char *name, Flags f = Flag::Default)
: QStringConverter(name, f)
{}
Q_WEAK_OVERLOAD explicit QStringDecoder(const QString &name, Flags f = Flag::Default)
: QStringDecoder(name.toLatin1().constData(), f)
{}
template<typename T>
struct EncodedData