0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Classes | Typedefs | Functions
clanguml::class_diagram::model Namespace Reference

Classes

class  class_
 Diagram element representing a class or class template. More...
 
class  class_element
 Base class for class elements (e.g. member or method). More...
 
class  class_member
 Class member model. More...
 
class  class_method
 Class method model. More...
 
class  class_parent
 Class parent relationship model. More...
 
class  concept_
 Model of C++ concept. More...
 
class  diagram
 Class representing a class diagram. More...
 
class  enum_
 
class  method_parameter
 Model of a method parameter. More...
 

Typedefs

using nested_trait_ns = clanguml::common::model::nested_trait< clanguml::common::model::element, clanguml::common::model::namespace_ >
 

Functions

void set_module (nlohmann::json &j, const common::model::element &e)
 
void to_json (nlohmann::json &j, const class_element &c)
 
void to_json (nlohmann::json &j, const class_member &c)
 
void to_json (nlohmann::json &j, const method_parameter &c)
 
void to_json (nlohmann::json &j, const class_method &c)
 
void to_json (nlohmann::json &j, const class_parent &c)
 
void to_json (nlohmann::json &j, const class_ &c)
 
void to_json (nlohmann::json &j, const enum_ &c)
 
void to_json (nlohmann::json &j, const concept_ &c)
 
bool operator== (const class_ &l, const class_ &r)
 
bool operator== (const concept_ &l, const concept_ &r)
 
template<>
bool diagram::add_with_namespace_path< common::model::package > (std::unique_ptr< common::model::package > &&p)
 
template<>
bool diagram::add_with_filesystem_path< common::model::package > (const common::model::path &, std::unique_ptr< common::model::package > &&p)
 
template<>
bool diagram::add_with_module_path< common::model::package > (const common::model::path &, std::unique_ptr< common::model::package > &&p)
 
template<>
bool diagram::add_with_namespace_path< common::model::package > (std::unique_ptr< common::model::package > &&p)
 
template<>
bool diagram::add_with_module_path< common::model::package > (const common::model::path &parent_path, std::unique_ptr< common::model::package > &&p)
 
template<>
bool diagram::add_with_filesystem_path< common::model::package > (const common::model::path &parent_path, std::unique_ptr< common::model::package > &&p)
 
bool operator== (const enum_ &l, const enum_ &r)
 

Typedef Documentation

◆ nested_trait_ns

Definition at line 44 of file diagram.h.

Function Documentation

◆ diagram::add_with_filesystem_path< common::model::package >() [1/2]

Definition at line 108 of file diagram.cc.

111{
112 LOG_DBG("Adding filesystem package: {}, {}", p->name(), p->full_name(true));
113
114 auto ns = p->get_relative_namespace();
115
116 return add_element(ns, std::move(p));
117}

◆ diagram::add_with_filesystem_path< common::model::package >() [2/2]

Definition at line 108 of file diagram.cc.

111{
112 LOG_DBG("Adding filesystem package: {}, {}", p->name(), p->full_name(true));
113
114 auto ns = p->get_relative_namespace();
115
116 return add_element(ns, std::move(p));
117}

◆ diagram::add_with_module_path< common::model::package >() [1/2]

Definition at line 120 of file diagram.cc.

123{
124 LOG_DBG("Adding module package: {}, {}", p->name(), p->full_name(true));
125
126 auto ns = p->get_relative_namespace();
127
128 return add_element(ns, std::move(p));
129}

◆ diagram::add_with_module_path< common::model::package >() [2/2]

Definition at line 120 of file diagram.cc.

123{
124 LOG_DBG("Adding module package: {}, {}", p->name(), p->full_name(true));
125
126 auto ns = p->get_relative_namespace();
127
128 return add_element(ns, std::move(p));
129}

◆ diagram::add_with_namespace_path< common::model::package >() [1/2]

Definition at line 97 of file diagram.cc.

99{
100 LOG_DBG("Adding namespace package: {}, {}", p->name(), p->full_name(true));
101
102 auto ns = p->get_relative_namespace();
103
104 return add_element(ns, std::move(p));
105}

◆ diagram::add_with_namespace_path< common::model::package >() [2/2]

Definition at line 97 of file diagram.cc.

99{
100 LOG_DBG("Adding namespace package: {}, {}", p->name(), p->full_name(true));
101
102 auto ns = p->get_relative_namespace();
103
104 return add_element(ns, std::move(p));
105}

◆ operator==() [1/3]

bool clanguml::class_diagram::model::operator== ( const class_ l,
const class_ r 
)

Definition at line 69 of file class.cc.

69{ return l.id() == r.id(); }

◆ operator==() [2/3]

bool clanguml::class_diagram::model::operator== ( const concept_ l,
const concept_ r 
)

Definition at line 31 of file concept.cc.

32{
33 return l.id() == r.id();
34}

◆ operator==() [3/3]

bool clanguml::class_diagram::model::operator== ( const enum_ l,
const enum_ r 
)

Definition at line 32 of file enum.cc.

33{
34 return (l.get_namespace() == r.get_namespace()) && (l.name() == r.name());
35}

◆ set_module()

void clanguml::class_diagram::model::set_module ( nlohmann::json &  j,
const common::model::element e 
)

Definition at line 26 of file class_diagram_generator.cc.

27{
28 if (const auto &maybe_module = e.module(); maybe_module) {
29 j["module"]["name"] = *maybe_module;
30 j["module"]["is_private"] = e.module_private();
31 }
32}

◆ to_json() [1/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const class_ c 
)

Definition at line 94 of file class_diagram_generator.cc.

95{
96 j = dynamic_cast<const common::model::element &>(c);
97 j["is_struct"] = c.is_struct();
98 j["is_abstract"] = c.is_abstract();
99 j["is_union"] = c.is_union();
100 j["is_nested"] = c.is_nested();
101 j["is_template"] = c.is_template();
102
103 j["members"] = c.members();
104 j["methods"] = c.methods();
105 j["bases"] = c.parents();
106
107 set_module(j, c);
108
109 j["template_parameters"] = c.template_params();
110}

◆ to_json() [2/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const class_element c 
)

Definition at line 34 of file class_diagram_generator.cc.

35{
36 j["name"] = c.name();
37 j["type"] = common::generators::json::render_name(c.type());
38 if (c.access() != common::model::access_t::kNone)
39 j["access"] = to_string(c.access());
40 if (!c.file().empty())
41 j["source_location"] =
42 dynamic_cast<const common::model::source_location &>(c);
43 if (const auto &comment = c.comment(); comment)
44 j["comment"] = comment.value();
45}

◆ to_json() [3/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const class_member c 
)

Definition at line 47 of file class_diagram_generator.cc.

48{
49 j = dynamic_cast<const class_element &>(c);
50 j["is_static"] = c.is_static();
51}

◆ to_json() [4/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const class_method c 
)

Definition at line 61 of file class_diagram_generator.cc.

62{
63 j = dynamic_cast<const class_element &>(c);
64
65 j["is_pure_virtual"] = c.is_pure_virtual();
66 j["is_virtual"] = c.is_virtual();
67 j["is_const"] = c.is_const();
68 j["is_defaulted"] = c.is_defaulted();
69 j["is_deleted"] = c.is_deleted();
70 j["is_static"] = c.is_static();
71 j["is_noexcept"] = c.is_noexcept();
72 j["is_constexpr"] = c.is_constexpr();
73 j["is_consteval"] = c.is_consteval();
74 j["is_coroutine"] = c.is_coroutine();
75 j["is_constructor"] = c.is_constructor();
76 j["is_move_assignment"] = c.is_move_assignment();
77 j["is_copy_assignment"] = c.is_copy_assignment();
78 j["is_operator"] = c.is_operator();
79 j["template_parameters"] = c.template_params();
80 j["display_name"] = c.display_name();
81
82 j["parameters"] = c.parameters();
83}

◆ to_json() [5/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const class_parent c 
)

Definition at line 85 of file class_diagram_generator.cc.

86{
87 j["is_virtual"] = c.is_virtual();
88 j["id"] = std::to_string(c.id().value());
89 if (c.access() != common::model::access_t::kNone)
90 j["access"] = to_string(c.access());
91 j["name"] = c.name();
92}

◆ to_json() [6/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const concept_ c 
)

Definition at line 121 of file class_diagram_generator.cc.

122{
123 j = dynamic_cast<const common::model::element &>(c);
124 j["parameters"] = c.requires_parameters();
125 j["statements"] = c.requires_statements();
126
127 set_module(j, c);
128}

◆ to_json() [7/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const enum_ c 
)

Definition at line 112 of file class_diagram_generator.cc.

113{
114 j = dynamic_cast<const common::model::element &>(c);
115 j["is_nested"] = c.is_nested();
116 j["constants"] = c.constants();
117
118 set_module(j, c);
119}

◆ to_json() [8/8]

void clanguml::class_diagram::model::to_json ( nlohmann::json &  j,
const method_parameter c 
)

Definition at line 53 of file class_diagram_generator.cc.

54{
55 j["name"] = c.name();
56 j["type"] = c.type();
57 if (!c.default_value().empty())
58 j["default_value"] = c.default_value();
59}