diff -r 000000000000 -r 876b1a06bc25 tools/icheck/parser/src/plugins/cpptools/cppmodelmanagerinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/icheck/parser/src/plugins/cpptools/cppmodelmanagerinterface.h Wed Aug 25 15:49:42 2010 +0300 @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CPPMODELMANAGERINTERFACE_H +#define CPPMODELMANAGERINTERFACE_H + +#include +#include +#include +#include +#include +#include + +namespace ProjectExplorer { + class Project; +} + +namespace CppTools { + +class AbstractEditorSupport; + +class CPPTOOLS_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) : QObject(parent) {} + virtual ~CppModelManagerInterface() {} + + static CppModelManagerInterface *instance(); + + 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(AbstractEditorSupport *editorSupport) = 0; + virtual void removeEditorSupport(AbstractEditorSupport *editorSupport) = 0; + + virtual QList references(CPlusPlus::Symbol *symbol, + CPlusPlus::Document::Ptr doc, + const CPlusPlus::Snapshot &snapshot) = 0; + + virtual void renameUsages(CPlusPlus::Symbol *symbol) = 0; + virtual void findUsages(CPlusPlus::Symbol *symbol) = 0; + + virtual void findMacroUsages(const CPlusPlus::Macro ¯o) = 0; + +public Q_SLOTS: + void updateModifiedSourceFiles(); + virtual void updateSourceFiles(const QStringList &sourceFiles) = 0; + virtual void GC() = 0; +}; + +class CPPTOOLS_EXPORT AbstractEditorSupport +{ +public: + explicit AbstractEditorSupport(CppModelManagerInterface *modelmanager); + virtual ~AbstractEditorSupport(); + + virtual QByteArray contents() const = 0; + virtual QString fileName() const = 0; + + void updateDocument(); + + // TODO: find a better place for common utility functions + static QString functionAt(const CppModelManagerInterface *mm, + const QString &fileName, + int line, int column); + + static QString licenseTemplate(); + +private: + CppModelManagerInterface *m_modelmanager; +}; + +} // namespace CppTools + +#endif // CPPMODELMANAGERINTERFACE_H