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>
This commit is contained in:
parent
e45a9fe457
commit
11d957d043
@ -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++)
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user