1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include "cppeditor_global.h"
#include "cppprojectfile.h"
#include <projectexplorer/buildtargettype.h>
#include <projectexplorer/headerpath.h>
#include <projectexplorer/projectmacro.h>
#include <projectexplorer/rawprojectpart.h>
#include <cplusplus/Token.h>
#include <utils/cpplanguage_details.h>
#include <utils/filepath.h>
#include <utils/id.h>
#include <QString>
#include <QSharedPointer>
namespace ProjectExplorer { class Project; }
namespace CppEditor {
class CPPEDITOR_EXPORT ProjectPart
{
public:
using ConstPtr = QSharedPointer<const ProjectPart>;
public:
static ConstPtr create(const Utils::FilePath &topLevelProject,
const ProjectExplorer::RawProjectPart &rpp = {},
const QString &displayName = {},
const ProjectFiles &files = {},
Utils::Language language = Utils::Language::Cxx,
Utils::LanguageExtensions languageExtensions = {},
const ProjectExplorer::RawProjectPartFlags &flags = {},
const ProjectExplorer::ToolChainInfo &tcInfo = {})
{
return ConstPtr(new ProjectPart(topLevelProject, rpp, displayName, files, language,
languageExtensions, flags, tcInfo));
}
QString id() const;
QString projectFileLocation() const;
bool hasProject() const { return !topLevelProject.isEmpty(); }
bool belongsToProject(const ProjectExplorer::Project *project) const;
bool belongsToProject(const Utils::FilePath &project) const;
static QByteArray readProjectConfigFile(const QString &projectConfigFile);
public:
const Utils::FilePath topLevelProject;
const QString displayName;
const QString projectFile;
const QString projectConfigFile; // Generic Project Manager only
const int projectFileLine = -1;
const int projectFileColumn = -1;
const QString callGroupId;
// Versions, features and extensions
const Utils::Language language = Utils::Language::Cxx;
const Utils::LanguageVersion &languageVersion = m_macroReport.languageVersion;
const Utils::LanguageExtensions languageExtensions = Utils::LanguageExtension::None;
const Utils::QtMajorVersion qtVersion = Utils::QtMajorVersion::Unknown;
// Files
const ProjectFiles files;
const QStringList includedFiles;
const QStringList precompiledHeaders;
const ProjectExplorer::HeaderPaths headerPaths;
// Macros
const ProjectExplorer::Macros projectMacros;
const ProjectExplorer::Macros &toolChainMacros = m_macroReport.macros;
// Build system
const QString buildSystemTarget;
const ProjectExplorer::BuildTargetType buildTargetType
= ProjectExplorer::BuildTargetType::Unknown;
const bool selectedForBuilding = true;
// ToolChain
const Utils::Id toolchainType;
const bool isMsvc2015Toolchain = false;
const QString toolChainTargetTriple;
const bool targetTripleIsAuthoritative;
const ProjectExplorer::Abi toolChainAbi = ProjectExplorer::Abi::hostAbi();
const Utils::FilePath toolChainInstallDir;
const Utils::FilePath compilerFilePath;
const Utils::WarningFlags warningFlags = Utils::WarningFlags::Default;
// Misc
const QStringList extraCodeModelFlags;
const QStringList compilerFlags;
private:
ProjectPart(const Utils::FilePath &topLevelProject,
const ProjectExplorer::RawProjectPart &rpp,
const QString &displayName,
const ProjectFiles &files,
Utils::Language language,
Utils::LanguageExtensions languageExtensions,
const ProjectExplorer::RawProjectPartFlags &flags,
const ProjectExplorer::ToolChainInfo &tcInfo);
CPlusPlus::LanguageFeatures deriveLanguageFeatures() const;
const ProjectExplorer::ToolChain::MacroInspectionReport m_macroReport;
public:
// Must come last due to initialization order.
const CPlusPlus::LanguageFeatures languageFeatures;
};
} // namespace CppEditor
|