summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/base_maps/expression_map.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/build_engine/base_maps/expression_map.hpp')
-rw-r--r--src/buildtool/build_engine/base_maps/expression_map.hpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/buildtool/build_engine/base_maps/expression_map.hpp b/src/buildtool/build_engine/base_maps/expression_map.hpp
new file mode 100644
index 00000000..21ea8ec8
--- /dev/null
+++ b/src/buildtool/build_engine/base_maps/expression_map.hpp
@@ -0,0 +1,32 @@
+#ifndef INCLUDED_SRC_BUILDTOOL_BUILD_ENGINE_BASE_MAPS_EXPRESSION_MAP_HPP
+#define INCLUDED_SRC_BUILDTOOL_BUILD_ENGINE_BASE_MAPS_EXPRESSION_MAP_HPP
+
+#include <memory>
+#include <string>
+
+#include "nlohmann/json.hpp"
+#include "gsl-lite/gsl-lite.hpp"
+#include "src/buildtool/build_engine/base_maps/entity_name.hpp"
+#include "src/buildtool/build_engine/base_maps/expression_function.hpp"
+#include "src/buildtool/build_engine/base_maps/json_file_map.hpp"
+#include "src/buildtool/build_engine/base_maps/module_name.hpp"
+#include "src/buildtool/multithreading/async_map_consumer.hpp"
+
+namespace BuildMaps::Base {
+
+using ExpressionFileMap = AsyncMapConsumer<ModuleName, nlohmann::json>;
+
+constexpr auto CreateExpressionFileMap =
+ CreateJsonFileMap<&RepositoryConfig::ExpressionRoot,
+ &RepositoryConfig::ExpressionFileName,
+ /*kMandatory=*/true>;
+
+using ExpressionFunctionMap =
+ AsyncMapConsumer<EntityName, ExpressionFunctionPtr>;
+
+auto CreateExpressionMap(gsl::not_null<ExpressionFileMap*> const& expr_file_map,
+ std::size_t jobs = 0) -> ExpressionFunctionMap;
+
+} // namespace BuildMaps::Base
+
+#endif // INCLUDED_SRC_BUILDTOOL_BUILD_ENGINE_BASE_MAPS_EXPRESSION_MAP_HPP