0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | Friends | List of all members
clanguml::config::inheritable_diagram_options Struct Reference

Represents subset of inheritable configuration options. More...

Detailed Description

Represents subset of inheritable configuration options.

This class contains a subset of configuration options, which are inherited from the top level of the configuration to the diagrams.

Definition at line 533 of file config.h.

#include <config.h>

Public Member Functions

virtual ~inheritable_diagram_options ()=default
 
void inherit (const inheritable_diagram_options &parent)
 
std::string simplify_template_type (std::string full_name) const
 
bool generate_fully_qualified_name () const
 Whether the diagram element should be fully qualified in diagram.
 
option< std::filesystem::path > & get_relative_to ()
 Get reference to relative_to diagram config option.
 

Public Attributes

option< std::vector< common::string_or_regex > > glob {"glob"}
 
option< common::model::namespace_using_namespace {"using_namespace"}
 
option< std::string > using_module {"using_module"}
 
option< bool > include_relations_also_as_members
 
option< filter_mode_tfilter_mode {"filter_mode", filter_mode_t::basic}
 
option< bool > include_system_headers {"include_system_headers", false}
 
option< filterinclude {"include"}
 
option< filterexclude {"exclude"}
 
option< plantumlpuml {"plantuml", option_inherit_mode::kAppend}
 
option< struct mermaidmermaid {"mermaid", option_inherit_mode::kAppend}
 
option< method_argumentsgenerate_method_arguments
 
option< bool > generate_concept_requirements
 
option< bool > group_methods {"group_methods", true}
 
option< member_order_tmember_order
 
option< bool > generate_packages {"generate_packages", false}
 
option< package_type_tpackage_type
 
option< bool > generate_template_argument_dependencies
 
option< bool > skip_redundant_dependencies
 
option< generate_links_configgenerate_links {"generate_links"}
 
option< git_configgit {"git"}
 
option< layout_hintslayout {"layout"}
 
option< std::filesystem::path > base_directory {"__parent_path"}
 
option< bool > generate_system_headers {"generate_system_headers", false}
 
option< relationship_hints_trelationship_hints {"relationship_hints"}
 
option< type_aliases_ttype_aliases
 
option< comment_parser_tcomment_parser
 
option< bool > combine_free_functions_into_file_participants
 
option< bool > inline_lambda_messages {"inline_lambda_messages", false}
 
option< bool > generate_return_types {"generate_return_types", false}
 
option< bool > generate_condition_statements
 
option< std::vector< std::string > > participants_order {"participants_order"}
 
option< bool > generate_message_comments {"generate_message_comments", false}
 
option< unsigned > message_comment_width
 
option< bool > debug_mode {"debug_mode", false}
 
option< bool > generate_metadata {"generate_metadata", true}
 
option< bool > allow_empty_diagrams {"allow_empty_diagrams", false}
 

Protected Attributes

option< std::filesystem::path > relative_to {"relative_to"}
 

Friends

YAML::Emitter & operator<< (YAML::Emitter &out, const inheritable_diagram_options &c)
 

Constructor & Destructor Documentation

◆ ~inheritable_diagram_options()

virtual clanguml::config::inheritable_diagram_options::~inheritable_diagram_options ( )
virtualdefault

Member Function Documentation

◆ generate_fully_qualified_name()

bool clanguml::config::inheritable_diagram_options::generate_fully_qualified_name ( ) const

Whether the diagram element should be fully qualified in diagram.

This method determines whether an elements' name should include fully qualified namespace name (however relative to using_namespace), or whether it should just contain it's name. This depends on whether the diagram has packages and if they are based on namespaces or sth else.

Returns
True, if element should include it's namespace

Definition at line 298 of file config.cc.

299{
302}

◆ get_relative_to()

option< std::filesystem::path > & clanguml::config::inheritable_diagram_options::get_relative_to ( )
inline

Get reference to relative_to diagram config option.

This method is only to allow access to relative_to for loading and adjusting configuration file and for making test cases work.

Instead use

See also
config::diagram::root_directory() method.
Returns
Reference to relative_to config option.

Definition at line 562 of file config.h.

562{ return relative_to; }

◆ inherit()

void clanguml::config::inheritable_diagram_options::inherit ( const inheritable_diagram_options parent)

Definition at line 236 of file config.cc.

238{
239 glob.override(parent.glob);
240 using_namespace.override(parent.using_namespace);
241 using_module.override(parent.using_module);
243 parent.include_relations_also_as_members);
244 filter_mode.override(parent.filter_mode);
245 include_system_headers.override(parent.include_system_headers);
246 include.override(parent.include);
247 exclude.override(parent.exclude);
248 puml.override(parent.puml);
249 mermaid.override(parent.mermaid);
250 generate_method_arguments.override(parent.generate_method_arguments);
252 parent.generate_concept_requirements);
253 generate_packages.override(parent.generate_packages);
255 parent.generate_template_argument_dependencies);
256 package_type.override(parent.package_type);
258 parent.generate_template_argument_dependencies);
259 skip_redundant_dependencies.override(parent.skip_redundant_dependencies);
260 generate_links.override(parent.generate_links);
261 generate_system_headers.override(parent.generate_system_headers);
262 git.override(parent.git);
263 base_directory.override(parent.base_directory);
264 relative_to.override(parent.relative_to);
265 comment_parser.override(parent.comment_parser);
267 parent.combine_free_functions_into_file_participants);
268 inline_lambda_messages.override(parent.inline_lambda_messages);
269 generate_return_types.override(parent.generate_return_types);
271 parent.generate_condition_statements);
272 debug_mode.override(parent.debug_mode);
273 generate_metadata.override(parent.generate_metadata);
274 allow_empty_diagrams.override(parent.allow_empty_diagrams);
275 type_aliases.override(parent.type_aliases);
276}

◆ simplify_template_type()

std::string clanguml::config::inheritable_diagram_options::simplify_template_type ( std::string  full_name) const

Definition at line 278 of file config.cc.

280{
282 aliases.insert(type_aliases().begin(), type_aliases().end());
283
284 bool matched{true};
285 while (matched) {
286 auto matched_in_iteration{false};
287 for (const auto &[pattern, replacement] : aliases) {
288 matched_in_iteration =
289 util::replace_all(full_name, pattern, replacement) ||
290 matched_in_iteration;
291 }
292 matched = matched_in_iteration;
293 }
294
295 return full_name;
296}

Friends And Related Symbol Documentation

◆ operator<<

YAML::Emitter & operator<< ( YAML::Emitter &  out,
const inheritable_diagram_options c 
)
friend

Definition at line 307 of file yaml_emitters.cc.

309{
310 // Common options
311 out << c.base_directory;
312 out << c.comment_parser;
313 out << c.debug_mode;
314 out << c.exclude;
315 out << c.generate_links;
316 out << c.git;
317 out << c.glob;
318 out << c.include;
319 out << c.puml;
320 out << c.relative_to;
321 out << c.using_namespace;
322 out << c.using_module;
323 out << c.generate_metadata;
324
325 if (const auto *cd = dynamic_cast<const class_diagram *>(&c);
326 cd != nullptr) {
327 out << cd->title;
328 out << c.generate_method_arguments;
329 out << c.generate_concept_requirements;
330 out << c.generate_packages;
331 out << c.include_relations_also_as_members;
332 if (c.relationship_hints) {
333 out << YAML::Key << "relationship_hints" << YAML::Value
334 << c.relationship_hints();
335 }
336
337 if (c.type_aliases) {
338 out << YAML::Key << "type_aliases" << YAML::Value
339 << c.type_aliases();
340 }
341 out << c.member_order;
342 out << c.package_type;
343 out << c.generate_template_argument_dependencies;
344 out << c.skip_redundant_dependencies;
345 }
346 else if (const auto *sd = dynamic_cast<const sequence_diagram *>(&c);
347 sd != nullptr) {
348 out << sd->title;
349 out << c.combine_free_functions_into_file_participants;
350 out << c.inline_lambda_messages;
351 out << c.generate_condition_statements;
352 out << c.generate_method_arguments;
353 out << c.generate_return_types;
354 out << c.participants_order;
355 out << c.generate_message_comments;
356 out << c.message_comment_width;
357 }
358 else if (const auto *pd = dynamic_cast<const package_diagram *>(&c);
359 pd != nullptr) {
360 out << pd->title;
361 out << c.generate_packages;
362 out << c.package_type;
363 }
364 else if (const auto *id = dynamic_cast<const include_diagram *>(&c);
365 id != nullptr) {
366 out << id->title;
367 out << c.generate_system_headers;
368 }
369
370 return out;
371}

Member Data Documentation

◆ allow_empty_diagrams

option<bool> clanguml::config::inheritable_diagram_options::allow_empty_diagrams {"allow_empty_diagrams", false}

Definition at line 613 of file config.h.

◆ base_directory

option<std::filesystem::path> clanguml::config::inheritable_diagram_options::base_directory {"__parent_path"}

Definition at line 594 of file config.h.

◆ combine_free_functions_into_file_participants

option<bool> clanguml::config::inheritable_diagram_options::combine_free_functions_into_file_participants
Initial value:
{
"combine_free_functions_into_file_participants", false}

Definition at line 601 of file config.h.

◆ comment_parser

option<comment_parser_t> clanguml::config::inheritable_diagram_options::comment_parser
Initial value:
{
"comment_parser", comment_parser_t::plain}

Definition at line 599 of file config.h.

◆ debug_mode

option<bool> clanguml::config::inheritable_diagram_options::debug_mode {"debug_mode", false}

Definition at line 611 of file config.h.

◆ exclude

option<filter> clanguml::config::inheritable_diagram_options::exclude {"exclude"}

Definition at line 572 of file config.h.

◆ filter_mode

option<filter_mode_t> clanguml::config::inheritable_diagram_options::filter_mode {"filter_mode", filter_mode_t::basic}

Definition at line 569 of file config.h.

◆ generate_concept_requirements

option<bool> clanguml::config::inheritable_diagram_options::generate_concept_requirements
Initial value:
{
"generate_concept_requirements", true}

Definition at line 577 of file config.h.

