Refactored class visitor main method

This commit is contained in:
Bartek Kryza
2022-02-23 10:57:39 +01:00
parent 1a5a7aefcb
commit d2bd58cede
4 changed files with 341 additions and 265 deletions

View File

@@ -102,7 +102,7 @@ std::string class_::full_name(bool relative) const
std::ostringstream ostr;
if (relative && starts_with(get_namespace(), using_namespaces()))
ostr << ns_relative(using_namespaces(), name());
ostr << ns_relative(using_namespaces(), name_and_ns());
else
ostr << name_and_ns();

View File

@@ -60,7 +60,7 @@ void diagram::add_package(std::unique_ptr<common::model::package> &&p)
{
LOG_DBG("Adding namespace package: {}, {}", p->name(), p->full_name(true));
auto ns = p->get_namespace();
auto ns = p->get_relative_namespace();
add_element(ns, std::move(p));
}

File diff suppressed because it is too large Load Diff

View File

@@ -34,6 +34,8 @@
#include <cppast/visitor.hpp>
#include <type_safe/reference.hpp>
#include <cppast/cpp_alias_template.hpp>
#include <cppast/cpp_type_alias.hpp>
#include <functional>
#include <map>
#include <memory>
@@ -119,6 +121,39 @@ public:
void process_friend(const cppast::cpp_friend &t,
clanguml::class_diagram::model::class_ &parent);
void process_namespace(const cppast::cpp_entity &e,
const cppast::cpp_namespace &ns_declaration);
void process_type_alias(const cppast::cpp_type_alias &ta);
void process_type_alias_template(const cppast::cpp_alias_template &at);
void process_class_children(const cppast::cpp_class &cls, model::class_ &c);
void process_class_bases(
const cppast::cpp_class &cls, model::class_ &c) const;
void process_unexposed_template_specialization_arguments(
const type_safe::optional_ref<const cppast::cpp_template_specialization>
&tspec,
model::class_ &c) const;
void process_exposed_template_specialization_arguments(
const type_safe::optional_ref<const cppast::cpp_template_specialization>
&tspec,
model::class_ &c);
void process_scope_template_parameters(
model::class_ &c, const cppast::cpp_scope_name &scope);
bool process_template_parameters(const cppast::cpp_class &cls,
model::class_ &c,
const type_safe::optional_ref<const cppast::cpp_template_specialization>
&tspec);
void process_class_containment(
const cppast::cpp_class &cls, model::class_ &c) const;
private:
std::unique_ptr<clanguml::class_diagram::model::class_>
build_template_instantiation(