summaryrefslogtreecommitdiff
path: root/src/lib/corelib/language/moduleproviderloader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/language/moduleproviderloader.h')
-rw-r--r--src/lib/corelib/language/moduleproviderloader.h64
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 &parameters, 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;