1#ifndef CAPYGATOR_CAPYDI_TARGET_HPP_
2#define CAPYGATOR_CAPYDI_TARGET_HPP_
17 includes_.push_back(file_contents);
23 std::vector<FileSystem::FileContentType> config_identifiers{};
26 "#define STORE_GENERATE_UNIQUE_NAME GENERATE_UNIQUE_NAME\n";
33 includes_section += std::format(
34 "#undef GENERATE_UNIQUE_NAME\n"
35 "#define GENERATE_UNIQUE_NAME {}\n"
36 "#include \"{}\"\n\n",
42 config_identifiers.push_back(std::move(config_identifier));
46 "#undef GENERATE_UNIQUE_NAME\n"
47 "#define GENERATE_UNIQUE_NAME STORE_GENERATE_UNIQUE_NAME\n"
48 "#undef STORE_GENERATE_UNIQUE_NAME\n";
51 | std::views::transform([](
const auto& s) {
return "std::move(" + s +
")"; })
53 | std::ranges::to<FileSystem::FileContentType>();
56 "namespace capy::di\n"
59 "[[nodiscard]] inline auto build_up_container()\n"
61 " auto configs_tuple = std::tuple_cat(\n"
65 " return std::apply([]<typename... Configs>(Configs&&... configs) {{\n"
66 " return capy::di::DI {{\n"
67 " std::forward<Configs>(configs)...\n"
69 " }}, std::move(configs_tuple));\n"
73 config_identifiers_string
78 HPP_INCLUDE_GUARD_BEGIN,
81 container_builder_code,
91 std::ranges::replace_if(path_string, [](
auto character) {
92 return !std::isalnum(
static_cast<unsigned char>(character));
95 return "CAPYDI_CONFIG_" + path_string;
99 static constexpr std::string_view HPP_INCLUDE_GUARD_BEGIN
100 =
"#ifndef CAPYDI_DI_AGGREGATED_HPP_\n"
101 "#define CAPYDI_DI_AGGREGATED_HPP_\n";
103 static constexpr std::string_view HPP_DEFAULT_INCLUDES
104 =
"#include <capydi/Container.hpp>\n"
105 "#include <tuple>\n";
107 static constexpr std::string_view HPP_INCLUDE_GUARD_END
108 =
"#endif // !CAPYDI_DI_AGGREGATED_HPP_\n";
111 std::vector<FileSystem::PathType> includes_;
Definition CapydiTarget.hpp:13
FileSystem::FileContentType to_file_content() const
Definition CapydiTarget.hpp:20
void include(const FileSystem::PathType &file_contents)
Definition CapydiTarget.hpp:15
static FileSystem::FileContentType as_config_identifier(const FileSystem::PathType &path)
Definition CapydiTarget.hpp:86
std::filesystem::path PathType
Definition FileSystem.hpp:9
std::string FileContentType
Definition FileSystem.hpp:12