From 5f50a6ae343574bc247eb631c0a2314273f50add Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Fri, 3 Dec 2010 13:49:35 +0100 Subject: C++: Move the ModelManagerInterface from CppTools to CPlusPlus. --- src/libs/cplusplus/ModelManagerInterface.h | 160 +++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 src/libs/cplusplus/ModelManagerInterface.h (limited to 'src/libs/cplusplus/ModelManagerInterface.h') 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 +#include +#include +#include +#include +#include + +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 project) + : project(project) + { } + + operator bool() const + { return ! project.isNull(); } + + bool isValid() const + { return ! project.isNull(); } + + bool isNull() const + { return project.isNull(); } + + public: // attributes + QPointer 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 get(const QString &fileName) const + { return _elements.value(fileName); } + + private: + typedef QHash > 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 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 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 updateSourceFiles(const QStringList &sourceFiles) = 0; + virtual void GC() = 0; +}; + +} // namespace CPlusPlus + +#endif // CPPMODELMANAGERINTERFACE_H -- cgit v1.2.1