summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@theqtcompany.com>2016-01-13 14:32:28 +0100
committerMarco Bubke <marco.bubke@theqtcompany.com>2016-01-13 14:47:04 +0000
commitda1f8e66e55d88919079e619a9d43ba71a4e517d (patch)
treea2aeac5417495854b198a5329c896e3e60767988
parent2b4cadf1fe138bfa23ca42ffe63c9da5d4d8827c (diff)
downloadqt-creator-da1f8e66e55d88919079e619a9d43ba71a4e517d.tar.gz
CppTools: Move ProjectInfo in its own header file
Change-Id: I0fc4c73553a29585d4ff7c8d6593acb6975d1607 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
-rw-r--r--src/plugins/cpptools/cppprojects.cpp115
-rw-r--r--src/plugins/cpptools/cppprojects.h41
-rw-r--r--src/plugins/cpptools/cpptools.pro6
-rw-r--r--src/plugins/cpptools/cpptools.qbs1
-rw-r--r--src/plugins/cpptools/projectinfo.cpp150
-rw-r--r--src/plugins/cpptools/projectinfo.h85
-rw-r--r--src/plugins/cpptools/projectpart.cpp1
-rw-r--r--src/plugins/cpptools/projectpart.h1
8 files changed, 243 insertions, 157 deletions
diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp
index 317baa6d68..d1719c3b72 100644
--- a/src/plugins/cpptools/cppprojects.cpp
+++ b/src/plugins/cpptools/cppprojects.cpp
@@ -49,121 +49,6 @@ using namespace CppTools;
using namespace CppTools::Internal;
using namespace ProjectExplorer;
-
-
-ProjectInfo::ProjectInfo()
-{}
-
-ProjectInfo::ProjectInfo(QPointer<Project> project)
- : m_project(project)
-{}
-
-bool ProjectInfo::operator ==(const ProjectInfo &other) const
-{
- return m_project == other.m_project
- && m_projectParts == other.m_projectParts
- && m_compilerCallData == other.m_compilerCallData
- && m_headerPaths == other.m_headerPaths
- && m_sourceFiles == other.m_sourceFiles
- && m_defines == other.m_defines;
-}
-
-bool ProjectInfo::operator !=(const ProjectInfo &other) const
-{
- return !operator ==(other);
-}
-
-bool ProjectInfo::definesChanged(const ProjectInfo &other) const
-{
- return m_defines != other.m_defines;
-}
-
-bool ProjectInfo::configurationChanged(const ProjectInfo &other) const
-{
- return definesChanged(other) || m_headerPaths != other.m_headerPaths;
-}
-
-bool ProjectInfo::configurationOrFilesChanged(const ProjectInfo &other) const
-{
- return configurationChanged(other) || m_sourceFiles != other.m_sourceFiles;
-}
-
-bool ProjectInfo::isValid() const
-{
- return !m_project.isNull();
-}
-
-QPointer<Project> ProjectInfo::project() const
-{
- return m_project;
-}
-
-const QList<ProjectPart::Ptr> ProjectInfo::projectParts() const
-{
- return m_projectParts;
-}
-
-void ProjectInfo::appendProjectPart(const ProjectPart::Ptr &part)
-{
- if (part)
- m_projectParts.append(part);
-}
-
-void ProjectInfo::finish()
-{
- typedef ProjectPartHeaderPath HeaderPath;
-
- QSet<HeaderPath> incs;
- foreach (const ProjectPart::Ptr &part, m_projectParts) {
- part->updateLanguageFeatures();
- // Update header paths
- foreach (const HeaderPath &hp, part->headerPaths) {
- if (!incs.contains(hp)) {
- incs.insert(hp);
- m_headerPaths += hp;
- }
- }
-
- // Update source files
- foreach (const ProjectFile &file, part->files)
- m_sourceFiles.insert(file.path);
-
- // Update defines
- m_defines.append(part->toolchainDefines);
- m_defines.append(part->projectDefines);
- if (!part->projectConfigFile.isEmpty()) {
- m_defines.append('\n');
- m_defines += ProjectPart::readProjectConfigFile(part);
- m_defines.append('\n');
- }
- }
-}
-
-const ProjectPartHeaderPaths ProjectInfo::headerPaths() const
-{
- return m_headerPaths;
-}
-
-const QSet<QString> ProjectInfo::sourceFiles() const
-{
- return m_sourceFiles;
-}
-
-const QByteArray ProjectInfo::defines() const
-{
- return m_defines;
-}
-
-void ProjectInfo::setCompilerCallData(const CompilerCallData &data)
-{
- m_compilerCallData = data;
-}
-
-ProjectInfo::CompilerCallData ProjectInfo::compilerCallData() const
-{
- return m_compilerCallData;
-}
-
namespace {
class ProjectFileCategorizer
{
diff --git a/src/plugins/cpptools/cppprojects.h b/src/plugins/cpptools/cppprojects.h
index d6257abb3f..7394105852 100644
--- a/src/plugins/cpptools/cppprojects.h
+++ b/src/plugins/cpptools/cppprojects.h
@@ -34,6 +34,7 @@
#include "cpptools_global.h"
#include "cppprojectfile.h"
+#include "projectinfo.h"
#include "projectpart.h"
#include <projectexplorer/toolchain.h>
@@ -50,46 +51,6 @@ namespace ProjectExplorer { class Project; }
namespace Utils { class FileName; }
namespace CppTools {
-class ProjectFile;
-
-class CPPTOOLS_EXPORT ProjectInfo
-{
-public:
- ProjectInfo();
- ProjectInfo(QPointer<ProjectExplorer::Project> project);
-
- bool isValid() const;
-
- bool operator ==(const ProjectInfo &other) const;
- bool operator !=(const ProjectInfo &other) const;
- bool definesChanged(const ProjectInfo &other) const;
- bool configurationChanged(const ProjectInfo &other) const;
- bool configurationOrFilesChanged(const ProjectInfo &other) const;
-
- QPointer<ProjectExplorer::Project> project() const;
- const QList<ProjectPart::Ptr> projectParts() const;
-
- void appendProjectPart(const ProjectPart::Ptr &part);
- void finish();
-
- const ProjectPartHeaderPaths headerPaths() const;
- const QSet<QString> sourceFiles() const;
- const QByteArray defines() const;
-
- // Source file --> List of compiler calls
- typedef QHash<QString, QList<QStringList>> CompilerCallData;
- void setCompilerCallData(const CompilerCallData &data);
- CompilerCallData compilerCallData() const;
-
-private:
- QPointer<ProjectExplorer::Project> m_project;
- QList<ProjectPart::Ptr> m_projectParts;
- CompilerCallData m_compilerCallData;
- // The members below are (re)calculated from the project parts with finish()
- ProjectPartHeaderPaths m_headerPaths;
- QSet<QString> m_sourceFiles;
- QByteArray m_defines;
-};
class CPPTOOLS_EXPORT ProjectPartBuilder
{
diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro
index c2bd7d89e2..b73333790f 100644
--- a/src/plugins/cpptools/cpptools.pro
+++ b/src/plugins/cpptools/cpptools.pro
@@ -71,7 +71,8 @@ HEADERS += \
cpptoolsbridgeinterface.h \
cpptoolsbridgeqtcreatorimplementation.h \
projectpart.h \
- projectpartheaderpath.h
+ projectpartheaderpath.h \
+ projectinfo.h
SOURCES += \
abstracteditorsupport.cpp \
@@ -138,7 +139,8 @@ SOURCES += \
senddocumenttracker.cpp \
cpptoolsbridge.cpp \
cpptoolsbridgeqtcreatorimplementation.cpp \
- projectpart.cpp
+ projectpart.cpp \
+ projectinfo.cpp
FORMS += \
completionsettingspage.ui \
diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs
index f7ec8e0d14..40b680deed 100644
--- a/src/plugins/cpptools/cpptools.qbs
+++ b/src/plugins/cpptools/cpptools.qbs
@@ -86,6 +86,7 @@ QtcPlugin {
"includeutils.cpp", "includeutils.h",
"indexitem.cpp", "indexitem.h",
"insertionpointlocator.cpp", "insertionpointlocator.h",
+ "projectinfo.cpp", "projectinfo.h",
"projectpart.cpp", "projectpart.h",
"projectpartheaderpath.h",
"searchsymbols.cpp", "searchsymbols.h",
diff --git a/src/plugins/cpptools/projectinfo.cpp b/src/plugins/cpptools/projectinfo.cpp
new file mode 100644
index 0000000000..c34240cd0f
--- /dev/null
+++ b/src/plugins/cpptools/projectinfo.cpp
@@ -0,0 +1,150 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** 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 The Qt Company. For licensing terms and
+** conditions see http://www.qt.io/terms-conditions. For further information
+** use the contact form at http://www.qt.io/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 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "projectinfo.h"
+
+#include <projectexplorer/project.h>
+
+namespace CppTools {
+
+ProjectInfo::ProjectInfo()
+{}
+
+ProjectInfo::ProjectInfo(QPointer<ProjectExplorer::Project> project)
+ : m_project(project)
+{}
+
+bool ProjectInfo::operator ==(const ProjectInfo &other) const
+{
+ return m_project == other.m_project
+ && m_projectParts == other.m_projectParts
+ && m_compilerCallData == other.m_compilerCallData
+ && m_headerPaths == other.m_headerPaths
+ && m_sourceFiles == other.m_sourceFiles
+ && m_defines == other.m_defines;
+}
+
+bool ProjectInfo::operator !=(const ProjectInfo &other) const
+{
+ return !operator ==(other);
+}
+
+bool ProjectInfo::definesChanged(const ProjectInfo &other) const
+{
+ return m_defines != other.m_defines;
+}
+
+bool ProjectInfo::configurationChanged(const ProjectInfo &other) const
+{
+ return definesChanged(other) || m_headerPaths != other.m_headerPaths;
+}
+
+bool ProjectInfo::configurationOrFilesChanged(const ProjectInfo &other) const
+{
+ return configurationChanged(other) || m_sourceFiles != other.m_sourceFiles;
+}
+
+bool ProjectInfo::isValid() const
+{
+ return !m_project.isNull();
+}
+
+QPointer<ProjectExplorer::Project> ProjectInfo::project() const
+{
+ return m_project;
+}
+
+const QList<ProjectPart::Ptr> ProjectInfo::projectParts() const
+{
+ return m_projectParts;
+}
+
+void ProjectInfo::appendProjectPart(const ProjectPart::Ptr &part)
+{
+ if (part)
+ m_projectParts.append(part);
+}
+
+void ProjectInfo::finish()
+{
+ typedef ProjectPartHeaderPath HeaderPath;
+
+ QSet<HeaderPath> incs;
+ foreach (const ProjectPart::Ptr &part, m_projectParts) {
+ part->updateLanguageFeatures();
+ // Update header paths
+ foreach (const HeaderPath &hp, part->headerPaths) {
+ if (!incs.contains(hp)) {
+ incs.insert(hp);
+ m_headerPaths += hp;
+ }
+ }
+
+ // Update source files
+ foreach (const ProjectFile &file, part->files)
+ m_sourceFiles.insert(file.path);
+
+ // Update defines
+ m_defines.append(part->toolchainDefines);
+ m_defines.append(part->projectDefines);
+ if (!part->projectConfigFile.isEmpty()) {
+ m_defines.append('\n');
+ m_defines += ProjectPart::readProjectConfigFile(part);
+ m_defines.append('\n');
+ }
+ }
+}
+
+const ProjectPartHeaderPaths ProjectInfo::headerPaths() const
+{
+ return m_headerPaths;
+}
+
+const QSet<QString> ProjectInfo::sourceFiles() const
+{
+ return m_sourceFiles;
+}
+
+const QByteArray ProjectInfo::defines() const
+{
+ return m_defines;
+}
+
+void ProjectInfo::setCompilerCallData(const CompilerCallData &data)
+{
+ m_compilerCallData = data;
+}
+
+ProjectInfo::CompilerCallData ProjectInfo::compilerCallData() const
+{
+ return m_compilerCallData;
+}
+
+} // namespace CppTools
diff --git a/src/plugins/cpptools/projectinfo.h b/src/plugins/cpptools/projectinfo.h
new file mode 100644
index 0000000000..2440c1b142
--- /dev/null
+++ b/src/plugins/cpptools/projectinfo.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** 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 The Qt Company. For licensing terms and
+** conditions see http://www.qt.io/terms-conditions. For further information
+** use the contact form at http://www.qt.io/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 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#ifndef CPPTOOLS_PROJECTINFO_H
+#define CPPTOOLS_PROJECTINFO_H
+
+#include "cpptools_global.h"
+
+#include "projectpart.h"
+
+#include <QHash>
+#include <QPointer>
+#include <QSet>
+
+namespace CppTools {
+
+class CPPTOOLS_EXPORT ProjectInfo
+{
+public:
+ ProjectInfo();
+ ProjectInfo(QPointer<ProjectExplorer::Project> project);
+
+ bool isValid() const;
+
+ bool operator ==(const ProjectInfo &other) const;
+ bool operator !=(const ProjectInfo &other) const;
+ bool definesChanged(const ProjectInfo &other) const;
+ bool configurationChanged(const ProjectInfo &other) const;
+ bool configurationOrFilesChanged(const ProjectInfo &other) const;
+
+ QPointer<ProjectExplorer::Project> project() const;
+ const QList<ProjectPart::Ptr> projectParts() const;
+
+ void appendProjectPart(const ProjectPart::Ptr &part);
+ void finish();
+
+ const ProjectPartHeaderPaths headerPaths() const;
+ const QSet<QString> sourceFiles() const;
+ const QByteArray defines() const;
+
+ // Source file --> List of compiler calls
+ typedef QHash<QString, QList<QStringList>> CompilerCallData;
+ void setCompilerCallData(const CompilerCallData &data);
+ CompilerCallData compilerCallData() const;
+
+private:
+ QPointer<ProjectExplorer::Project> m_project;
+ QList<ProjectPart::Ptr> m_projectParts;
+ CompilerCallData m_compilerCallData;
+ // The members below are (re)calculated from the project parts with finish()
+ ProjectPartHeaderPaths m_headerPaths;
+ QSet<QString> m_sourceFiles;
+ QByteArray m_defines;
+};
+
+} // namespace CppTools
+
+#endif // CPPTOOLS_PROJECTINFO_H
diff --git a/src/plugins/cpptools/projectpart.cpp b/src/plugins/cpptools/projectpart.cpp
index bd7a1138b7..796e788d53 100644
--- a/src/plugins/cpptools/projectpart.cpp
+++ b/src/plugins/cpptools/projectpart.cpp
@@ -27,6 +27,7 @@
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
+
#include "projectpart.h"
#include <projectexplorer/headerpath.h>
diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h
index a04299cb0b..d0807338a9 100644
--- a/src/plugins/cpptools/projectpart.h
+++ b/src/plugins/cpptools/projectpart.h
@@ -27,6 +27,7 @@
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
+
#ifndef CPPTOOLS_PROJECTPART_H
#define CPPTOOLS_PROJECTPART_H