diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-15 10:07:14 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-15 14:14:42 +0200 |
commit | 471b0c93e128f5ac7998cdd22047438c72af9d6b (patch) | |
tree | fdca851ac571d7d3fbd4e58a16ae76cc42a7f0bc | |
parent | ad7946ede6f4b5dc47086dfa34dd0d0503345cdd (diff) |
Introduce a private header class for qbs::Project.
This is needed for a follow-up patch.
Change-Id: Ica5b5f42028020595e7362953879a51e9ca2e28e
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/lib/corelib/api/api.pri | 1 | ||||
-rw-r--r-- | src/lib/corelib/api/project.cpp | 69 | ||||
-rw-r--r-- | src/lib/corelib/api/project_p.h | 119 | ||||
-rw-r--r-- | src/lib/corelib/corelib.qbs | 1 |
4 files changed, 122 insertions, 68 deletions
diff --git a/src/lib/corelib/api/api.pri b/src/lib/corelib/api/api.pri index 2259face1..a4b9c4dd7 100644 --- a/src/lib/corelib/api/api.pri +++ b/src/lib/corelib/api/api.pri @@ -7,6 +7,7 @@ HEADERS += \ $$PWD/jobs.h \ $$PWD/languageinfo.h \ $$PWD/project.h \ + $$PWD/project_p.h \ $$PWD/propertymap_p.h \ $$PWD/projectdata_p.h \ $$PWD/qmljsrewriter.h diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index 25750d6a1..4a641336c 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -27,10 +27,10 @@ ** ****************************************************************************/ #include "project.h" +#include "project_p.h" #include "internaljobs.h" #include "jobs.h" -#include "projectdata.h" #include "projectdata_p.h" #include "projectfileupdater.h" #include "propertymap_p.h" @@ -94,73 +94,6 @@ static void loadPlugins(const QStringList &_pluginPaths, const Logger &logger) pluginsLoaded = true; } - -class ProjectPrivate : public QSharedData -{ -public: - ProjectPrivate(const TopLevelProjectPtr &internalProject, const Logger &logger) - : internalProject(internalProject), logger(logger) - { - } - - ProjectData projectData(); - BuildJob *buildProducts(const QList<ResolvedProductPtr> &products, const BuildOptions &options, - bool needsDepencencyResolving, - QObject *jobOwner); - CleanJob *cleanProducts(const QList<ResolvedProductPtr> &products, const CleanOptions &options, - QObject *jobOwner); - InstallJob *installProducts(const QList<ResolvedProductPtr> &products, - const InstallOptions &options, bool needsDepencencyResolving, - QObject *jobOwner); - QList<ResolvedProductPtr> internalProducts(const QList<ProductData> &products) const; - QList<ResolvedProductPtr> allEnabledInternalProducts() const; - ResolvedProductPtr internalProduct(const ProductData &product) const; - ProductData findProductData(const ProductData &product) const; - QList<ProductData> findProductsByName(const QString &name) const; - GroupData findGroupData(const ProductData &product, const QString &groupName) const; - - GroupData createGroupDataFromGroup(const GroupPtr &resolvedGroup); - - struct GroupUpdateContext { - QList<ResolvedProductPtr> resolvedProducts; - QList<GroupPtr> resolvedGroups; - QList<ProductData> products; - QList<GroupData> groups; - }; - - struct FileListUpdateContext { - GroupUpdateContext groupContext; - QStringList absoluteFilePaths; - QStringList relativeFilePaths; - }; - - GroupUpdateContext getGroupContext(const ProductData &product, const GroupData &group); - FileListUpdateContext getFileListContext(const ProductData &product, const GroupData &group, - const QStringList &filePaths); - - void addGroup(const ProductData &product, const QString &groupName); - void addFiles(const ProductData &product, const GroupData &group, const QStringList &filePaths); - void removeFiles(const ProductData &product, const GroupData &group, - const QStringList &filePaths); - void removeGroup(const ProductData &product, const GroupData &group); - void removeFilesFromBuildGraph(const ResolvedProductConstPtr &product, - const QList<SourceArtifactPtr> &files); - void updateInternalCodeLocations(const ResolvedProjectPtr &project, - const CodeLocation &changeLocation, int lineOffset); - void updateExternalCodeLocations(const ProjectData &project, - const CodeLocation &changeLocation, int lineOffset); - void prepareChangeToProject(); - - const TopLevelProjectPtr internalProject; - Logger logger; - -private: - void retrieveProjectData(ProjectData &projectData, - const ResolvedProjectConstPtr &internalProject); - - ProjectData m_projectData; -}; - ProjectData ProjectPrivate::projectData() { m_projectData = ProjectData(); diff --git a/src/lib/corelib/api/project_p.h b/src/lib/corelib/api/project_p.h new file mode 100644 index 000000000..25ab09ca7 --- /dev/null +++ b/src/lib/corelib/api/project_p.h @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Build Suite. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** 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, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ +#ifndef QBS_PROJECT_P_H +#define QBS_PROJECT_P_H + +#include "projectdata.h" + +#include <language/language.h> +#include <logging/logger.h> + +#include <QObject> +#include <QStringList> + +namespace qbs { +class BuildJob; +class BuildOptions; +class CleanJob; +class CleanOptions; +class InstallJob; +class InstallOptions; + +namespace Internal { + +class ProjectPrivate : public QSharedData +{ +public: + ProjectPrivate(const TopLevelProjectPtr &internalProject, const Logger &logger) + : internalProject(internalProject), logger(logger) + { + } + + ProjectData projectData(); + BuildJob *buildProducts(const QList<ResolvedProductPtr> &products, const BuildOptions &options, + bool needsDepencencyResolving, + QObject *jobOwner); + CleanJob *cleanProducts(const QList<ResolvedProductPtr> &products, const CleanOptions &options, + QObject *jobOwner); + InstallJob *installProducts(const QList<ResolvedProductPtr> &products, + const InstallOptions &options, bool needsDepencencyResolving, + QObject *jobOwner); + QList<ResolvedProductPtr> internalProducts(const QList<ProductData> &products) const; + QList<ResolvedProductPtr> allEnabledInternalProducts() const; + ResolvedProductPtr internalProduct(const ProductData &product) const; + ProductData findProductData(const ProductData &product) const; + QList<ProductData> findProductsByName(const QString &name) const; + GroupData findGroupData(const ProductData &product, const QString &groupName) const; + + GroupData createGroupDataFromGroup(const GroupPtr &resolvedGroup); + + struct GroupUpdateContext { + QList<ResolvedProductPtr> resolvedProducts; + QList<GroupPtr> resolvedGroups; + QList<ProductData> products; + QList<GroupData> groups; + }; + + struct FileListUpdateContext { + GroupUpdateContext groupContext; + QStringList absoluteFilePaths; + QStringList relativeFilePaths; + }; + + GroupUpdateContext getGroupContext(const ProductData &product, const GroupData &group); + FileListUpdateContext getFileListContext(const ProductData &product, const GroupData &group, + const QStringList &filePaths); + + void addGroup(const ProductData &product, const QString &groupName); + void addFiles(const ProductData &product, const GroupData &group, const QStringList &filePaths); + void removeFiles(const ProductData &product, const GroupData &group, + const QStringList &filePaths); + void removeGroup(const ProductData &product, const GroupData &group); + void removeFilesFromBuildGraph(const ResolvedProductConstPtr &product, + const QList<SourceArtifactPtr> &files); + void updateInternalCodeLocations(const ResolvedProjectPtr &project, + const CodeLocation &changeLocation, int lineOffset); + void updateExternalCodeLocations(const ProjectData &project, + const CodeLocation &changeLocation, int lineOffset); + void prepareChangeToProject(); + + const TopLevelProjectPtr internalProject; + Logger logger; + +private: + void retrieveProjectData(ProjectData &projectData, + const ResolvedProjectConstPtr &internalProject); + + ProjectData m_projectData; +}; + +} // namespace Internal +} // namespace qbs + +#endif // Include guard diff --git a/src/lib/corelib/corelib.qbs b/src/lib/corelib/corelib.qbs index efe69a1cb..45dfa2079 100644 --- a/src/lib/corelib/corelib.qbs +++ b/src/lib/corelib/corelib.qbs @@ -38,6 +38,7 @@ QbsLibrary { "jobs.cpp", "languageinfo.cpp", "project.cpp", + "project_p.h", "projectdata.cpp", "projectdata_p.h", "projectfileupdater.cpp", |