29 #ifndef QMAKEEVALUATOR_H
30 #define QMAKEEVALUATOR_H
32 #if defined(PROEVALUATOR_FULL) && defined(PROEVALUATOR_THREAD_SAFE)
33 # error PROEVALUATOR_FULL is incompatible with PROEVALUATOR_THREAD_SAFE due to cache() implementation
47 #if QT_CONFIG(process)
52 #ifdef PROEVALUATOR_THREAD_SAFE
66 SourceEvaluator = 0x10,
68 CumulativeEvalMessage = 0x1000,
70 EvalWarnLanguage = SourceEvaluator | WarningMessage |
WarnLanguage,
79 enum EvalFileType { EvalProjectFile, EvalIncludeFile, EvalConfigFile, EvalFeatureFile, EvalAuxFile };
93 #ifdef PROEVALUATOR_THREAD_SAFE
118 LoadAll = LoadPreFiles|LoadPostFiles,
124 static void initStatics();
125 static void initFunctionStatics();
152 {
return b ? ReturnTrue : ReturnFalse; }
158 void skipExpression(
const ushort *&tokPtr);
161 bool prepareProject(
const QString &inDir);
162 bool loadSpecInternal();
167 void applyExtraConfigs();
170 VisitReturn visitProBlock(
ProFile *pro,
const ushort *tokPtr);
171 VisitReturn visitProBlock(
const ushort *tokPtr);
184 VisitReturn expandVariableReferences(
const ushort *&tokPtr,
int sizeHint,
ProStringList *
ret,
bool joined);
186 QString currentFileName()
const;
187 QString currentDirectory()
const;
188 ProFile *currentProFile()
const;
189 int currentFileId()
const;
199 VisitReturn evaluateFeatureFile(
const QString &
fileName,
bool silent =
false);
203 VisitReturn evaluateConfigFeatures();
220 VisitReturn evaluateConditionalFunction(
const ProKey &
function,
const ushort *&tokPtr);
228 #ifdef PROEVALUATOR_FULL
232 void updateMkspecPaths();
233 void updateFeaturePaths();
249 #if QT_CONFIG(process)
260 #ifdef PROEVALUATOR_CUMULATIVE
264 enum { m_cumulative = 0 };
265 enum { m_skipLevel = 0 };
270 #ifdef PROEVALUATOR_DEBUG
271 void debugMsgInternal(
int level,
const char *fmt, ...)
const;
272 void traceMsgInternal(
const char *fmt, ...)
const;
277 const int m_debugLevel;
282 enum { m_debugLevel = 0 };
void push(const ProValueMap &t)
const ProValueMap & top() const
The QByteArray class provides an array of bytes.
QStringList m_mkspecPaths
QString resolvePath(const QString &fileName) const
ProFunctionDefs m_functionDefs
QStringList m_qmakefeatures
static ALWAYS_INLINE VisitReturn returnBool(bool b)
QStack< ProFile * > m_profileStack
ALWAYS_INLINE const ProKey & map(const ProString &var)
QExplicitlySharedDataPointer< QMakeFeatureRoots > m_featureRoots
QStack< Location > m_locationStack
void languageWarning(const QString &msg) const
ProStringList m_returnValue
ProStringList m_extraConfigs
ALWAYS_INLINE void traceMsgInternal(const char *,...) const
void setExtraConfigs(const ProStringList &extraConfigs)
ALWAYS_INLINE void debugMsgInternal(int, const char *,...) const
void setOutputDir(const QString &outputDir)
void setExtraVars(const ProValueMap &extraVars)
void evalError(const QString &msg) const
ProValueMapStack m_valuemapStack
void deprecationWarning(const QString &msg) const
QMakeEvaluator * m_caller
QMakeFeatureRoots(const QStringList &_paths)
virtual void fileMessage(int type, const QString &msg)=0
virtual void aboutToEval(ProFile *parent, ProFile *proFile, EvalFileType type)=0
virtual void doneWithEval(ProFile *parent)=0
static QString resolvePath(const QString &baseDir, const QString &fileName)
virtual void message(int type, const QString &msg, const QString &fileName=QString(), int lineNo=0)=0
The QMutex class provides access serialization between threads.
The QSharedData class is a base class for shared data objects. \reentrant.
The QStack class is a template class that provides a stack.
The QString class provides a Unicode character string.
The QStringList class provides a list of strings.
The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QStrin...
QMap< QString, QString > map
[6]
std::pair< T1, T2 > QPair
EGLOutputLayerEXT EGLint EGLAttrib value
#define Q_DECLARE_FLAGS(Flags, Enum)
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
QPair< QString, QString > QMakeFeatureKey
Q_DECLARE_TYPEINFO(QMakeEvaluator::Location, Q_PRIMITIVE_TYPE)
QHash< QMakeFeatureKey, QString > QMakeFeatureHash
GLenum GLsizei GLsizei GLint * values
[16]
GLboolean GLboolean GLboolean b
GLenum GLuint GLint level
GLsizei const GLuint * paths
GLsizei GLsizei GLchar * source
void writeFile(QCborStreamWriter &writer, const QString &fileName)
[6]
Location(ProFile *_pro, ushort _line)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent