From ed633945ba2004c3b688f8be005e8ee4cce8db59 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 2 May 2012 18:25:24 +0200 Subject: [PATCH] FunctionDef(s) => ProFunctionDef(s), plus move to proitems.h Change-Id: I7bdde81c1913237f11dbfbe7491e0fe750181cd5 Reviewed-by: Daniel Teske --- src/shared/proparser/profileevaluator.cpp | 32 ++++++++++++----------- src/shared/proparser/profileevaluator.h | 29 -------------------- src/shared/proparser/proitems.h | 30 +++++++++++++++++++++ src/shared/proparser/qmakeglobals.h | 2 +- 4 files changed, 48 insertions(+), 45 deletions(-) diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp index 4bc5976b413..68fc440fbd1 100644 --- a/src/shared/proparser/profileevaluator.cpp +++ b/src/shared/proparser/profileevaluator.cpp @@ -152,7 +152,7 @@ public: bool evaluateFeatureFile(const QString &fileName); enum EvalIntoMode { EvalProOnly, EvalWithDefaults, EvalWithSetup }; bool evaluateFileInto(const QString &fileName, ProFileEvaluatorHandler::EvalFileType type, - QHash *values, FunctionDefs *defs, + QHash *values, ProFunctionDefs *defs, EvalIntoMode mode); // values are output-only, defs are input-only static ALWAYS_INLINE VisitReturn returnBool(bool b) @@ -160,8 +160,10 @@ public: QList prepareFunctionArgs(const ushort *&tokPtr); QList prepareFunctionArgs(const ProString &arguments); - ProStringList evaluateFunction(const FunctionDef &func, const QList &argumentsList, bool *ok); - VisitReturn evaluateBoolFunction(const FunctionDef &func, const QList &argumentsList, + ProStringList evaluateFunction(const ProFunctionDef &func, + const QList &argumentsList, bool *ok); + VisitReturn evaluateBoolFunction(const ProFunctionDef &func, + const QList &argumentsList, const ProString &function); bool modesForGenerator(const QString &gen, @@ -206,7 +208,7 @@ public: QString m_outputDir; int m_listCount; - FunctionDefs m_functionDefs; + ProFunctionDefs m_functionDefs; ProStringList m_returnValue; QStack > m_valuemapStack; // VariableName must be us-ascii, the content however can be non-us-ascii. QString m_tmp1, m_tmp2, m_tmp3, m_tmp[2]; // Temporaries for efficient toQString @@ -905,11 +907,11 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProBlock( void ProFileEvaluator::Private::visitProFunctionDef( ushort tok, const ProString &name, const ushort *tokPtr) { - QHash *hash = + QHash *hash = (tok == TokTestDef ? &m_functionDefs.testFunctions : &m_functionDefs.replaceFunctions); - hash->insert(name, FunctionDef(m_current.pro, tokPtr - m_current.pro->tokPtr())); + hash->insert(name, ProFunctionDef(m_current.pro, tokPtr - m_current.pro->tokPtr())); } ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProLoop( @@ -1121,7 +1123,7 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProFile( m_handler->aboutToEval(currentProFile(), pro, type); m_profileStack.push(pro); - if (flags & LoadPreFiles) { + if (flags & ProFileEvaluator::LoadPreFiles) { #ifdef PROEVALUATOR_THREAD_SAFE { QMutexLocker locker(&m_option->mutex); @@ -1282,7 +1284,7 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::visitProFile( visitProBlock(pro, pro->tokPtr()); - if (flags & LoadPostFiles) { + if (flags & ProFileEvaluator::LoadPostFiles) { visitCmdLine(m_option->postcmds); evaluateFeatureFile(QLatin1String("default_post.prf")); @@ -1962,7 +1964,7 @@ QList ProFileEvaluator::Private::prepareFunctionArgs(const ProStr } ProStringList ProFileEvaluator::Private::evaluateFunction( - const FunctionDef &func, const QList &argumentsList, bool *ok) + const ProFunctionDef &func, const QList &argumentsList, bool *ok) { bool oki; ProStringList ret; @@ -1998,7 +2000,7 @@ ProStringList ProFileEvaluator::Private::evaluateFunction( } ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateBoolFunction( - const FunctionDef &func, const QList &argumentsList, + const ProFunctionDef &func, const QList &argumentsList, const ProString &function) { bool ok; @@ -2026,7 +2028,7 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateBoolFu ProStringList ProFileEvaluator::Private::evaluateExpandFunction( const ProString &func, const ushort *&tokPtr) { - QHash::ConstIterator it = + QHash::ConstIterator it = m_functionDefs.replaceFunctions.constFind(func); if (it != m_functionDefs.replaceFunctions.constEnd()) return evaluateFunction(*it, prepareFunctionArgs(tokPtr), 0); @@ -2038,7 +2040,7 @@ ProStringList ProFileEvaluator::Private::evaluateExpandFunction( ProStringList ProFileEvaluator::Private::evaluateExpandFunction( const ProString &func, const ProString &arguments) { - QHash::ConstIterator it = + QHash::ConstIterator it = m_functionDefs.replaceFunctions.constFind(func); if (it != m_functionDefs.replaceFunctions.constEnd()) return evaluateFunction(*it, prepareFunctionArgs(arguments), 0); @@ -2478,7 +2480,7 @@ ProStringList ProFileEvaluator::Private::evaluateExpandFunction( ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateConditionalFunction( const ProString &function, const ProString &arguments) { - QHash::ConstIterator it = + QHash::ConstIterator it = m_functionDefs.testFunctions.constFind(function); if (it != m_functionDefs.testFunctions.constEnd()) return evaluateBoolFunction(*it, prepareFunctionArgs(arguments), function); @@ -2491,7 +2493,7 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateCondit ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateConditionalFunction( const ProString &function, const ushort *&tokPtr) { - QHash::ConstIterator it = + QHash::ConstIterator it = m_functionDefs.testFunctions.constFind(function); if (it != m_functionDefs.testFunctions.constEnd()) return evaluateBoolFunction(*it, prepareFunctionArgs(tokPtr), function); @@ -3232,7 +3234,7 @@ bool ProFileEvaluator::Private::evaluateFeatureFile(const QString &fileName) bool ProFileEvaluator::Private::evaluateFileInto( const QString &fileName, ProFileEvaluatorHandler::EvalFileType type, - QHash *values, FunctionDefs *funcs, EvalIntoMode mode) + QHash *values, ProFunctionDefs *funcs, EvalIntoMode mode) { ProFileEvaluator visitor(m_option, m_parser, m_handler); #ifdef PROEVALUATOR_CUMULATIVE diff --git a/src/shared/proparser/profileevaluator.h b/src/shared/proparser/profileevaluator.h index ac84942d609..5aeaa00ce04 100644 --- a/src/shared/proparser/profileevaluator.h +++ b/src/shared/proparser/profileevaluator.h @@ -65,33 +65,6 @@ class QMAKE_EXPORT ProFileEvaluator class Private; public: - class FunctionDef { - public: - FunctionDef(ProFile *pro, int offset) : m_pro(pro), m_offset(offset) { m_pro->ref(); } - FunctionDef(const FunctionDef &o) : m_pro(o.m_pro), m_offset(o.m_offset) { m_pro->ref(); } - ~FunctionDef() { m_pro->deref(); } - FunctionDef &operator=(const FunctionDef &o) - { - if (this != &o) { - m_pro->deref(); - m_pro = o.m_pro; - m_pro->ref(); - m_offset = o.m_offset; - } - return *this; - } - ProFile *pro() const { return m_pro; } - const ushort *tokPtr() const { return m_pro->tokPtr() + m_offset; } - private: - ProFile *m_pro; - int m_offset; - }; - - struct FunctionDefs { - QHash testFunctions; - QHash replaceFunctions; - }; - enum TemplateType { TT_Unknown = 0, TT_Application, @@ -140,8 +113,6 @@ private: Q_DECLARE_OPERATORS_FOR_FLAGS(ProFileEvaluator::LoadFlags) -Q_DECLARE_TYPEINFO(ProFileEvaluator::FunctionDef, Q_MOVABLE_TYPE); - QT_END_NAMESPACE #endif // PROFILEEVALUATOR_H diff --git a/src/shared/proparser/proitems.h b/src/shared/proparser/proitems.h index 986cafe512c..c9092e8c34d 100644 --- a/src/shared/proparser/proitems.h +++ b/src/shared/proparser/proitems.h @@ -36,6 +36,7 @@ #include "qmake_global.h" #include #include +#include QT_BEGIN_NAMESPACE @@ -217,6 +218,35 @@ private: bool m_ok; }; +class ProFunctionDef { +public: + ProFunctionDef(ProFile *pro, int offset) : m_pro(pro), m_offset(offset) { m_pro->ref(); } + ProFunctionDef(const ProFunctionDef &o) : m_pro(o.m_pro), m_offset(o.m_offset) { m_pro->ref(); } + ~ProFunctionDef() { m_pro->deref(); } + ProFunctionDef &operator=(const ProFunctionDef &o) + { + if (this != &o) { + m_pro->deref(); + m_pro = o.m_pro; + m_pro->ref(); + m_offset = o.m_offset; + } + return *this; + } + ProFile *pro() const { return m_pro; } + const ushort *tokPtr() const { return m_pro->tokPtr() + m_offset; } +private: + ProFile *m_pro; + int m_offset; +}; + +Q_DECLARE_TYPEINFO(ProFunctionDef, Q_MOVABLE_TYPE); + +struct ProFunctionDefs { + QHash testFunctions; + QHash replaceFunctions; +}; + QT_END_NAMESPACE #endif // PROITEMS_H diff --git a/src/shared/proparser/qmakeglobals.h b/src/shared/proparser/qmakeglobals.h index ca7a756ebbb..1ff6257919e 100644 --- a/src/shared/proparser/qmakeglobals.h +++ b/src/shared/proparser/qmakeglobals.h @@ -78,7 +78,7 @@ private: QString getEnv(const QString &) const; QHash base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf - ProFileEvaluator::FunctionDefs base_functions; + ProFunctionDefs base_functions; QStringList feature_roots; QString qmakespec_name; QString precmds, postcmds;