diff --git a/CHANGELOG.md b/CHANGELOG.md index d086f33d..87429663 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # CHANGELOG + * Fixed handling of configurable type aliases + ### 0.2.0 * Refactored translation units visitors from libclang to Clang LibTooling (#50) * Fixed root namespace handling (#45) diff --git a/src/class_diagram/visitor/translation_unit_visitor.cc b/src/class_diagram/visitor/translation_unit_visitor.cc index 9b432b46..0b50a477 100644 --- a/src/class_diagram/visitor/translation_unit_visitor.cc +++ b/src/class_diagram/visitor/translation_unit_visitor.cc @@ -1985,8 +1985,8 @@ void translation_unit_visitor::finalize() bool translation_unit_visitor::simplify_system_template( template_parameter &ct, const std::string &full_name) { - if (config().template_aliases().count(full_name) > 0) { - ct.set_name(config().template_aliases().at(full_name)); + if (config().type_aliases().count(full_name) > 0) { + ct.set_name(config().type_aliases().at(full_name)); ct.clear_params(); return true; } diff --git a/src/config/config.cc b/src/config/config.cc index 019c2672..377a7d70 100644 --- a/src/config/config.cc +++ b/src/config/config.cc @@ -105,7 +105,7 @@ void inheritable_diagram_options::inherit( std::string inheritable_diagram_options::simplify_template_type( std::string full_name) const { - const auto &aliases = template_aliases(); + const auto &aliases = type_aliases(); for (const auto &[pattern, replacement] : aliases) { util::replace_all(full_name, pattern, replacement); @@ -178,35 +178,34 @@ void class_diagram::initialize_relationship_hints() } } -void class_diagram::initialize_template_aliases() +void class_diagram::initialize_type_aliases() { - if (!template_aliases().count("std::basic_string")) { - template_aliases().insert({"std::basic_string", "std::string"}); + if (!type_aliases().count("std::basic_string")) { + type_aliases().insert({"std::basic_string", "std::string"}); } - if (!template_aliases().count("std::basic_string,std::allocator>")) { - template_aliases().insert({"std::basic_string,std::allocator>", + if (!type_aliases().count("std::basic_string,std::allocator>")) { + type_aliases().insert({"std::basic_string,std::allocator>", "std::string"}); } - if (!template_aliases().count("std::basic_string")) { - template_aliases().insert( - {"std::basic_string", "std::wstring"}); + if (!type_aliases().count("std::basic_string")) { + type_aliases().insert({"std::basic_string", "std::wstring"}); } - if (!template_aliases().count("std::basic_string")) { - template_aliases().insert( + if (!type_aliases().count("std::basic_string")) { + type_aliases().insert( {"std::basic_string", "std::u16string"}); } - if (!template_aliases().count("std::basic_string")) { - template_aliases().insert( + if (!type_aliases().count("std::basic_string")) { + type_aliases().insert( {"std::basic_string", "std::u32string"}); } - if (!template_aliases().count("std::integral_constant")) { - template_aliases().insert( + if (!type_aliases().count("std::integral_constant")) { + type_aliases().insert( {"std::integral_constant", "std::true_type"}); } - if (!template_aliases().count("std::integral_constant")) { - template_aliases().insert( + if (!type_aliases().count("std::integral_constant")) { + type_aliases().insert( {"std::integral_constant", "std::false_type"}); } } @@ -552,10 +551,10 @@ template <> struct convert { get_option(node, rhs.generate_method_arguments); get_option(node, rhs.generate_packages); get_option(node, rhs.relationship_hints); - get_option(node, rhs.template_aliases); + get_option(node, rhs.type_aliases); rhs.initialize_relationship_hints(); - rhs.initialize_template_aliases(); + rhs.initialize_type_aliases(); return true; } diff --git a/src/config/config.h b/src/config/config.h index d4d82845..2117768f 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -116,7 +116,7 @@ struct relationship_hint_t { using relationship_hints_t = std::map; -using template_aliases_t = std::map; +using type_aliases_t = std::map; std::string to_string(const hint_t t); @@ -137,7 +137,7 @@ struct inheritable_diagram_options { option relative_to{"relative_to"}; option generate_system_headers{"generate_system_headers", false}; option relationship_hints{"relationship_hints"}; - option template_aliases{"template_aliases"}; + option type_aliases{"type_aliases"}; void inherit(const inheritable_diagram_options &parent); @@ -171,7 +171,7 @@ struct class_diagram : public diagram { void initialize_relationship_hints(); - void initialize_template_aliases(); + void initialize_type_aliases(); }; struct sequence_diagram : public diagram { diff --git a/tests/t00049/.clang-uml b/tests/t00049/.clang-uml index 53ad8a79..10f19ce1 100644 --- a/tests/t00049/.clang-uml +++ b/tests/t00049/.clang-uml @@ -4,7 +4,7 @@ diagrams: t00049_class: type: class using_namespace: clanguml::t00049 - template_aliases: + type_aliases: "std::vector": string_vector "std::basic_string": thestring "std::map": intmap