diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2011-10-18 19:12:21 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-21 22:31:00 +0100 |
commit | 9514138a5ca68341122cff4be2744c995c8ba2c4 (patch) | |
tree | 81abbaaf6698d3e7cfdd3065c18d1b60ddaee461 | |
parent | 5f049621326bd0236713263c71b0a78f8e7dff3f (diff) |
optimize QString::toLower()/toUpper() for special cases, step 2
from now, QUnicodeTables::specialCaseMap[] starts with a placeholder; so,
if somethingCaseSpecial is true, then somethingCaseDiff is always greater than 0
Change-Id: Ibb1870512836eee71b1521564c0745096c05b2f9
Merge-request: 70
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Olivier
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r-- | src/corelib/tools/qstring.cpp | 6 | ||||
-rw-r--r-- | util/unicode/main.cpp | 10 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index b0c259272e..704545667c 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -4906,7 +4906,7 @@ QString QString::toLower() const } else { prop = qGetProp(*p); } - if (prop->lowerCaseDiff || prop->lowerCaseSpecial) { + if (prop->lowerCaseDiff) { if (QChar::isLowSurrogate(*p)) --p; // safe; diff is 0 for surrogates QString s(d->size, Qt::Uninitialized); @@ -4967,7 +4967,7 @@ QString QString::toCaseFolded() const } else { prop = qGetProp(*p); } - if (prop->caseFoldDiff || prop->caseFoldSpecial) { + if (prop->caseFoldDiff) { if (QChar::isLowSurrogate(*p)) --p; // safe; diff is 0 for surrogates QString s(d->size, Qt::Uninitialized); @@ -5028,7 +5028,7 @@ QString QString::toUpper() const } else { prop = qGetProp(*p); } - if (prop->upperCaseDiff || prop->upperCaseSpecial) { + if (prop->upperCaseDiff) { if (QChar::isLowSurrogate(*p)) --p; // safe; diff is 0 for surrogates QString s(d->size, Qt::Uninitialized); diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index 40294eba4d..4a11ec667b 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -476,7 +476,10 @@ static int appendToSpecialCaseMap(const QList<int> &map) utf16map.prepend(length); specialCaseMaxLen = qMax(specialCaseMaxLen, length); - int i = 0; + if (specialCaseMap.isEmpty()) + specialCaseMap << 0; // placeholder + + int i = 1; while (i < specialCaseMap.size()) { int n = specialCaseMap.at(i); if (n == length) { @@ -2251,8 +2254,9 @@ static QByteArray createPropertyInfo() "}\n\n"; - out += "static const ushort specialCaseMap[] = {"; - int i = 0; + out += "static const ushort specialCaseMap[] = {\n"; + out += " 0x0, // placeholder"; + int i = 1; while (i < specialCaseMap.size()) { out += "\n "; int n = specialCaseMap.at(i); |