From 43f173106ee30e07c951f2b13e04a9160b2edaad Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 20 Apr 2023 15:42:51 +0200 Subject: Clean up ProjectTreeBuilder interface ProductContext is no longer used elsewhere. Change-Id: I6bf158d61153c9a05c4963bacd64801b3f0309ec Reviewed-by: Ivan Komissarov --- src/lib/corelib/language/projecttreebuilder.cpp | 122 +++++++++++++++++++++++ src/lib/corelib/language/projecttreebuilder.h | 123 ------------------------ 2 files changed, 122 insertions(+), 123 deletions(-) diff --git a/src/lib/corelib/language/projecttreebuilder.cpp b/src/lib/corelib/language/projecttreebuilder.cpp index 66cf34e81..42fc59717 100644 --- a/src/lib/corelib/language/projecttreebuilder.cpp +++ b/src/lib/corelib/language/projecttreebuilder.cpp @@ -42,6 +42,7 @@ #include "builtindeclarations.h" #include "evaluator.h" #include "filecontext.h" +#include "filetags.h" #include "groupshandler.h" #include "itemreader.h" #include "language.h" @@ -66,6 +67,7 @@ #include #include #include +#include #include #include @@ -75,11 +77,129 @@ #include #include #include +#include #include #include namespace qbs::Internal { +namespace { + +class ContextBase +{ +public: + Item *item = nullptr; + Item *scope = nullptr; + QString name; +}; + +class ProjectContext; + +class ProductContext : public ContextBase +{ +public: + ProjectContext *project = nullptr; + Item *mergedExportItem = nullptr; + ProjectTreeBuilder::Result::ProductInfo info; + QString profileName; + QString multiplexConfigurationId; + QVariantMap profileModuleProperties; // Tree-ified module properties from profile. + QVariantMap moduleProperties; // Tree-ified module properties from profile + overridden values. + QVariantMap defaultParameters; // In Export item. + QStringList searchPaths; + + std::optional theModuleProviderConfig; + + struct ResolvedDependsItem { + Item *item = nullptr; + QualifiedId name; + QStringList subModules; + FileTags productTypes; + QStringList multiplexIds; + std::optional profiles; + VersionRange versionRange; + QVariantMap parameters; + bool limitToSubProject = false; + FallbackMode fallbackMode = FallbackMode::Enabled; + bool requiredLocally = true; + bool requiredGlobally = true; + }; + struct ResolvedAndMultiplexedDependsItem { + ResolvedAndMultiplexedDependsItem(ProductContext *product, + const ResolvedDependsItem &dependency) + : product(product), item(dependency.item), name(product->name), + versionRange(dependency.versionRange), parameters(dependency.parameters), + fallbackMode(FallbackMode::Disabled), checkProduct(false) {} + ResolvedAndMultiplexedDependsItem(const ResolvedDependsItem &dependency, + const QualifiedId &name, + const QString &profile, const QString &multiplexId) + : item(dependency.item), name(name), profile(profile), multiplexId(multiplexId), + versionRange(dependency.versionRange), parameters(dependency.parameters), + limitToSubProject(dependency.limitToSubProject), fallbackMode(dependency.fallbackMode), + requiredLocally(dependency.requiredLocally), + requiredGlobally(dependency.requiredGlobally) {} + ResolvedAndMultiplexedDependsItem() = default; + static ResolvedAndMultiplexedDependsItem makeBaseDependency() { + ResolvedAndMultiplexedDependsItem item; + item.fallbackMode = FallbackMode::Disabled; + item.name = StringConstants::qbsModule(); + return item; + } + + QString id() const; + CodeLocation location() const; + QString displayName() const; + + ProductContext *product = nullptr; + Item *item = nullptr; + QualifiedId name; + QString profile; + QString multiplexId; + VersionRange versionRange; + QVariantMap parameters; + bool limitToSubProject = false; + FallbackMode fallbackMode = FallbackMode::Enabled; + bool requiredLocally = true; + bool requiredGlobally = true; + bool checkProduct = true; + }; + struct DependenciesResolvingState { + Item *loadingItem = nullptr; + ResolvedAndMultiplexedDependsItem loadingItemOrigin; + std::queue pendingDependsItems; + std::optional currentDependsItem; + std::queue pendingResolvedDependencies; + bool requiredByLoadingItem = true; + }; + std::list resolveDependenciesState; + + QString uniqueName() const; +}; + +class TopLevelProjectContext +{ +public: + TopLevelProjectContext() = default; + TopLevelProjectContext(const TopLevelProjectContext &) = delete; + TopLevelProjectContext &operator=(const TopLevelProjectContext &) = delete; + ~TopLevelProjectContext() { qDeleteAll(projects); } + + std::vector projects; + std::list> productsToHandle; + std::vector probes; + QString buildDirectory; +}; + +class ProjectContext : public ContextBase +{ +public: + TopLevelProjectContext *topLevelProject = nullptr; + ProjectTreeBuilder::Result *result = nullptr; + std::vector products; + std::vector searchPathsStack; +}; + + using ShadowProductInfo = std::pair; enum class Deferral { Allowed, NotAllowed }; enum class HandleDependency { Use, Ignore, Defer }; @@ -108,6 +228,8 @@ public: qint64 propertyChecking = 0; }; +} // namespace + class ProjectTreeBuilder::Private { public: diff --git a/src/lib/corelib/language/projecttreebuilder.h b/src/lib/corelib/language/projecttreebuilder.h index 76a4df372..5f7869978 100644 --- a/src/lib/corelib/language/projecttreebuilder.h +++ b/src/lib/corelib/language/projecttreebuilder.h @@ -40,22 +40,13 @@ #pragma once #include "forward_decls.h" -#include "filetags.h" #include "moduleproviderinfo.h" #include "moduleproviderloader.h" #include "qualifiedid.h" -#include -#include -#include - #include #include -#include -#include -#include - namespace qbs { class SetupProjectParameters; namespace Internal { @@ -65,16 +56,6 @@ class Item; class ItemPool; class ProgressObserver; -class ContextBase -{ -public: - Item *item = nullptr; - Item *scope = nullptr; - QString name; -}; - -class ProjectContext; - using ModulePropertiesPerGroup = std::unordered_map; // TODO: This class only needs to be known inside the ProjectResolver; no need to @@ -118,109 +99,5 @@ private: Private * const d; }; -class ProductContext : public ContextBase -{ -public: - ProjectContext *project = nullptr; - Item *mergedExportItem = nullptr; - ProjectTreeBuilder::Result::ProductInfo info; - QString profileName; - QString multiplexConfigurationId; - QVariantMap profileModuleProperties; // Tree-ified module properties from profile. - QVariantMap moduleProperties; // Tree-ified module properties from profile + overridden values. - QVariantMap defaultParameters; // In Export item. - QStringList searchPaths; - - std::optional theModuleProviderConfig; - - struct ResolvedDependsItem { - Item *item = nullptr; - QualifiedId name; - QStringList subModules; - FileTags productTypes; - QStringList multiplexIds; - std::optional profiles; - VersionRange versionRange; - QVariantMap parameters; - bool limitToSubProject = false; - FallbackMode fallbackMode = FallbackMode::Enabled; - bool requiredLocally = true; - bool requiredGlobally = true; - }; - struct ResolvedAndMultiplexedDependsItem { - ResolvedAndMultiplexedDependsItem(ProductContext *product, - const ResolvedDependsItem &dependency) - : product(product), item(dependency.item), name(product->name), - versionRange(dependency.versionRange), parameters(dependency.parameters), - fallbackMode(FallbackMode::Disabled), checkProduct(false) {} - ResolvedAndMultiplexedDependsItem(const ResolvedDependsItem &dependency, - const QualifiedId &name, - const QString &profile, const QString &multiplexId) - : item(dependency.item), name(name), profile(profile), multiplexId(multiplexId), - versionRange(dependency.versionRange), parameters(dependency.parameters), - limitToSubProject(dependency.limitToSubProject), fallbackMode(dependency.fallbackMode), - requiredLocally(dependency.requiredLocally), - requiredGlobally(dependency.requiredGlobally) {} - ResolvedAndMultiplexedDependsItem() = default; - static ResolvedAndMultiplexedDependsItem makeBaseDependency() { - ResolvedAndMultiplexedDependsItem item; - item.fallbackMode = FallbackMode::Disabled; - item.name = StringConstants::qbsModule(); - return item; - } - - QString id() const; - CodeLocation location() const; - QString displayName() const; - - ProductContext *product = nullptr; - Item *item = nullptr; - QualifiedId name; - QString profile; - QString multiplexId; - VersionRange versionRange; - QVariantMap parameters; - bool limitToSubProject = false; - FallbackMode fallbackMode = FallbackMode::Enabled; - bool requiredLocally = true; - bool requiredGlobally = true; - bool checkProduct = true; - }; - struct DependenciesResolvingState { - Item *loadingItem = nullptr; - ResolvedAndMultiplexedDependsItem loadingItemOrigin; - std::queue pendingDependsItems; - std::optional currentDependsItem; - std::queue pendingResolvedDependencies; - bool requiredByLoadingItem = true; - }; - std::list resolveDependenciesState; - - QString uniqueName() const; -}; - -class TopLevelProjectContext -{ -public: - TopLevelProjectContext() = default; - TopLevelProjectContext(const TopLevelProjectContext &) = delete; - TopLevelProjectContext &operator=(const TopLevelProjectContext &) = delete; - ~TopLevelProjectContext() { qDeleteAll(projects); } - - std::vector projects; - std::list> productsToHandle; - std::vector probes; - QString buildDirectory; -}; - -class ProjectContext : public ContextBase -{ -public: - TopLevelProjectContext *topLevelProject = nullptr; - ProjectTreeBuilder::Result *result = nullptr; - std::vector products; - std::vector searchPathsStack; -}; - } // namespace Internal } // namespace qbs -- cgit v1.2.1