| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-01-11 16:28:15 +01:00
										 |  |  | ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-11-02 15:59:12 +01:00
										 |  |  | ** Contact: Nokia Corporation (qt-info@nokia.com) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** GNU Lesser General Public License Usage | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** This file may be used under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  | ** License version 2.1 as published by the Free Software Foundation and | 
					
						
							|  |  |  | ** appearing in the file LICENSE.LGPL included in the packaging of this file. | 
					
						
							|  |  |  | ** Please review the following information to ensure the GNU Lesser General | 
					
						
							|  |  |  | ** Public License version 2.1 requirements will be met: | 
					
						
							|  |  |  | ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** rights. These rights are described in the Nokia Qt LGPL Exception | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** Other Usage | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Alternatively, this file may be used in accordance with the terms and | 
					
						
							|  |  |  | ** conditions contained in a signed written agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** If you have questions regarding the use of this file, please contact | 
					
						
							| 
									
										
										
										
											2011-11-02 15:59:12 +01:00
										 |  |  | ** Nokia at qt-info@nokia.com. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | **************************************************************************/ | 
					
						
							| 
									
										
										
										
											2008-12-02 15:08:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #ifndef CPPMODELMANAGER_H
 | 
					
						
							|  |  |  | #define CPPMODELMANAGER_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  | #include "cpptools_global.h"
 | 
					
						
							| 
									
										
										
										
											2011-08-24 10:55:48 +02:00
										 |  |  | #include "cpptoolsconstants.h"
 | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  | #include <cplusplus/ModelManagerInterface.h>
 | 
					
						
							| 
									
										
										
										
											2010-02-03 13:21:08 +10:00
										 |  |  | #ifndef ICHECK_BUILD
 | 
					
						
							|  |  |  | #  include <projectexplorer/project.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <cplusplus/CppDocument.h>
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | #include <cplusplus/PreprocessorClient.h>
 | 
					
						
							| 
									
										
										
										
											2010-02-03 13:21:08 +10:00
										 |  |  | #ifndef ICHECK_BUILD
 | 
					
						
							|  |  |  | #  include <texteditor/basetexteditor.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | #include <cplusplus/PreprocessorEnvironment.h>
 | 
					
						
							|  |  |  | #include <cplusplus/pp-engine.h>
 | 
					
						
							|  |  |  | #ifdef ICHECK_BUILD
 | 
					
						
							| 
									
										
										
										
											2010-02-03 13:21:08 +10:00
										 |  |  | #  include "parsemanager.h"
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #  include <QtCore/QHash>
 | 
					
						
							|  |  |  | #  include <QtCore/QFutureInterface>
 | 
					
						
							|  |  |  | #  include <QtCore/QFutureSynchronizer>
 | 
					
						
							|  |  |  | #  include <QtCore/QMutex>
 | 
					
						
							|  |  |  | #  include <QtCore/QTimer>
 | 
					
						
							|  |  |  | #  include <QtGui/QTextEdit> // for QTextEdit::ExtraSelection
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace Core { | 
					
						
							|  |  |  | class ICore; | 
					
						
							|  |  |  | class IEditor; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace TextEditor { | 
					
						
							|  |  |  | class ITextEditor; | 
					
						
							| 
									
										
										
										
											2011-02-21 16:02:26 +01:00
										 |  |  | class BaseTextEditorWidget; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace ProjectExplorer { | 
					
						
							|  |  |  | class ProjectExplorerPlugin; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | namespace CPlusPlus { | 
					
						
							|  |  |  |     class ParseManager; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | namespace CppTools { | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CppEditorSupport; | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  | class CppPreprocessor; | 
					
						
							| 
									
										
										
										
											2009-08-07 13:02:36 +02:00
										 |  |  | class CppFindReferences; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | #ifndef ICHECK_BUILD
 | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  | class CppModelManager : public CPlusPlus::CppModelManagerInterface | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     CppModelManager(QObject *parent); | 
					
						
							|  |  |  |     virtual ~CppModelManager(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  |     static CppModelManager *instance(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-02 12:51:47 +01:00
										 |  |  |     virtual QFuture<void> updateSourceFiles(const QStringList &sourceFiles); | 
					
						
							| 
									
										
										
										
											2009-12-15 15:16:46 +01:00
										 |  |  |     virtual WorkingCopy workingCopy() const; | 
					
						
							| 
									
										
										
										
											2008-12-08 10:44:56 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual QList<ProjectInfo> projectInfos() const; | 
					
						
							|  |  |  |     virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const; | 
					
						
							|  |  |  |     virtual void updateProjectInfo(const ProjectInfo &pinfo); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-12 10:07:58 +01:00
										 |  |  |     virtual CPlusPlus::Snapshot snapshot() const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     virtual void GC(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QFuture<void> refreshSourceFiles(const QStringList &sourceFiles); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     inline Core::ICore *core() const { return m_core; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-07 12:12:07 +02:00
										 |  |  |     virtual bool isCppEditor(Core::IEditor *editor) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-09 13:52:27 +02:00
										 |  |  |     CppEditorSupport *editorSupport(TextEditor::ITextEditor *editor) const | 
					
						
							|  |  |  |     { return m_editorSupport.value(editor); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void emitDocumentUpdated(CPlusPlus::Document::Ptr doc); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:56:04 +01:00
										 |  |  |     void stopEditorSelectionsUpdate() | 
					
						
							|  |  |  |     { m_updateEditorSelectionsTimer->stop(); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-12 13:45:24 +02:00
										 |  |  |     virtual void addEditorSupport(AbstractEditorSupport *editorSupport); | 
					
						
							|  |  |  |     virtual void removeEditorSupport(AbstractEditorSupport *editorSupport); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-31 12:09:28 +02:00
										 |  |  |     virtual QList<int> references(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context); | 
					
						
							| 
									
										
										
										
											2009-09-30 13:25:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-20 11:02:37 +02:00
										 |  |  |     virtual void renameUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context, | 
					
						
							|  |  |  |                               const QString &replacement = QString()); | 
					
						
							| 
									
										
										
										
											2010-05-31 12:09:28 +02:00
										 |  |  |     virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context); | 
					
						
							| 
									
										
										
										
											2009-08-07 13:02:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-21 14:54:10 +01:00
										 |  |  |     virtual void findMacroUsages(const CPlusPlus::Macro ¯o); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-24 10:55:48 +02:00
										 |  |  |     virtual void setExtraDiagnostics(const QString &fileName, int key, | 
					
						
							|  |  |  |                                      const QList<CPlusPlus::Document::DiagnosticMessage> &diagnostics); | 
					
						
							|  |  |  |     virtual QList<CPlusPlus::Document::DiagnosticMessage> extraDiagnostics( | 
					
						
							|  |  |  |             const QString &fileName, int key = AllExtraDiagnostics) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-05 10:46:46 +02:00
										 |  |  |     void finishedRefreshingSourceFiles(const QStringList &files); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | Q_SIGNALS: | 
					
						
							|  |  |  |     void projectPathChanged(const QString &projectPath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void aboutToRemoveFiles(const QStringList &files); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public Q_SLOTS: | 
					
						
							|  |  |  |     void editorOpened(Core::IEditor *editor); | 
					
						
							|  |  |  |     void editorAboutToClose(Core::IEditor *editor); | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  |     virtual void updateModifiedSourceFiles(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private Q_SLOTS: | 
					
						
							|  |  |  |     // this should be executed in the GUI thread.
 | 
					
						
							|  |  |  |     void onDocumentUpdated(CPlusPlus::Document::Ptr doc); | 
					
						
							| 
									
										
										
										
											2011-08-31 09:58:40 +02:00
										 |  |  |     void onExtraDiagnosticsUpdated(const QString &fileName); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void onAboutToRemoveProject(ProjectExplorer::Project *project); | 
					
						
							| 
									
										
										
										
											2009-08-13 17:10:53 +02:00
										 |  |  |     void onAboutToUnloadSession(); | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  |     void onProjectAdded(ProjectExplorer::Project *project); | 
					
						
							| 
									
										
										
										
											2009-02-10 22:56:04 +01:00
										 |  |  |     void postEditorUpdate(); | 
					
						
							|  |  |  |     void updateEditorSelections(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2011-08-31 09:58:40 +02:00
										 |  |  |     void updateEditor(CPlusPlus::Document::Ptr doc); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-15 15:16:46 +01:00
										 |  |  |     WorkingCopy buildWorkingCopyList(); | 
					
						
							| 
									
										
										
										
											2009-10-12 10:38:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  |     QStringList projectFiles() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         ensureUpdated(); | 
					
						
							|  |  |  |         return m_projectFiles; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QStringList includePaths() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         ensureUpdated(); | 
					
						
							|  |  |  |         return m_includePaths; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QStringList frameworkPaths() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         ensureUpdated(); | 
					
						
							|  |  |  |         return m_frameworkPaths; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QByteArray definedMacros() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         ensureUpdated(); | 
					
						
							|  |  |  |         return m_definedMacros; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 10:44:56 +01:00
										 |  |  |     void ensureUpdated(); | 
					
						
							| 
									
										
										
										
											2008-12-08 14:48:51 +01:00
										 |  |  |     QStringList internalProjectFiles() const; | 
					
						
							|  |  |  |     QStringList internalIncludePaths() const; | 
					
						
							|  |  |  |     QStringList internalFrameworkPaths() const; | 
					
						
							|  |  |  |     QByteArray internalDefinedMacros() const; | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     static void parse(QFutureInterface<void> &future, | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  |                       CppPreprocessor *preproc, | 
					
						
							|  |  |  |                       QStringList files); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     Core::ICore *m_core; | 
					
						
							| 
									
										
										
										
											2008-12-12 10:07:58 +01:00
										 |  |  |     CPlusPlus::Snapshot m_snapshot; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  |     // cache
 | 
					
						
							|  |  |  |     bool m_dirty; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QStringList m_projectFiles; | 
					
						
							| 
									
										
										
										
											2008-12-04 17:07:43 +01:00
										 |  |  |     QStringList m_includePaths; | 
					
						
							|  |  |  |     QStringList m_frameworkPaths; | 
					
						
							|  |  |  |     QByteArray m_definedMacros; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // editor integration
 | 
					
						
							|  |  |  |     QMap<TextEditor::ITextEditor *, CppEditorSupport *> m_editorSupport; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-12 13:45:24 +02:00
										 |  |  |     QSet<AbstractEditorSupport *> m_addtionalEditorSupport; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     // project integration
 | 
					
						
							|  |  |  |     QMap<ProjectExplorer::Project *, ProjectInfo> m_projects; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 10:44:56 +01:00
										 |  |  |     mutable QMutex mutex; | 
					
						
							| 
									
										
										
										
											2009-06-02 15:27:13 +02:00
										 |  |  |     mutable QMutex protectSnapshot; | 
					
						
							| 
									
										
										
										
											2008-12-08 10:44:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-10 22:56:04 +01:00
										 |  |  |     struct Editor { | 
					
						
							| 
									
										
										
										
											2009-07-10 13:57:21 +02:00
										 |  |  |         Editor() | 
					
						
							|  |  |  |                 : revision(-1) {} | 
					
						
							|  |  |  |         int revision; | 
					
						
							| 
									
										
										
										
											2009-03-02 16:30:25 +01:00
										 |  |  |         QPointer<TextEditor::ITextEditor> textEditor; | 
					
						
							| 
									
										
										
										
											2009-02-10 22:56:04 +01:00
										 |  |  |         QList<QTextEdit::ExtraSelection> selections; | 
					
						
							| 
									
										
										
										
											2011-02-21 16:02:26 +01:00
										 |  |  |         QList<TextEditor::BaseTextEditorWidget::BlockRange> ifdefedOutBlocks; | 
					
						
							| 
									
										
										
										
											2009-02-10 22:56:04 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QList<Editor> m_todo; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QTimer *m_updateEditorSelectionsTimer; | 
					
						
							| 
									
										
										
										
											2009-03-11 12:00:07 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     QFutureSynchronizer<void> m_synchronizer; | 
					
						
							| 
									
										
										
										
											2009-07-14 14:23:12 +02:00
										 |  |  |     unsigned m_revision; | 
					
						
							| 
									
										
										
										
											2009-08-07 13:02:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     CppFindReferences *m_findReferences; | 
					
						
							| 
									
										
										
										
											2009-12-07 12:03:31 +01:00
										 |  |  |     bool m_indexerEnabled; | 
					
						
							| 
									
										
										
										
											2011-08-24 10:55:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     mutable QMutex protectExtraDiagnostics; | 
					
						
							|  |  |  |     QHash<QString, QHash<int, QList<CPlusPlus::Document::DiagnosticMessage> > > m_extraDiagnostics; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-06 14:37:45 +10:00
										 |  |  | class CPPTOOLS_EXPORT CppPreprocessor: public CPlusPlus::Client | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | #ifndef ICHECK_BUILD
 | 
					
						
							|  |  |  |     CppPreprocessor(QPointer<CppModelManager> modelManager); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  |     CppPreprocessor(QPointer<CPlusPlus::ParseManager> modelManager); | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  |     virtual ~CppPreprocessor(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void setRevision(unsigned revision); | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  |     void setWorkingCopy(const CPlusPlus::CppModelManagerInterface::WorkingCopy &workingCopy); | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     void setIncludePaths(const QStringList &includePaths); | 
					
						
							|  |  |  |     void setFrameworkPaths(const QStringList &frameworkPaths); | 
					
						
							| 
									
										
										
										
											2010-04-13 11:14:34 +02:00
										 |  |  |     void addFrameworkPath(const QString &frameworkPath); | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     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; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-05 10:46:46 +02:00
										 |  |  |     CppModelManager *modelManager() const | 
					
						
							|  |  |  |     { return m_modelManager.data(); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | public: // attributes
 | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |     CPlusPlus::Snapshot snapshot; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							| 
									
										
										
										
											2010-05-10 09:54:30 +02:00
										 |  |  |     QString tryIncludeFile_helper(QString &fileName, IncludeType type, unsigned *revision); | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void mergeEnvironment(CPlusPlus::Document::Ptr doc); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |     virtual void macroAdded(const CPlusPlus::Macro ¯o); | 
					
						
							|  |  |  |     virtual void passedMacroDefinitionCheck(unsigned offset, const CPlusPlus::Macro ¯o); | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     virtual void failedMacroDefinitionCheck(unsigned offset, const QByteArray &name); | 
					
						
							|  |  |  |     virtual void startExpandingMacro(unsigned offset, | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |                                      const CPlusPlus::Macro ¯o, | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |                                      const QByteArray &originalText, | 
					
						
							|  |  |  |                                      bool inCondition, | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |                                      const QVector<CPlusPlus::MacroArgumentReference> &actuals); | 
					
						
							|  |  |  |     virtual void stopExpandingMacro(unsigned offset, const CPlusPlus::Macro ¯o); | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     virtual void startSkippingBlocks(unsigned offset); | 
					
						
							|  |  |  |     virtual void stopSkippingBlocks(unsigned offset); | 
					
						
							|  |  |  |     virtual void sourceNeeded(QString &fileName, IncludeType type, | 
					
						
							|  |  |  |                               unsigned line); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  | #ifndef ICHECK_BUILD
 | 
					
						
							|  |  |  |     QPointer<CppModelManager> m_modelManager; | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |     CPlusPlus::Environment env; | 
					
						
							|  |  |  |     CPlusPlus::Preprocessor preprocess; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     QStringList m_includePaths; | 
					
						
							|  |  |  |     QStringList m_systemIncludePaths; | 
					
						
							| 
									
										
										
										
											2010-12-03 13:49:35 +01:00
										 |  |  |     CPlusPlus::CppModelManagerInterface::WorkingCopy m_workingCopy; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     QStringList m_projectFiles; | 
					
						
							|  |  |  |     QStringList m_frameworkPaths; | 
					
						
							|  |  |  |     QSet<QString> m_included; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:12:00 +02:00
										 |  |  |     CPlusPlus::Document::Ptr m_currentDoc; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  |     QSet<QString> m_todo; | 
					
						
							|  |  |  |     QSet<QString> m_processed; | 
					
						
							|  |  |  |     unsigned m_revision; | 
					
						
							| 
									
										
										
										
											2010-05-10 09:54:30 +02:00
										 |  |  |     QHash<QString, QString> m_fileNameCache; | 
					
						
							| 
									
										
										
										
											2010-01-19 15:26:08 +10:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | } // namespace Internal
 | 
					
						
							|  |  |  | } // namespace CppTools
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // CPPMODELMANAGER_H
 |