diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-04-30 10:25:50 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-05-14 07:48:49 +0200 |
commit | a639bcda1e42f48fa32885ede77f9fd320ce731c (patch) | |
tree | d3b0b4dcfff4526df599e94cb59e8c0d9ea07a89 /src/corelib/text/qstringconverter.cpp | |
parent | 3ce9162ab5b99594d59b654dcdf2009bc500d3d7 (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.cpp | 21 |
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 |