◆ generate_condition_statements

option<bool> clanguml::config::inheritable_diagram_options::generate_condition_statements
Initial value:
{
"generate_condition_statements", false}

Definition at line 605 of file config.h.

◆ generate_links

option<generate_links_config> clanguml::config::inheritable_diagram_options::generate_links {"generate_links"}

Definition at line 589 of file config.h.

◆ generate_message_comments

option<bool> clanguml::config::inheritable_diagram_options::generate_message_comments {"generate_message_comments", false}

Definition at line 608 of file config.h.

◆ generate_metadata

option<bool> clanguml::config::inheritable_diagram_options::generate_metadata {"generate_metadata", true}

Definition at line 612 of file config.h.

◆ generate_method_arguments

option<method_arguments> clanguml::config::inheritable_diagram_options::generate_method_arguments
Initial value:
{
"generate_method_arguments", method_arguments::full}

Definition at line 575 of file config.h.

◆ generate_packages

option<bool> clanguml::config::inheritable_diagram_options::generate_packages {"generate_packages", false}

Definition at line 582 of file config.h.

◆ generate_return_types

option<bool> clanguml::config::inheritable_diagram_options::generate_return_types {"generate_return_types", false}

Definition at line 604 of file config.h.

◆ generate_system_headers

option<bool> clanguml::config::inheritable_diagram_options::generate_system_headers {"generate_system_headers", false}

Definition at line 595 of file config.h.

◆ generate_template_argument_dependencies

option<bool> clanguml::config::inheritable_diagram_options::generate_template_argument_dependencies
Initial value:
{
"generate_template_argument_dependencies", true}

Definition at line 585 of file config.h.

◆ git

option<git_config> clanguml::config::inheritable_diagram_options::git {"git"}

Definition at line 590 of file config.h.

◆ glob

option<std::vector<common::string_or_regex> > clanguml::config::inheritable_diagram_options::glob {"glob"}

Definition at line 564 of file config.h.

◆ group_methods

option<bool> clanguml::config::inheritable_diagram_options::group_methods {"group_methods", true}

Definition at line 579 of file config.h.

◆ include

option<filter> clanguml::config::inheritable_diagram_options::include {"include"}

Definition at line 571 of file config.h.

◆ include_relations_also_as_members

option<bool> clanguml::config::inheritable_diagram_options::include_relations_also_as_members
Initial value:
{
"include_relations_also_as_members", true}

Definition at line 567 of file config.h.

◆ include_system_headers

option<bool> clanguml::config::inheritable_diagram_options::include_system_headers {"include_system_headers", false}

Definition at line 570 of file config.h.

◆ inline_lambda_messages

option<bool> clanguml::config::inheritable_diagram_options::inline_lambda_messages {"inline_lambda_messages", false}

Definition at line 603 of file config.h.

◆ layout

option<layout_hints> clanguml::config::inheritable_diagram_options::layout {"layout"}

Definition at line 591 of file config.h.

◆ member_order

option<member_order_t> clanguml::config::inheritable_diagram_options::member_order
Initial value:
{
"member_order", member_order_t::lexical}

Definition at line 580 of file config.h.

◆ mermaid

option<struct mermaid> clanguml::config::inheritable_diagram_options::mermaid {"mermaid", option_inherit_mode::kAppend}

Definition at line 574 of file config.h.

◆ message_comment_width

option<unsigned> clanguml::config::inheritable_diagram_options::message_comment_width
Initial value:
{

Definition at line 609 of file config.h.

◆ package_type

option<package_type_t> clanguml::config::inheritable_diagram_options::package_type
Initial value:
{
"package_type", package_type_t::kNamespace}

Definition at line 583 of file config.h.

◆ participants_order

option<std::vector<std::string> > clanguml::config::inheritable_diagram_options::participants_order {"participants_order"}

Definition at line 607 of file config.h.

◆ puml

option<plantuml> clanguml::config::inheritable_diagram_options::puml {"plantuml", option_inherit_mode::kAppend}

Definition at line 573 of file config.h.

◆ relationship_hints

option<relationship_hints_t> clanguml::config::inheritable_diagram_options::relationship_hints {"relationship_hints"}

Definition at line 596 of file config.h.

◆ relative_to

option<std::filesystem::path> clanguml::config::inheritable_diagram_options::relative_to {"relative_to"}
protected

Definition at line 622 of file config.h.

◆ skip_redundant_dependencies

option<bool> clanguml::config::inheritable_diagram_options::skip_redundant_dependencies
Initial value:
{
"skip_redundant_dependencies", true}

Definition at line 587 of file config.h.

◆ type_aliases

option<type_aliases_t> clanguml::config::inheritable_diagram_options::type_aliases
Initial value:
{

Definition at line 597 of file config.h.

◆ using_module

option<std::string> clanguml::config::inheritable_diagram_options::using_module {"using_module"}

Definition at line 566 of file config.h.

◆ using_namespace

option<common::model::namespace_> clanguml::config::inheritable_diagram_options::using_namespace {"using_namespace"}

Definition at line 565 of file config.h.


The documentation for this struct was generated from the following files: