diff options
author | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-05-13 15:26:42 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-05-24 12:38:53 +0000 |
commit | 11d957d04381c7162dd5621c61f9963580ec7041 (patch) | |
tree | a876f1ba96292d420562b281d3d623500e899da7 /qmake | |
parent | e45a9fe457a4e5e70bf4e62092b253675dc97819 (diff) |
make QMakeEvaluator::isActiveConfig() take a QStringRef argument
saves some more cheap but pointless conversions to QString.
this makes the introduction of the ProStringList::contains(QStringRef)
overload necessary.
Change-Id: Ic61993bd9a4b28fbba1b8e346345fd5f5636c6f0
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/library/proitems.cpp | 8 | ||||
-rw-r--r-- | qmake/library/proitems.h | 1 | ||||
-rw-r--r-- | qmake/library/qmakebuiltins.cpp | 2 | ||||
-rw-r--r-- | qmake/library/qmakeevaluator.cpp | 8 | ||||
-rw-r--r-- | qmake/library/qmakeevaluator.h | 2 | ||||
-rw-r--r-- | qmake/project.h | 3 |
6 files changed, 17 insertions, 7 deletions
diff --git a/qmake/library/proitems.cpp b/qmake/library/proitems.cpp index dc84c40d06..66db190bc1 100644 --- a/qmake/library/proitems.cpp +++ b/qmake/library/proitems.cpp @@ -458,6 +458,14 @@ bool ProStringList::contains(const ProString &str, Qt::CaseSensitivity cs) const return false; } +bool ProStringList::contains(const QStringRef &str, Qt::CaseSensitivity cs) const +{ + for (int i = 0; i < size(); i++) + if (!at(i).toQStringRef().compare(str, cs)) + return true; + return false; +} + bool ProStringList::contains(const char *str, Qt::CaseSensitivity cs) const { for (int i = 0; i < size(); i++) diff --git a/qmake/library/proitems.h b/qmake/library/proitems.h index f373f928df..db5ad7c82b 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -247,6 +247,7 @@ public: void removeDuplicates(); bool contains(const ProString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; + bool contains(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return contains(ProString(str), cs); } bool contains(const char *str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const; diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index d927b409b1..9d35a31ffc 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -1235,7 +1235,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return ReturnFalse; } if (args.count() == 1) - return returnBool(isActiveConfig(args.at(0).toQString(m_tmp2))); + return returnBool(isActiveConfig(args.at(0).toQStringRef())); const QStringList &mutuals = args.at(1).toQString(m_tmp2).split(QLatin1Char('|')); const ProStringList &configs = values(statics.strCONFIG); diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index d7fe14c02f..4ce7b0c4b8 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -624,7 +624,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::visitProBlock( evalError(fL1S("Conditional must expand to exactly one word.")); okey = false; } else { - okey = isActiveConfig(curr.at(0).toQString(m_tmp2), true); + okey = isActiveConfig(curr.at(0).toQStringRef(), true); traceMsg("condition %s is %s", dbgStr(curr.at(0)), dbgBool(okey)); okey ^= invert; } @@ -1571,7 +1571,7 @@ QString QMakeEvaluator::currentDirectory() const return QString(); } -bool QMakeEvaluator::isActiveConfig(const QString &config, bool regex) +bool QMakeEvaluator::isActiveConfig(const QStringRef &config, bool regex) { // magic types for easy flipping if (config == statics.strtrue) @@ -1583,7 +1583,7 @@ bool QMakeEvaluator::isActiveConfig(const QString &config, bool regex) return m_hostBuild; if (regex && (config.contains(QLatin1Char('*')) || config.contains(QLatin1Char('?')))) { - QString cfg = config; + QString cfg = config.toString(); cfg.detach(); // Keep m_tmp out of QRegExp's cache QRegExp re(cfg, Qt::CaseSensitive, QRegExp::Wildcard); @@ -1605,7 +1605,7 @@ bool QMakeEvaluator::isActiveConfig(const QString &config, bool regex) return true; // CONFIG variable - if (values(statics.strCONFIG).contains(ProString(config))) + if (values(statics.strCONFIG).contains(config)) return true; } diff --git a/qmake/library/qmakeevaluator.h b/qmake/library/qmakeevaluator.h index 5477d82f26..8a87108c91 100644 --- a/qmake/library/qmakeevaluator.h +++ b/qmake/library/qmakeevaluator.h @@ -224,7 +224,7 @@ public: void updateMkspecPaths(); void updateFeaturePaths(); - bool isActiveConfig(const QString &config, bool regex = false); + bool isActiveConfig(const QStringRef &config, bool regex = false); void populateDeps( const ProStringList &deps, const ProString &prefix, const ProStringList &suffixes, diff --git a/qmake/project.h b/qmake/project.h index aa9f7dfb3b..9f3b9a56bc 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -64,6 +64,8 @@ public: int intValue(const ProKey &v, int defaultValue = 0) const; const ProValueMap &variables() const { return m_valuemapStack.first(); } ProValueMap &variables() { return m_valuemapStack.first(); } + bool isActiveConfig(const QString &config, bool regex = false) + { return QMakeEvaluator::isActiveConfig(QStringRef(&config), regex); } void dump() const; @@ -78,7 +80,6 @@ public: using QMakeEvaluator::propertyValue; using QMakeEvaluator::values; using QMakeEvaluator::first; - using QMakeEvaluator::isActiveConfig; using QMakeEvaluator::isHostBuild; using QMakeEvaluator::dirSep; |