diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-12-03 13:49:35 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2011-01-04 15:58:21 +0100 |
commit | 5f50a6ae343574bc247eb631c0a2314273f50add (patch) | |
tree | c8e15fe94e5e692a7e101e67511c451db5718c09 /src/libs/cplusplus/ModelManagerInterface.h | |
parent | 5de7be5f91efcaddccffde464d1556d7a8b05a59 (diff) | |
download | qt-creator-5f50a6ae343574bc247eb631c0a2314273f50add.tar.gz |
C++: Move the ModelManagerInterface from CppTools to CPlusPlus.
Diffstat (limited to 'src/libs/cplusplus/ModelManagerInterface.h')
-rw-r--r-- | src/libs/cplusplus/ModelManagerInterface.h | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/src/libs/cplusplus/ModelManagerInterface.h b/src/libs/cplusplus/ModelManagerInterface.h new file mode 100644 index 0000000000..c58925e613 --- /dev/null +++ b/src/libs/cplusplus/ModelManagerInterface.h @@ -0,0 +1,160 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** +** Alternatively, 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. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +**************************************************************************/ + +#ifndef CPPMODELMANAGERINTERFACE_H +#define CPPMODELMANAGERINTERFACE_H + +#include <cplusplus/CppDocument.h> +#include <QtCore/QObject> +#include <QtCore/QHash> +#include <QtCore/QPointer> +#include <QtCore/QStringList> +#include <QtCore/QFuture> + +namespace Core { + class IEditor; +} + +namespace CPlusPlus { + class LookupContext; +} + +namespace ProjectExplorer { + class Project; +} + +namespace TextEditor { + class ITextEditor; +} + +namespace CppTools { + class AbstractEditorSupport; +} + +namespace CPlusPlus { + +class CPLUSPLUS_EXPORT CppModelManagerInterface : public QObject +{ + Q_OBJECT + +public: + class ProjectInfo + { + public: + ProjectInfo() + { } + + ProjectInfo(QPointer<ProjectExplorer::Project> project) + : project(project) + { } + + operator bool() const + { return ! project.isNull(); } + + bool isValid() const + { return ! project.isNull(); } + + bool isNull() const + { return project.isNull(); } + + public: // attributes + QPointer<ProjectExplorer::Project> project; + QString projectPath; + QByteArray defines; + QStringList sourceFiles; + QStringList includePaths; + QStringList frameworkPaths; + QStringList precompiledHeaders; + }; + + class WorkingCopy + { + public: + void insert(const QString &fileName, const QString &source, unsigned revision = 0) + { _elements.insert(fileName, qMakePair(source, revision)); } + + bool contains(const QString &fileName) const + { return _elements.contains(fileName); } + + QString source(const QString &fileName) const + { return _elements.value(fileName).first; } + + QPair<QString, unsigned> get(const QString &fileName) const + { return _elements.value(fileName); } + + private: + typedef QHash<QString, QPair<QString, unsigned> > Table; + Table _elements; + }; + +public: + CppModelManagerInterface(QObject *parent = 0); + virtual ~CppModelManagerInterface(); + + static CppModelManagerInterface *instance(); + + virtual bool isCppEditor(Core::IEditor *editor) const = 0; + + virtual WorkingCopy workingCopy() const = 0; + virtual CPlusPlus::Snapshot snapshot() const = 0; + + virtual QList<ProjectInfo> projectInfos() const = 0; + virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; + virtual void updateProjectInfo(const ProjectInfo &pinfo) = 0; + + virtual QStringList includesInPath(const QString &path) const = 0; + + virtual void addEditorSupport(CppTools::AbstractEditorSupport *editorSupport) = 0; + virtual void removeEditorSupport(CppTools::AbstractEditorSupport *editorSupport) = 0; + + virtual QList<int> references(CPlusPlus::Symbol *symbol, + const CPlusPlus::LookupContext &context) = 0; + + virtual void renameUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context, + const QString &replacement = QString()) = 0; + virtual void findUsages(CPlusPlus::Symbol *symbol, const CPlusPlus::LookupContext &context) = 0; + + virtual void findMacroUsages(const CPlusPlus::Macro ¯o) = 0; + +Q_SIGNALS: + void documentUpdated(CPlusPlus::Document::Ptr doc); + +public Q_SLOTS: + virtual void updateModifiedSourceFiles() = 0; + virtual QFuture<void> updateSourceFiles(const QStringList &sourceFiles) = 0; + virtual void GC() = 0; +}; + +} // namespace CPlusPlus + +#endif // CPPMODELMANAGERINTERFACE_H |