From e8bdca74b513b58d3db892d838b3a499365ca7e2 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 12 May 2016 21:15:58 +0200 Subject: optimize ProString::toInt()/toShort() QStringRef has respective overloads now. Change-Id: I9b94c53092ef3fdd62a68f5d3c5bacb98a14d8ec Reviewed-by: Joerg Bornemann --- qmake/library/proitems.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'qmake/library') diff --git a/qmake/library/proitems.h b/qmake/library/proitems.h index 721abb90d0..d22fa0f11e 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -130,8 +130,8 @@ public: bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(s, 0, cs) >= 0; } bool contains(const char *s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(QLatin1String(s), 0, cs) >= 0; } bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(c, 0, cs) >= 0; } - int toInt(bool *ok = 0, int base = 10) const { return toQString().toInt(ok, base); } // XXX optimize - short toShort(bool *ok = 0, int base = 10) const { return toQString().toShort(ok, base); } // XXX optimize + int toInt(bool *ok = 0, int base = 10) const { return toQStringRef().toInt(ok, base); } + short toShort(bool *ok = 0, int base = 10) const { return toQStringRef().toShort(ok, base); } uint hash() const { return m_hash; } static uint hash(const QChar *p, int n); -- cgit v1.2.3 From a7a3cd643a554c717ad8fb2bdad3e941dfd94cec Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 13 May 2016 13:44:42 +0200 Subject: remove pointless conversions to QString when converting to int this doesn't change a lot, but is cleaner. Change-Id: Ia89c399d6df7cc6264954cf309d2c971a5592d6b Reviewed-by: Joerg Bornemann --- qmake/library/qmakebuiltins.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'qmake/library') diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index 78a491b1cb..f11c55fc09 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -478,9 +478,9 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( } else { var = args[0]; sep = args.at(1).toQString(); - beg = args.at(2).toQString(m_tmp2).toInt(); + beg = args.at(2).toInt(); if (args.count() == 4) - end = args.at(3).toQString(m_tmp2).toInt(); + end = args.at(3).toInt(); } } else { if (args.count() != 1) { @@ -639,7 +639,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( const ProStringList &var = values(map(args.at(0))); int start = 0, end = 0; if (args.count() >= 2) { - const QString &start_str = args.at(1).toQString(m_tmp1); + const ProString &start_str = args.at(1); start = start_str.toInt(&ok); if (!ok) { if (args.count() == 2) { @@ -652,11 +652,11 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( } if (!ok) evalError(fL1S("member() argument 2 (start) '%2' invalid.") - .arg(start_str)); + .arg(start_str.toQString(m_tmp1))); } else { end = start; if (args.count() == 3) - end = args.at(2).toQString(m_tmp1).toInt(&ok); + end = args.at(2).toInt(&ok); if (!ok) evalError(fL1S("member() argument 3 (end) '%2' invalid.") .arg(args.at(2).toQString(m_tmp1))); @@ -1292,7 +1292,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( return ReturnFalse; } int cnt = values(map(args.at(0))).count(); - int val = args.at(1).toQString(m_tmp1).toInt(); + int val = args.at(1).toInt(); if (args.count() == 3) { const ProString &comp = args.at(2); if (comp == QLatin1String(">") || comp == QLatin1String("greaterThan")) { -- cgit v1.2.3 From 7931395d5bf30d783449e1696edf8d59b81462ed Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 13 May 2016 13:45:48 +0200 Subject: remove pointless conversion to QString in isTrue() Change-Id: I7766672018dd4acf9b9fb89acfe664671de4bc3d Reviewed-by: Joerg Bornemann --- qmake/library/qmakebuiltins.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'qmake/library') diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index f11c55fc09..a77c83ea4f 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -192,9 +192,8 @@ void QMakeEvaluator::initFunctionStatics() statics.functions.insert(ProKey(testInits[i].name), testInits[i].func); } -static bool isTrue(const ProString &_str, QString &tmp) +static bool isTrue(const ProString &str) { - const QString &str = _str.toQString(tmp); return !str.compare(statics.strtrue, Qt::CaseInsensitive) || str.toInt(); } @@ -904,7 +903,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( } else { bool recursive = false; if (args.count() == 2) - recursive = isTrue(args.at(1), m_tmp2); + recursive = isTrue(args.at(1)); QStringList dirs; QString r = m_option->expandEnvVars(args.at(0).toQString(m_tmp1)) .replace(QLatin1Char('\\'), QLatin1Char('/')); @@ -1403,7 +1402,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( flags = LoadSilent; if (args.count() >= 2) { parseInto = args.at(1).toQString(m_tmp2); - if (args.count() >= 3 && isTrue(args.at(2), m_tmp3)) + if (args.count() >= 3 && isTrue(args.at(2))) flags = LoadSilent; } QString fn = resolvePath(m_option->expandEnvVars(args.at(0).toQString(m_tmp1))); @@ -1441,7 +1440,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional( case T_LOAD: { bool ignore_error = false; if (args.count() == 2) { - ignore_error = isTrue(args.at(1), m_tmp2); + ignore_error = isTrue(args.at(1)); } else if (args.count() != 1) { evalError(fL1S("load(feature) requires one or two arguments.")); return ReturnFalse; -- cgit v1.2.3 From e6b755e702fd6d8ebeb25ecd7a5059e62da6c971 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 13 May 2016 13:42:15 +0200 Subject: add ProString::toLongLong() and make use of it this is just a bit cleaner. Change-Id: I03e628aca9e2e53c602a4db724da277a0e2c2486 Reviewed-by: Joerg Bornemann --- qmake/library/proitems.h | 1 + qmake/library/qmakebuiltins.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'qmake/library') diff --git a/qmake/library/proitems.h b/qmake/library/proitems.h index d22fa0f11e..dcff970600 100644 --- a/qmake/library/proitems.h +++ b/qmake/library/proitems.h @@ -130,6 +130,7 @@ public: bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(s, 0, cs) >= 0; } bool contains(const char *s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(QLatin1String(s), 0, cs) >= 0; } bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const { return indexOf(c, 0, cs) >= 0; } + int toLongLong(bool *ok = 0, int base = 10) const { return toQStringRef().toLongLong(ok, base); } int toInt(bool *ok = 0, int base = 10) const { return toQStringRef().toInt(ok, base); } short toShort(bool *ok = 0, int base = 10) const { return toQStringRef().toShort(ok, base); } diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp index a77c83ea4f..80569e503a 100644 --- a/qmake/library/qmakebuiltins.cpp +++ b/qmake/library/qmakebuiltins.cpp @@ -561,7 +561,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand( break; } bool ok; - qlonglong num = m_tmp3.toLongLong(&ok, ibase); + qlonglong num = args.at(0).toLongLong(&ok, ibase); if (!ok) { evalError(fL1S("format_number(): malformed number %2 for base %1.") .arg(ibase).arg(m_tmp3)); -- cgit v1.2.3