summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanager.cpp
diff options
context:
space:
mode:
authorWolfgang Beck <wolfgang.beck@nokia.com>2010-01-19 15:26:08 +1000
committerWolfgang Beck <wolfgang.beck@nokia.com>2010-01-19 15:26:08 +1000
commit4b3388172904e629fc6f6f1e3a6323e8fe12b97f (patch)
tree098dca6bbe72201050a4d8ec94c008903eb67ed3 /src/plugins/cpptools/cppmodelmanager.cpp
parent29b7594b38f3545bb6a5d5ff08542c0e71a30197 (diff)
downloadqt-creator-4b3388172904e629fc6f6f1e3a6323e8fe12b97f.tar.gz
Merge ichecker branch changes into the mainline. New project can be found under src/tools/ICheck
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp92
1 files changed, 22 insertions, 70 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 6f7245072f..dd346e9cb7 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -161,73 +161,7 @@ static const char pp_configuration[] =
"#define __declspec(a)\n"
"#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method\n";
-namespace CppTools {
-namespace Internal {
-
-class CppPreprocessor: public CPlusPlus::Client
-{
-public:
- CppPreprocessor(QPointer<CppModelManager> modelManager);
- virtual ~CppPreprocessor();
-
- void setRevision(unsigned revision);
- void setWorkingCopy(const CppModelManagerInterface::WorkingCopy &workingCopy);
- void setIncludePaths(const QStringList &includePaths);
- void setFrameworkPaths(const QStringList &frameworkPaths);
- void setProjectFiles(const QStringList &files);
- void setTodo(const QStringList &files);
-
- void run(const QString &fileName);
-
- void resetEnvironment();
-
- const QSet<QString> &todo() const
- { return m_todo; }
-
-public: // attributes
- Snapshot snapshot;
-
-protected:
- CPlusPlus::Document::Ptr switchDocument(CPlusPlus::Document::Ptr doc);
-
- bool includeFile(const QString &absoluteFilePath, QString *result, unsigned *revision);
- QString tryIncludeFile(QString &fileName, IncludeType type, unsigned *revision);
-
- void mergeEnvironment(CPlusPlus::Document::Ptr doc);
-
- virtual void macroAdded(const Macro &macro);
- virtual void passedMacroDefinitionCheck(unsigned offset, const Macro &macro);
- virtual void failedMacroDefinitionCheck(unsigned offset, const QByteArray &name);
- virtual void startExpandingMacro(unsigned offset,
- const Macro &macro,
- const QByteArray &originalText,
- bool inCondition,
- const QVector<MacroArgumentReference> &actuals);
- virtual void stopExpandingMacro(unsigned offset, const Macro &macro);
- virtual void startSkippingBlocks(unsigned offset);
- virtual void stopSkippingBlocks(unsigned offset);
- virtual void sourceNeeded(QString &fileName, IncludeType type,
- unsigned line);
-
-private:
- QPointer<CppModelManager> m_modelManager;
- Environment env;
- Preprocessor preprocess;
- QStringList m_includePaths;
- QStringList m_systemIncludePaths;
- CppModelManagerInterface::WorkingCopy m_workingCopy;
- QStringList m_projectFiles;
- QStringList m_frameworkPaths;
- QSet<QString> m_included;
- Document::Ptr m_currentDoc;
- QSet<QString> m_todo;
- QSet<QString> m_processed;
- unsigned m_revision;
-};
-
-} // namespace Internal
-} // namespace CppTools
-
+#ifndef ICHECK_BUILD
CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager)
: snapshot(modelManager->snapshot()),
m_modelManager(modelManager),
@@ -235,6 +169,15 @@ CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager)
m_revision(0)
{ }
+#else
+
+CppPreprocessor::CppPreprocessor(QPointer<CPlusPlus::ParseManager> modelManager)
+ : preprocess(this, &env),
+ m_revision(0)
+{
+}
+#endif
+
CppPreprocessor::~CppPreprocessor()
{ }
@@ -258,7 +201,7 @@ void CppPreprocessor::setTodo(const QStringList &files)
namespace {
-
+#ifndef ICHECK_BUILD
class Process: public std::unary_function<Document::Ptr, void>
{
QPointer<CppModelManager> _modelManager;
@@ -313,7 +256,7 @@ public:
_modelManager->emitDocumentUpdated(doc); // ### TODO: compress
}
};
-
+#endif
} // end of anonymous namespace
void CppPreprocessor::run(const QString &fileName)
@@ -580,11 +523,19 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type, unsigned
snapshot.insert(doc);
m_todo.remove(fileName);
+#ifndef ICHECK_BUILD
Process process(m_modelManager, snapshot, m_workingCopy);
process(doc);
(void) switchDocument(previousDoc);
+#else
+ (void) switchDocument(previousDoc);
+ Document::CheckMode mode = Document::FastCheck;
+ mode = Document::FullCheck;
+ doc->parse();
+ doc->check(mode);
+#endif
}
Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc)
@@ -594,6 +545,7 @@ Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc)
return previousDoc;
}
+#ifndef ICHECK_BUILD
void CppTools::CppModelManagerInterface::updateModifiedSourceFiles()
{
const Snapshot snapshot = this->snapshot();
@@ -1397,5 +1349,5 @@ void CppModelManager::GC()
m_snapshot = newSnapshot;
protectSnapshot.unlock();
}
-
+#endif