22#include "inja/inja.hpp"
26#include <miroir/miroir.hpp>
27#include <spdlog/spdlog.h>
28#include <yaml-cpp/yaml.h>
48 :
std::runtime_error(
"Invalid config schema")
53 std::vector<miroir::Error<YAML::Node>>
errors;
57 logging::logger_type_t logger_type);
157 std::map<common::model::relationship_t, std::pair<std::string, std::string>>
191 std::map<std::string, std::string>
style;
196 std::optional<std::string>
get_style(
const std::string &element_type)
const;
226 std::map<std::string, std::vector<std::string>>
notes;
359 std::vector<common::model::access_t>
access;
510std::string to_string(
hint_t t);
514 std::variant<std::string, std::vector<std::string>>
entity;
520 std::map< std::string, std::string>
link;
524 const std::string &path)
const
530 const std::string &path)
const
554 std::optional<common::model::relationship_t> def = {})
const
568 bool operator()(
const std::string &a,
const std::string &b)
const
570 if (a.size() == b.size())
573 return a.size() > b.size();
577 std::map<std::string, std::string, type_aliases_longer_first_comparator>;
638 "include_relations_also_as_members",
true};
649 "generate_concept_requirements",
true};
657 "generate_template_argument_dependencies",
true};
659 "skip_redundant_dependencies",
true};
673 "combine_free_functions_into_file_participants",
false};
678 "generate_condition_statements",
false};
723 const std::vector<std::string> &compilation_database_files,
724 bool is_fixed =
false)
const;
733 const std::filesystem::path &p)
const;
742 const std::optional<std::string> &maybe_module)
const;
745 const std::string &full_name)
const;
822 "compilation_database_dir",
"."};
833 "remove_compile_flags"};
847 "diagram_templates"};
850 std::map<std::string, std::shared_ptr<diagram>>
diagrams;
880config load(
const std::string &config_file,
bool inherit =
true,
881 std::optional<bool> paths_relative_to_pwd = {},
882 std::optional<bool> no_metadata = {},
bool validate =
true);
890YAML::Emitter &
operator<<(YAML::Emitter &out,
const config &c);
893 YAML::Emitter &out,
const inheritable_diagram_options &c);
895YAML::Emitter &
operator<<(YAML::Emitter &out,
const filter &f);
897YAML::Emitter &
operator<<(YAML::Emitter &out,
const plantuml &p);
899YAML::Emitter &
operator<<(YAML::Emitter &out,
const mermaid &p);
901YAML::Emitter &
operator<<(YAML::Emitter &out,
const graphml &p);
905YAML::Emitter &
operator<<(YAML::Emitter &out,
const generate_links_config &glc);
907YAML::Emitter &
operator<<(YAML::Emitter &out,
const git_config &gc);
909YAML::Emitter &
operator<<(YAML::Emitter &out,
const relationship_hint_t &rh);
915YAML::Emitter &
operator<<(YAML::Emitter &out,
const class_diagram &c);
917YAML::Emitter &
operator<<(YAML::Emitter &out,
const sequence_diagram &c);
919YAML::Emitter &
operator<<(YAML::Emitter &out,
const include_diagram &c);
921YAML::Emitter &
operator<<(YAML::Emitter &out,
const package_diagram &c);
923YAML::Emitter &
operator<<(YAML::Emitter &out,
const layout_hint &c);
925YAML::Emitter &
operator<<(YAML::Emitter &out,
const element_filter_t &ef);
927YAML::Emitter &
operator<<(YAML::Emitter &out,
const diagram_template &dt);
929YAML::Emitter &
operator<<(YAML::Emitter &out,
const inja::json &ef);
932YAML::Emitter &
operator<<(YAML::Emitter &out,
const std::filesystem::path &p);
935 YAML::Emitter &out,
const std::vector<std::filesystem::path> &p);
938YAML::Emitter &
operator<<(YAML::Emitter &out,
const source_location &sc);
940template <
typename T>
bool is_null(
const T & ) {
return false; }
942template <>
bool is_null(
const std::string &v);
944template <>
bool is_null(
const glob_t &v);
946template <>
bool is_null(
const plantuml &v);
948template <>
bool is_null(
const mermaid &v);
950template <>
bool is_null(
const graphml &v);
952template <>
bool is_null(
const inja::json &v);
958 out << YAML::Key << o.
name;
959 if constexpr (std::is_same_v<T, std::filesystem::path>)
960 out << YAML::Value << o.
value.string();
962 out << YAML::Value << o.
value;
970namespace common::model {
985 const YAML::Node &d);