0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Member Functions | List of all members
clanguml::common::generators::json::generator< ConfigType, DiagramType > Class Template Referenceabstract

Base class for diagram generators. More...

Detailed Description

template<typename ConfigType, typename DiagramType>
class clanguml::common::generators::json::generator< ConfigType, DiagramType >

Base class for diagram generators.

Template Parameters
ConfigTypeConfiguration type
DiagramTypeDiagram model type

Definition at line 63 of file generator.h.

#include <generator.h>

Public Member Functions

 ~generator () override=default
 
void generate (std::ostream &ostr) const override
 Generate diagram.
 
virtual void generate_diagram (nlohmann::json &parent) const =0
 Generate diagram model.
 
void generate_metadata (nlohmann::json &parent) const
 Generate metadata element with diagram metadata.
 
- Public Member Functions inherited from clanguml::common::generators::generator< ConfigType, DiagramType >
 generator (ConfigType &config, DiagramType &model)
 Constructor.
 
virtual ~generator ()=default
 
virtual void generate (std::ostream &ostr) const =0
 Generate diagram.
 
const ConfigType & config () const
 Get reference to diagram config.
 
const DiagramType & model () const
 Get reference to diagram model.
 
template<typename E >
inja::json element_context (const E &e) const
 
std::optional< std::pair< std::string, std::string > > get_link_pattern (const common::model::source_location &sl) const
 
std::optional< std::pair< std::string, std::string > > get_tooltip_pattern (const common::model::source_location &sl) const
 
void init_context ()
 Initialize diagram Jinja context.
 
void update_context () const
 Update diagram Jinja context.
 
void init_env ()
 
const inja::json & context () const
 
inja::Environment & env () const
 

Additional Inherited Members

- Protected Attributes inherited from clanguml::common::generators::generator< ConfigType, DiagramType >
inja::json m_context
 
inja::Environment m_env
 

Constructor & Destructor Documentation

◆ ~generator()

template<typename ConfigType , typename DiagramType >
clanguml::common::generators::json::generator< ConfigType, DiagramType >::~generator ( )
overridevirtualdefault

Member Function Documentation

◆ generate()

template<typename C , typename D >
void clanguml::common::generators::json::generator< C, D >::generate ( std::ostream &  ostr) const
overridevirtual

Generate diagram.

This is the main diagram generation entrypoint. It is responsible for calling other methods in appropriate order to generate the diagram into the output stream. It generates diagram elements, that are common to all types of diagrams in a given generator.

Parameters
ostrOutput stream

Implements clanguml::common::generators::generator< ConfigType, DiagramType >.

Definition at line 110 of file generator.h.

111{
114
115 if (!config.allow_empty_diagrams() && model.is_empty()) {
117 "Diagram configuration resulted in empty diagram."};
118 }
119
120 nlohmann::json j;
121 j["name"] = model.name();
122 j["diagram_type"] = to_string(model.type());
123 if (config.title) {
124 j["title"] = config.title();
125 }
126
128
130
131 ostr << j;
132}

◆ generate_diagram()

template<typename ConfigType , typename DiagramType >
virtual void clanguml::common::generators::json::generator< ConfigType, DiagramType >::generate_diagram ( nlohmann::json &  parent) const
pure virtual

Generate diagram model.

This method must be implemented in subclasses for specific diagram types.

Parameters
ostrOutput stream

Implemented in clanguml::class_diagram::generators::json::generator, clanguml::include_diagram::generators::json::generator, clanguml::package_diagram::generators::json::generator, and clanguml::sequence_diagram::generators::json::generator.

◆ generate_metadata()

template<typename C , typename D >
void clanguml::common::generators::json::generator< C, D >::generate_metadata ( nlohmann::json &  parent) const

Generate metadata element with diagram metadata.

Parameters
parentRoot JSON object

Definition at line 135 of file generator.h.

136{
138 parent["metadata"]["clang_uml_version"] =
139 clanguml::version::CLANG_UML_VERSION;
140 parent["metadata"]["schema_version"] =
141 clanguml::version::CLANG_UML_JSON_GENERATOR_SCHEMA_VERSION;
142 parent["metadata"]["llvm_version"] = clang::getClangFullVersion();
143 }
144}

The documentation for this class was generated from the following file: