diff options
Diffstat (limited to 'src/buildtool/build_engine/base_maps/expression_map.hpp')
-rw-r--r-- | src/buildtool/build_engine/base_maps/expression_map.hpp | 32 |
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 |