diff options
| author | Christian Kamm <christian.d.kamm@nokia.com> | 2009-09-25 16:00:14 +0200 |
|---|---|---|
| committer | Christian Kamm <christian.d.kamm@nokia.com> | 2009-09-25 16:08:01 +0200 |
| commit | 22ed0255b97ff52d808ebd93fabe06e214b56d2d (patch) | |
| tree | 40dc79d131d6b13a8360ff8e68e7ab6119557d1f /src/plugins/cpptools/cppmodelmanager.cpp | |
| parent | 90470771fd58722a6a82b3da28bfaa645b250216 (diff) | |
| download | qt-creator-22ed0255b97ff52d808ebd93fabe06e214b56d2d.tar.gz | |
Track more macro uses.
In particular macros that are only checked for definition or are
expanded during the evaluation of an #if or #elif directive are now also
added to the list available through Document::macroUses().
The names of undefined macros that are interesting (because they're used
in an #ifdef or a defined(...)) are now available through
Document::undefinedMacroUses().
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
| -rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 5d76824ff9..6a859d16cc 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -196,9 +196,12 @@ protected: void mergeEnvironment(CPlusPlus::Document::Ptr doc); virtual void macroAdded(const Macro ¯o); + virtual void passedMacroDefinitionCheck(unsigned offset, const Macro ¯o); + virtual void failedMacroDefinitionCheck(unsigned offset, const QByteArray &name); virtual void startExpandingMacro(unsigned offset, const Macro ¯o, const QByteArray &originalText, + bool inCondition, const QVector<MacroArgumentReference> &actuals); virtual void stopExpandingMacro(unsigned offset, const Macro ¯o); virtual void startSkippingBlocks(unsigned offset); @@ -446,16 +449,34 @@ void CppPreprocessor::macroAdded(const Macro ¯o) m_currentDoc->appendMacro(macro); } +void CppPreprocessor::passedMacroDefinitionCheck(unsigned offset, const Macro ¯o) +{ + if (! m_currentDoc) + return; + + m_currentDoc->addMacroUse(macro, offset, macro.name().length(), + QVector<MacroArgumentReference>(), true); +} + +void CppPreprocessor::failedMacroDefinitionCheck(unsigned offset, const QByteArray &name) +{ + if (! m_currentDoc) + return; + + m_currentDoc->addUndefinedMacroUse(name, offset); +} + void CppPreprocessor::startExpandingMacro(unsigned offset, const Macro ¯o, const QByteArray &originalText, + bool inCondition, const QVector<MacroArgumentReference> &actuals) { if (! m_currentDoc) return; - //qDebug() << "start expanding:" << macro.name << "text:" << originalText; - m_currentDoc->addMacroUse(macro, offset, originalText.length(), actuals); + //qDebug() << "start expanding:" << macro.name() << "text:" << originalText; + m_currentDoc->addMacroUse(macro, offset, originalText.length(), actuals, inCondition); } void CppPreprocessor::stopExpandingMacro(unsigned, const Macro &) |
