From a639bcda1e42f48fa32885ede77f9fd320ce731c Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 30 Apr 2020 10:25:50 +0200 Subject: Add methods to convert between encoding and name to QStringConverter Add static methods that allow converting between a name for an encoding and the Encoding enum. Change-Id: I12bc503cf757ea31d3ca8d5e1f1216efddcb16d4 Reviewed-by: Thiago Macieira --- src/corelib/text/qstringconverter.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/corelib/text/qstringconverter.cpp') diff --git a/src/corelib/text/qstringconverter.cpp b/src/corelib/text/qstringconverter.cpp index 9322fcd35e..4972bcde4f 100644 --- a/src/corelib/text/qstringconverter.cpp +++ b/src/corelib/text/qstringconverter.cpp @@ -1474,13 +1474,26 @@ static bool nameMatch(const char *a, const char *b) QStringConverter::QStringConverter(const char *name) : iface(nullptr) +{ + auto e = encodingForName(name); + if (e) + iface = encodingInterfaces + int(e.value()); +} + +std::optional QStringConverter::encodingForName(const char *name) { for (int i = 0; i < LastEncoding + 1; ++i) { - if (nameMatch(encodingInterfaces[i].name, name)) { - iface = encodingInterfaces + i; - break; - } + if (nameMatch(encodingInterfaces[i].name, name)) + return QStringConverter::Encoding(i); } + if (nameMatch(name, "latin1")) + return QStringConverter::Latin1; + return std::nullopt; +} + +const char *QStringConverter::nameForEncoding(QStringConverter::Encoding e) +{ + return encodingInterfaces[int(e)].name; } QT_END_NAMESPACE -- cgit v1.2.3