0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
clanguml::common::generators::nested_element_stack< T > Class Template Reference

Detailed Description

template<typename T>
class clanguml::common::generators::nested_element_stack< T >

This is a helper class for generating nested groups of elements in the diagrams, e.g. PlantUML together option.

Template Parameters
TType of stack elements

Definition at line 33 of file nested_element_stack.h.

#include <nested_element_stack.h>

Public Member Functions

 nested_element_stack (bool is_flat)
 
void enter ()
 
void leave ()
 
void group_together (const std::string &group_name, T *e)
 
const std::map< std::string, std::vector< T * > > & get_current_groups ()
 
const std::vector< T * > & get_group (const std::string &group_name)
 

Private Attributes

bool is_flat_
 
uint32_t current_level_ {0}
 
std::vector< std::map< std::string, std::vector< T * > > > current_level_groups_
 

Constructor & Destructor Documentation

◆ nested_element_stack()

template<typename T >
clanguml::common::generators::nested_element_stack< T >::nested_element_stack ( bool  is_flat)
inline

Definition at line 35 of file nested_element_stack.h.

36 : is_flat_{is_flat}
37 {
38 current_level_groups_.push_back({});
39 }

Member Function Documentation

◆ enter()

template<typename T >
void clanguml::common::generators::nested_element_stack< T >::enter ( )
inline

Switch to next level in the element stack

Definition at line 44 of file nested_element_stack.h.

45 {
46 if (!is_flat_)
48
49 current_level_groups_.push_back({});
50 }

◆ get_current_groups()

template<typename T >
const std::map< std::string, std::vector< T * > > & clanguml::common::generators::nested_element_stack< T >::get_current_groups ( )
inline

Get map of element groups at the current level.

Returns
Reference to element groups.

Definition at line 76 of file nested_element_stack.h.

77 {
79 }

◆ get_group()

template<typename T >
const std::vector< T * > & clanguml::common::generators::nested_element_stack< T >::get_group ( const std::string &  group_name)
inline

Get element group by name - the group must exist at the current level.

Parameters
group_nameElement group name
Returns

Definition at line 87 of file nested_element_stack.h.

88 {
89 return get_current_groups().at(group_name);
90 }

◆ group_together()

template<typename T >
void clanguml::common::generators::nested_element_stack< T >::group_together ( const std::string &  group_name,
T *  e 
)
inline

Add element pointer to a specified group at the current level

Definition at line 66 of file nested_element_stack.h.

67 {
68 current_level_groups_[current_level_][group_name].push_back(e);
69 }

◆ leave()

template<typename T >
void clanguml::common::generators::nested_element_stack< T >::leave ( )
inline

Switch to previous level in the element stack

Definition at line 55 of file nested_element_stack.h.

56 {
57 if (!is_flat_)
59
60 current_level_groups_.pop_back();
61 }

Member Data Documentation

◆ current_level_

template<typename T >
uint32_t clanguml::common::generators::nested_element_stack< T >::current_level_ {0}
private

Definition at line 95 of file nested_element_stack.h.

◆ current_level_groups_

template<typename T >
std::vector<std::map<std::string, std::vector<T *> > > clanguml::common::generators::nested_element_stack< T >::current_level_groups_
private

Definition at line 97 of file nested_element_stack.h.

◆ is_flat_

template<typename T >
bool clanguml::common::generators::nested_element_stack< T >::is_flat_
private

Definition at line 93 of file nested_element_stack.h.


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