diff options
Diffstat (limited to 'src/lib/corelib/language/moduleproviderloader.h')
-rw-r--r-- | src/lib/corelib/language/moduleproviderloader.h | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/src/lib/corelib/language/moduleproviderloader.h b/src/lib/corelib/language/moduleproviderloader.h index 91a32ec80..b6240cb03 100644 --- a/src/lib/corelib/language/moduleproviderloader.h +++ b/src/lib/corelib/language/moduleproviderloader.h @@ -41,25 +41,32 @@ #ifndef MODULEPROVIDERLOADER_H #define MODULEPROVIDERLOADER_H -#include "moduleloader.h" +#include "forward_decls.h" #include "moduleproviderinfo.h" -#include "probesresolver.h" #include <QtCore/qmap.h> #include <QtCore/qvariant.h> +#include <optional> +#include <vector> + namespace qbs { +class SetupProjectParameters; namespace Internal { - +class Evaluator; +class Item; +class ItemReader; class Logger; +class ProbesResolver; + +enum class FallbackMode { Enabled, Disabled }; class ModuleProviderLoader { public: - using ProductContext = ModuleLoader::ProductContext; - using FallbackMode = ModuleLoader::FallbackMode; - explicit ModuleProviderLoader(ItemReader *itemReader, Evaluator *evaluator, - ProbesResolver *probesResolver, Logger &logger); + explicit ModuleProviderLoader(const SetupProjectParameters ¶meters, ItemReader &itemReader, + Evaluator &evaluator, ProbesResolver &probesResolver, + Logger &logger); enum class ModuleProviderLookup { Scoped, Named, Fallback }; @@ -71,11 +78,10 @@ public: struct ModuleProviderResult { - ModuleProviderResult() = default; - ModuleProviderResult(bool ran, bool added) - : providerFound(ran), providerAddedSearchPaths(added) {} + std::vector<ProbeConstPtr> probes; + QVariantMap providerConfig; bool providerFound = false; - bool providerAddedSearchPaths = false; + std::optional<QStringList> searchPaths; }; const StoredModuleProviderInfo &storedModuleProviderInfo() const @@ -88,33 +94,36 @@ public: m_storedModuleProviderInfo = std::move(moduleProviderInfo); } - void setProjectParameters(SetupProjectParameters parameters) - { - m_parameters = std::move(parameters); - } - const Set<QString> &tempQbsFiles() const { return m_tempQbsFiles; } + struct ProductContext { + Item * const productItem; + const Item * const projectItem; + const QString &name; + const QString &uniqueName; + const QVariantMap &moduleProperties; + const std::optional<QVariantMap> providerConfig; + }; ModuleProviderResult executeModuleProviders( - ProductContext &productContext, + const ProductContext &productContext, const CodeLocation &dependsItemLocation, const QualifiedId &moduleName, FallbackMode fallbackMode); private: ModuleProviderResult executeModuleProvidersHelper( - ProductContext &product, + const ProductContext &product, const CodeLocation &dependsItemLocation, const std::vector<Provider> &providers); - QVariantMap getModuleProviderConfig(ProductContext &product); + QVariantMap getModuleProviderConfig(const ProductContext &product); std::optional<std::vector<QualifiedId>> getModuleProviders(Item *item); QString findModuleProviderFile(const QualifiedId &name, ModuleProviderLookup lookupType); - QVariantMap evaluateQbsModule(ProductContext &product) const; - Item *createProviderScope(ProductContext &product, const QVariantMap &qbsModule); - QStringList evaluateModuleProvider( - ProductContext &product, + QVariantMap evaluateQbsModule(const ProductContext &product) const; + Item *createProviderScope(const ProductContext &product, const QVariantMap &qbsModule); + std::pair<QStringList, std::vector<ProbeConstPtr>> evaluateModuleProvider( + const ProductContext &product, const CodeLocation &location, const QualifiedId &name, const QString &providerFile, @@ -122,11 +131,10 @@ private: const QVariantMap &qbsModule); private: - ItemReader *const m_reader{nullptr}; - Evaluator *const m_evaluator{nullptr}; - ProbesResolver *const m_probesResolver{nullptr}; - - SetupProjectParameters m_parameters; + const SetupProjectParameters &m_parameters; + ItemReader &m_reader; + Evaluator &m_evaluator; + ProbesResolver &m_probesResolver; Logger &m_logger; StoredModuleProviderInfo m_storedModuleProviderInfo; Set<QString> m_tempQbsFiles; |