diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2023-01-17 20:54:52 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2023-02-07 20:04:11 +0200 |
commit | 498f3452285aa44580e1d03baeec126d475f8401 (patch) | |
tree | 6307934b58045f6b6761023f769844d87cdc63ca /src/corelib/serialization | |
parent | 9a8b9473d5f0fd4639193481ba9b344d91f3f00a (diff) | |
download | qtbase-498f3452285aa44580e1d03baeec126d475f8401.tar.gz |
QtMiscUtils: add some more character helpers
isHexDigit, isOctalDigit, isAsciiDigit, isAsciiLower, isAsciiUpper,
isAsciiLetterOrNumber.
This de-duplicates some code through out.
Rename two local lambdas that were called "isAsciiLetterOrNumber" to not
conflict with the method in QtMiscUtils.
Change-Id: I5b631f95b9f109136d19515f7e20b8e2fbca3d43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qjsonparser.cpp | 9 | ||||
-rw-r--r-- | src/corelib/serialization/qtextstream.cpp | 4 | ||||
-rw-r--r-- | src/corelib/serialization/qxmlstream.cpp | 6 | ||||
-rw-r--r-- | src/corelib/serialization/qxmlutils.cpp | 18 |
4 files changed, 19 insertions, 18 deletions
diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp index b11ae3a9d2..d39d766d75 100644 --- a/src/corelib/serialization/qjsonparser.cpp +++ b/src/corelib/serialization/qjsonparser.cpp @@ -11,6 +11,7 @@ #include "private/qstringconverter_p.h" #include "private/qcborvalue_p.h" #include "private/qnumeric_p.h" +#include <private/qtools_p.h> //#define PARSER_DEBUG #ifdef PARSER_DEBUG @@ -28,6 +29,8 @@ static const int nestingLimit = 1024; QT_BEGIN_NAMESPACE +using namespace QtMiscUtils; + // error strings for the JSON parser #define JSONERR_OK QT_TRANSLATE_NOOP("QJsonParseError", "no error occurred") #define JSONERR_UNTERM_OBJ QT_TRANSLATE_NOOP("QJsonParseError", "unterminated object") @@ -693,14 +696,14 @@ bool Parser::parseNumber() if (json < end && *json == '0') { ++json; } else { - while (json < end && *json >= '0' && *json <= '9') + while (json < end && isAsciiDigit(*json)) ++json; } // frac = decimal-point 1*DIGIT if (json < end && *json == '.') { ++json; - while (json < end && *json >= '0' && *json <= '9') { + while (json < end && isAsciiDigit(*json)) { isInt = isInt && *json == '0'; ++json; } @@ -712,7 +715,7 @@ bool Parser::parseNumber() ++json; if (json < end && (*json == '-' || *json == '+')) ++json; - while (json < end && *json >= '0' && *json <= '9') + while (json < end && isAsciiDigit(*json)) ++json; } diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp index 83e97c834d..806616aaf4 100644 --- a/src/corelib/serialization/qtextstream.cpp +++ b/src/corelib/serialization/qtextstream.cpp @@ -196,6 +196,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384; #include "qnumeric.h" #include "qvarlengtharray.h" #include <private/qdebug_p.h> +#include <private/qtools_p.h> #include <locale.h> #include "private/qlocale_p.h" @@ -245,6 +246,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384; QT_BEGIN_NAMESPACE using namespace Qt::StringLiterals; +using namespace QtMiscUtils; //------------------------------------------------------------------- @@ -1686,7 +1688,7 @@ QTextStreamPrivate::NumberParsingStatus QTextStreamPrivate::getNumber(qulonglong int ndigits = 0; while (getChar(&dig)) { int n = dig.toLower().unicode(); - if (n >= '0' && n <= '7') { + if (isOctalDigit(n)) { val *= 8; val += n - '0'; } else { diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp index 82212a5409..e1c0e55eb4 100644 --- a/src/corelib/serialization/qxmlstream.cpp +++ b/src/corelib/serialization/qxmlstream.cpp @@ -16,6 +16,7 @@ #include <qcoreapplication.h> #include <private/qoffsetstringarray_p.h> +#include <private/qtools_p.h> #include <iterator> #include "qxmlstream_p.h" @@ -26,6 +27,7 @@ QT_BEGIN_NAMESPACE using namespace QtPrivate; using namespace Qt::StringLiterals; +using namespace QtMiscUtils; enum { StreamEOF = ~0U }; @@ -1731,9 +1733,7 @@ void QXmlStreamReaderPrivate::checkPublicLiteral(QStringView publicId) case '$': case '_': case '%': case '\'': case '\"': continue; default: - if ((c >= 'a' && c <= 'z') - || (c >= 'A' && c <= 'Z') - || (c >= '0' && c <= '9')) + if (isAsciiLetterOrNumber(c)) continue; } break; diff --git a/src/corelib/serialization/qxmlutils.cpp b/src/corelib/serialization/qxmlutils.cpp index 778e8de72d..00a1121280 100644 --- a/src/corelib/serialization/qxmlutils.cpp +++ b/src/corelib/serialization/qxmlutils.cpp @@ -5,8 +5,12 @@ #include "qxmlutils_p.h" +#include <private/qtools_p.h> + QT_BEGIN_NAMESPACE +using namespace QtMiscUtils; + /* TODO: * - isNameChar() doesn't have to be public, it's only needed in * qdom.cpp -- refactor fixedXmlName() to use isNCName() @@ -197,16 +201,12 @@ bool QXmlUtils::isEncName(QStringView encName) if (encName.isEmpty()) return false; const auto first = encName.front().unicode(); - if (!((first >= 'a' && first <= 'z') || (first >= 'A' && first <= 'Z'))) + if (!(isAsciiLower(first) || isAsciiUpper(first))) return false; for (QChar ch : encName.mid(1)) { const auto cp = ch.unicode(); - if ((cp >= 'a' && cp <= 'z') - || (cp >= 'A' && cp <= 'Z') - || (cp >= '0' && cp <= '9') - || cp == '.' || cp == '_' || cp == '-') { + if (isAsciiLetterOrNumber(cp) || cp == '.' || cp == '_' || cp == '-') continue; - } return false; } return true; @@ -285,12 +285,8 @@ bool QXmlUtils::isPublicID(QStringView candidate) for (QChar ch : candidate) { const ushort cp = ch.unicode(); - if ((cp >= 'a' && cp <= 'z') - || (cp >= 'A' && cp <= 'Z') - || (cp >= '0' && cp <= '9')) - { + if (isAsciiLetterOrNumber(cp)) continue; - } switch (cp) { |