summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qstringconverter.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-04-30 10:25:50 +0200
committerLars Knoll <lars.knoll@qt.io>2020-05-14 07:48:49 +0200
commita639bcda1e42f48fa32885ede77f9fd320ce731c (patch)
treed3b0b4dcfff4526df599e94cb59e8c0d9ea07a89 /src/corelib/text/qstringconverter.cpp
parent3ce9162ab5b99594d59b654dcdf2009bc500d3d7 (diff)
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 <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/text/qstringconverter.cpp')
-rw-r--r--src/corelib/text/qstringconverter.cpp21
1 files changed, 17 insertions, 4 deletions
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
@@ -1475,12 +1475,25 @@ 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::Encoding> 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