Added doxygen comments to common namespace
This commit is contained in:
12
.clang-uml
12
.clang-uml
@@ -20,6 +20,10 @@ diagrams:
|
|||||||
include!: uml/class/diagram_hierarchy_class.yml
|
include!: uml/class/diagram_hierarchy_class.yml
|
||||||
decorated_element_hierarchy_class:
|
decorated_element_hierarchy_class:
|
||||||
include!: uml/class/decorated_element_hierarchy_class.yml
|
include!: uml/class/decorated_element_hierarchy_class.yml
|
||||||
|
stylable_element_hierarchy_class:
|
||||||
|
include!: uml/class/stylable_element_hierarchy_class.yml
|
||||||
|
source_location_hierarchy_class:
|
||||||
|
include!: uml/class/source_location_hierarchy_class.yml
|
||||||
filter_visitor_hierarchy_class:
|
filter_visitor_hierarchy_class:
|
||||||
include!: uml/class/filter_visitor_hierarchy_class.yml
|
include!: uml/class/filter_visitor_hierarchy_class.yml
|
||||||
diagram_filter_context_class:
|
diagram_filter_context_class:
|
||||||
@@ -28,8 +32,16 @@ diagrams:
|
|||||||
include!: uml/class/nested_trait_hierarchy_class.yml
|
include!: uml/class/nested_trait_hierarchy_class.yml
|
||||||
package_hierarchy_class:
|
package_hierarchy_class:
|
||||||
include!: uml/class/package_hierarchy_class.yml
|
include!: uml/class/package_hierarchy_class.yml
|
||||||
|
source_file_hierarchy_class:
|
||||||
|
include!: uml/class/source_file_hierarchy_class.yml
|
||||||
|
template_trait_hierarchy_class:
|
||||||
|
include!: uml/class/template_trait_hierarchy_class.yml
|
||||||
|
comment_visitor_hierarchy_class:
|
||||||
|
include!: uml/class/comment_visitor_hierarchy_class.yml
|
||||||
decorators_class:
|
decorators_class:
|
||||||
include!: uml/class/decorators_class.yml
|
include!: uml/class/decorators_class.yml
|
||||||
|
relationship_context_class:
|
||||||
|
include!: uml/class/relationship_context_class.yml
|
||||||
common_model_class:
|
common_model_class:
|
||||||
include!: uml/class/common_model_class.yml
|
include!: uml/class/common_model_class.yml
|
||||||
class_model_class:
|
class_model_class:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/clang_utils.cc
|
* @file src/common/visitor/clang_utils.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/clang_utils.h
|
* @file src/common/clang_utils.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/compilation_database.cc
|
* @file src/common/compilation_database.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/compilation_database.h
|
* @file src/common/compilation_database.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/generators.cc
|
* @file src/common/generators/generators.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/generators.h
|
* @file src/common/generators/generators.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/json/generator.cc
|
* @file src/common/generators/json/generator.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/json/generator.h
|
* @file src/common/generators/json/generator.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/nested_element_stack.h
|
* @file src/common/generators/nested_element_stack.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -38,6 +38,9 @@ public:
|
|||||||
current_level_groups_.push_back({});
|
current_level_groups_.push_back({});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch to next level in the element stack
|
||||||
|
*/
|
||||||
void enter()
|
void enter()
|
||||||
{
|
{
|
||||||
if (!is_flat_)
|
if (!is_flat_)
|
||||||
@@ -46,6 +49,9 @@ public:
|
|||||||
current_level_groups_.push_back({});
|
current_level_groups_.push_back({});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Switch to previous level in the element stack
|
||||||
|
*/
|
||||||
void leave()
|
void leave()
|
||||||
{
|
{
|
||||||
if (!is_flat_)
|
if (!is_flat_)
|
||||||
@@ -54,16 +60,30 @@ public:
|
|||||||
current_level_groups_.pop_back();
|
current_level_groups_.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add element pointer to a specified group at the current level
|
||||||
|
*/
|
||||||
void group_together(const std::string &group_name, T *e)
|
void group_together(const std::string &group_name, T *e)
|
||||||
{
|
{
|
||||||
current_level_groups_[current_level_][group_name].push_back(e);
|
current_level_groups_[current_level_][group_name].push_back(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get map of element groups at the current level.
|
||||||
|
*
|
||||||
|
* @return Reference to element groups.
|
||||||
|
*/
|
||||||
const std::map<std::string, std::vector<T *>> &get_current_groups()
|
const std::map<std::string, std::vector<T *>> &get_current_groups()
|
||||||
{
|
{
|
||||||
return current_level_groups_.at(current_level_);
|
return current_level_groups_.at(current_level_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get element group by name - the group must exist at the current level.
|
||||||
|
*
|
||||||
|
* @param group_name Element group name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
const std::vector<T *> &get_group(const std::string &group_name)
|
const std::vector<T *> &get_group(const std::string &group_name)
|
||||||
{
|
{
|
||||||
return get_current_groups().at(group_name);
|
return get_current_groups().at(group_name);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/plantuml/generator.h
|
* @file src/common/generators/plantuml/generator.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/plantuml/generator.h
|
* @file src/common/generators/plantuml/generator.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/progress_indicator.cc
|
* @file src/common/generators/progress_indicator.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/generators/progress_indicator.h
|
* @file src/common/generators/progress_indicator.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,6 +25,9 @@
|
|||||||
|
|
||||||
namespace clanguml::common::generators {
|
namespace clanguml::common::generators {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Container for diagram generation progress indicators
|
||||||
|
*/
|
||||||
class progress_indicator {
|
class progress_indicator {
|
||||||
public:
|
public:
|
||||||
struct progress_state {
|
struct progress_state {
|
||||||
@@ -42,15 +45,40 @@ public:
|
|||||||
|
|
||||||
progress_indicator();
|
progress_indicator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new progress bar to the indicator set
|
||||||
|
*
|
||||||
|
* @param name Name (prefix) of the progress bar
|
||||||
|
* @param max Total number of steps in the progress bar
|
||||||
|
* @param color Color of the progress bar
|
||||||
|
*/
|
||||||
void add_progress_bar(
|
void add_progress_bar(
|
||||||
const std::string &name, size_t max, indicators::Color color);
|
const std::string &name, size_t max, indicators::Color color);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment specified progress bar.
|
||||||
|
*
|
||||||
|
* @param name Name of the progress bar
|
||||||
|
*/
|
||||||
void increment(const std::string &name);
|
void increment(const std::string &name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop all the progress bars.
|
||||||
|
*/
|
||||||
void stop();
|
void stop();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set specified progress bar as complete.
|
||||||
|
*
|
||||||
|
* @param name Name of the progress bar
|
||||||
|
*/
|
||||||
void complete(const std::string &name);
|
void complete(const std::string &name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set progress bar as failed.
|
||||||
|
*
|
||||||
|
* @param name Name of the progress bar
|
||||||
|
*/
|
||||||
void fail(const std::string &name);
|
void fail(const std::string &name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/class_diagram/model/decorated_element.cc
|
* @file src/class_diagram/model/decorated_element.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/class_diagram/model/decorated_element.h
|
* @file src/class_diagram/model/decorated_element.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/diagram.cc
|
* @file src/common/model/diagram.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/diagram.h
|
* @file src/common/model/diagram.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/diagram_element.cc
|
* @file src/common/model/diagram_element.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/diagram_filter.cc
|
* @file src/common/model/diagram_filter.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/diagram_filter.h
|
* @file src/common/model/diagram_filter.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/element.cc
|
* @file src/common/model/element.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/element.h
|
* @file src/common/model/element.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/element_view.h
|
* @file src/common/model/element_view.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/enums.cc
|
* @file src/common/model/enums.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/enums.h
|
* @file src/common/model/enums.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/namespace.cc
|
* @file src/common/model/namespace.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/namespace.h
|
* @file src/common/model/namespace.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/nested_trait.h
|
* @file src/common/model/nested_trait.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/package.cc
|
* @file src/common/model/package.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/package.h
|
* @file src/common/model/package.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/path.h
|
* @file src/common/model/path.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,10 +25,30 @@
|
|||||||
|
|
||||||
namespace clanguml::common::model {
|
namespace clanguml::common::model {
|
||||||
|
|
||||||
enum class path_type { kNamespace, kFilesystem };
|
/**
|
||||||
|
* @brief Type of diagram path
|
||||||
|
*
|
||||||
|
* Paths in diagrams represent the nest structure within a diagram, e.g.
|
||||||
|
* a nested set of namespaces or nested set of directories.
|
||||||
|
*/
|
||||||
|
enum class path_type {
|
||||||
|
kNamespace, /*!< Namespace path */
|
||||||
|
kFilesystem /*!< Filesystem path */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Diagram path
|
||||||
|
*
|
||||||
|
* This class stores a diagram path, such as a namespace or directory
|
||||||
|
* structure.
|
||||||
|
*/
|
||||||
class path {
|
class path {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the path separator based on the path type.
|
||||||
|
*
|
||||||
|
* @return Path separator
|
||||||
|
*/
|
||||||
const char *separator() const
|
const char *separator() const
|
||||||
{
|
{
|
||||||
switch (path_type_) {
|
switch (path_type_) {
|
||||||
@@ -133,15 +153,36 @@ public:
|
|||||||
return left.to_string() < right.to_string();
|
return left.to_string() < right.to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the path as string.
|
||||||
|
*
|
||||||
|
* @return String representation of the path.
|
||||||
|
*/
|
||||||
std::string to_string() const
|
std::string to_string() const
|
||||||
{
|
{
|
||||||
return fmt::format("{}", fmt::join(path_, std::string{separator()}));
|
return fmt::format("{}", fmt::join(path_, std::string{separator()}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the path is empty.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
bool is_empty() const { return path_.empty(); }
|
bool is_empty() const { return path_.empty(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of elements in the path.
|
||||||
|
*
|
||||||
|
* @return Size of path.
|
||||||
|
*/
|
||||||
size_t size() const { return path_.size(); }
|
size_t size() const { return path_.size(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path to path.
|
||||||
|
*
|
||||||
|
* @param right Path to append at the end.
|
||||||
|
* @return New merged path.
|
||||||
|
*/
|
||||||
path operator|(const path &right) const
|
path operator|(const path &right) const
|
||||||
{
|
{
|
||||||
path res{*this};
|
path res{*this};
|
||||||
@@ -149,8 +190,18 @@ public:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path to the current path.
|
||||||
|
*
|
||||||
|
* @param right
|
||||||
|
*/
|
||||||
void operator|=(const path &right) { append(right); }
|
void operator|=(const path &right) { append(right); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path element to path.
|
||||||
|
*
|
||||||
|
* @return New path.
|
||||||
|
*/
|
||||||
path operator|(const std::string &right) const
|
path operator|(const std::string &right) const
|
||||||
{
|
{
|
||||||
path res{*this};
|
path res{*this};
|
||||||
@@ -158,6 +209,11 @@ public:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path element to the current path.
|
||||||
|
*
|
||||||
|
* @param right Path element to append.
|
||||||
|
*/
|
||||||
void operator|=(const std::string &right) { append(right); }
|
void operator|=(const std::string &right) { append(right); }
|
||||||
|
|
||||||
std::string &operator[](const unsigned int index) { return path_[index]; }
|
std::string &operator[](const unsigned int index) { return path_[index]; }
|
||||||
@@ -167,8 +223,18 @@ public:
|
|||||||
return path_[index];
|
return path_[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
void append(const std::string &ns) { path_.push_back(ns); }
|
/**
|
||||||
|
* Append path element to path.
|
||||||
|
*
|
||||||
|
* @return New path.
|
||||||
|
*/
|
||||||
|
void append(const std::string &name) { path_.push_back(name); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path to current path.
|
||||||
|
*
|
||||||
|
* @param ns Path to append.
|
||||||
|
*/
|
||||||
void append(const path &ns)
|
void append(const path &ns)
|
||||||
{
|
{
|
||||||
for (const auto &n : ns) {
|
for (const auto &n : ns) {
|
||||||
@@ -176,6 +242,9 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drop the last element of the path.
|
||||||
|
*/
|
||||||
void pop_back()
|
void pop_back()
|
||||||
{
|
{
|
||||||
if (!path_.empty()) {
|
if (!path_.empty()) {
|
||||||
@@ -183,6 +252,11 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the parent of the last element in the path.
|
||||||
|
*
|
||||||
|
* @return Path to the parent of the last element, or nullopt.
|
||||||
|
*/
|
||||||
std::optional<path> parent() const
|
std::optional<path> parent() const
|
||||||
{
|
{
|
||||||
if (size() <= 1) {
|
if (size() <= 1) {
|
||||||
@@ -194,16 +268,34 @@ public:
|
|||||||
return {std::move(res)};
|
return {std::move(res)};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool starts_with(const path &right) const
|
/**
|
||||||
|
* Returns true if path starts with specified prefix.
|
||||||
|
* @param prefix Path prefix to check.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool starts_with(const path &prefix) const
|
||||||
{
|
{
|
||||||
return util::starts_with(path_, right.path_);
|
return util::starts_with(path_, prefix.path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ends_with(const path &right) const
|
/**
|
||||||
|
* Returns true if path ends with suffix
|
||||||
|
* @param suffix Path suffix to check
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool ends_with(const path &suffix) const
|
||||||
{
|
{
|
||||||
return util::ends_with(path_, right.path_);
|
return util::ends_with(path_, suffix.path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Returns the common prefix of 2 paths.
|
||||||
|
*
|
||||||
|
* If no common prefix exists between 2 paths, the result is an empty path.
|
||||||
|
*
|
||||||
|
* @param right Path to compare
|
||||||
|
* @return Common path prefix
|
||||||
|
*/
|
||||||
path common_path(const path &right) const
|
path common_path(const path &right) const
|
||||||
{
|
{
|
||||||
path res{};
|
path res{};
|
||||||
@@ -216,6 +308,14 @@ public:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make the current path relative to the other path, if possible.
|
||||||
|
*
|
||||||
|
* If not, return the original path.
|
||||||
|
*
|
||||||
|
* @param right Parent path
|
||||||
|
* @return Path relative to `right`
|
||||||
|
*/
|
||||||
path relative_to(const path &right) const
|
path relative_to(const path &right) const
|
||||||
{
|
{
|
||||||
path res{*this};
|
path res{*this};
|
||||||
@@ -226,15 +326,21 @@ public:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string relative(const std::string &name) const
|
/**
|
||||||
|
* Make path represented as a string relative to the current path.
|
||||||
|
*
|
||||||
|
* @param ns Path to make relative against *this.
|
||||||
|
* @return Relative path.
|
||||||
|
*/
|
||||||
|
std::string relative(const std::string &ns) const
|
||||||
{
|
{
|
||||||
if (is_empty())
|
if (is_empty())
|
||||||
return name;
|
return ns;
|
||||||
|
|
||||||
if (name == to_string())
|
if (ns == to_string())
|
||||||
return name;
|
return ns;
|
||||||
|
|
||||||
auto res = name;
|
auto res = ns;
|
||||||
auto ns_prefix = to_string() + std::string{separator()};
|
auto ns_prefix = to_string() + std::string{separator()};
|
||||||
|
|
||||||
auto it = res.find(ns_prefix);
|
auto it = res.find(ns_prefix);
|
||||||
@@ -246,6 +352,11 @@ public:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the name of the last element in the path.
|
||||||
|
*
|
||||||
|
* @return Name of the last element in the path.
|
||||||
|
*/
|
||||||
std::string name() const
|
std::string name() const
|
||||||
{
|
{
|
||||||
assert(size() > 0);
|
assert(size() > 0);
|
||||||
@@ -265,6 +376,11 @@ public:
|
|||||||
path::container_type::const_iterator begin() const { return path_.begin(); }
|
path::container_type::const_iterator begin() const { return path_.begin(); }
|
||||||
path::container_type::const_iterator end() const { return path_.end(); }
|
path::container_type::const_iterator end() const { return path_.end(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get path type.
|
||||||
|
*
|
||||||
|
* @return Path type.
|
||||||
|
*/
|
||||||
path_type type() const { return path_type_; }
|
path_type type() const { return path_type_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/relationship.cc
|
* @file src/common/model/relationship.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/relationship.h
|
* @file src/common/model/relationship.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,9 +25,28 @@
|
|||||||
|
|
||||||
namespace clanguml::common::model {
|
namespace clanguml::common::model {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Class representing any relationship other than inheritance
|
||||||
|
*
|
||||||
|
* This class represents all kinds of relationships between diagram elements,
|
||||||
|
* except for inheritance which are handled in a special way
|
||||||
|
* (See @ref clanguml::class_diagram::model::class_parent).
|
||||||
|
*
|
||||||
|
* @embed{relationship_context_class.svg}
|
||||||
|
*/
|
||||||
class relationship : public common::model::decorated_element,
|
class relationship : public common::model::decorated_element,
|
||||||
public common::model::stylable_element {
|
public common::model::stylable_element {
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param type Type of relationship
|
||||||
|
* @param destination Id of the relationship target
|
||||||
|
* @param access Access scope of the relationship
|
||||||
|
* @param label Relationship label
|
||||||
|
* @param multiplicity_source Multiplicity at the source
|
||||||
|
* @param multiplicity_destination Multiplicity at the destination
|
||||||
|
*/
|
||||||
relationship(relationship_t type, int64_t destination,
|
relationship(relationship_t type, int64_t destination,
|
||||||
access_t access = access_t::kPublic, std::string label = "",
|
access_t access = access_t::kPublic, std::string label = "",
|
||||||
std::string multiplicity_source = "",
|
std::string multiplicity_source = "",
|
||||||
@@ -35,23 +54,90 @@ public:
|
|||||||
|
|
||||||
virtual ~relationship() = default;
|
virtual ~relationship() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the type of relatinoship.
|
||||||
|
*
|
||||||
|
* @param type Type of relationship.
|
||||||
|
*/
|
||||||
void set_type(relationship_t type) noexcept;
|
void set_type(relationship_t type) noexcept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the type of relatinoship.
|
||||||
|
*
|
||||||
|
* @return Type of relationship.
|
||||||
|
*/
|
||||||
relationship_t type() const noexcept;
|
relationship_t type() const noexcept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set id of the diagram element which is the target of this
|
||||||
|
* relationship.
|
||||||
|
*
|
||||||
|
* @param destination Target element id.
|
||||||
|
*/
|
||||||
void set_destination(int64_t destination);
|
void set_destination(int64_t destination);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the id of the target element of this relationship.
|
||||||
|
*
|
||||||
|
* @return Target element id.
|
||||||
|
*/
|
||||||
clanguml::common::id_t destination() const;
|
clanguml::common::id_t destination() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the relationship multiplicity at the source.
|
||||||
|
*
|
||||||
|
* @param multiplicity_source Source multiplicity.
|
||||||
|
*/
|
||||||
void set_multiplicity_source(const std::string &multiplicity_source);
|
void set_multiplicity_source(const std::string &multiplicity_source);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the relationship multiplicity at the source.
|
||||||
|
*
|
||||||
|
* @return Source multiplicity.
|
||||||
|
*/
|
||||||
std::string multiplicity_source() const;
|
std::string multiplicity_source() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the relationship multiplicity at the destination.
|
||||||
|
*
|
||||||
|
* @param multiplicity_destination Destination multiplicity.
|
||||||
|
*/
|
||||||
void set_multiplicity_destination(
|
void set_multiplicity_destination(
|
||||||
const std::string &multiplicity_destination);
|
const std::string &multiplicity_destination);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the relationship multiplicity at the destination.
|
||||||
|
*
|
||||||
|
* @return Destination multiplicity.
|
||||||
|
*/
|
||||||
std::string multiplicity_destination() const;
|
std::string multiplicity_destination() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set relationship label.
|
||||||
|
*
|
||||||
|
* @param label Relationship label.
|
||||||
|
*/
|
||||||
void set_label(const std::string &label);
|
void set_label(const std::string &label);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the relationship label.
|
||||||
|
*
|
||||||
|
* @return Relationoship label.
|
||||||
|
*/
|
||||||
std::string label() const;
|
std::string label() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the access scope for this relationship (e.g `public`)
|
||||||
|
*
|
||||||
|
* @param scope Access scope
|
||||||
|
*/
|
||||||
void set_access(access_t scope) noexcept;
|
void set_access(access_t scope) noexcept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the relationship access scope (e.g. `public`).
|
||||||
|
*
|
||||||
|
* @return Access scope
|
||||||
|
*/
|
||||||
access_t access() const noexcept;
|
access_t access() const noexcept;
|
||||||
|
|
||||||
friend bool operator==(const relationship &l, const relationship &r);
|
friend bool operator==(const relationship &l, const relationship &r);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/source_file.cc
|
* @file src/common/model/source_file.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/source_file.h
|
* @file src/common/model/source_file.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -34,7 +34,14 @@
|
|||||||
|
|
||||||
namespace clanguml::common::model {
|
namespace clanguml::common::model {
|
||||||
|
|
||||||
enum class source_file_t { kDirectory, kHeader, kImplementation };
|
/**
|
||||||
|
* This enum represents different kinds of files in the diagram.
|
||||||
|
*/
|
||||||
|
enum class source_file_t {
|
||||||
|
kDirectory, /*!< Diagram element is a directory */
|
||||||
|
kHeader, /*!< Diagram element is a header */
|
||||||
|
kImplementation /*!< Diagram element is a source file (e.g. cpp) */
|
||||||
|
};
|
||||||
|
|
||||||
std::string to_string(source_file_t sf);
|
std::string to_string(source_file_t sf);
|
||||||
|
|
||||||
@@ -48,6 +55,11 @@ struct fs_path_sep {
|
|||||||
|
|
||||||
using filesystem_path = common::model::path;
|
using filesystem_path = common::model::path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Diagram element representing some file or directory.
|
||||||
|
*
|
||||||
|
* @embed{source_file_hierarchy_class.svg}
|
||||||
|
*/
|
||||||
class source_file
|
class source_file
|
||||||
: public common::model::diagram_element,
|
: public common::model::diagram_element,
|
||||||
public common::model::stylable_element,
|
public common::model::stylable_element,
|
||||||
@@ -66,16 +78,6 @@ public:
|
|||||||
set_id(common::to_id(preferred));
|
set_id(common::to_id(preferred));
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_path(const filesystem_path &p) { path_ = p; }
|
|
||||||
|
|
||||||
void set_absolute() { is_absolute_ = true; }
|
|
||||||
|
|
||||||
bool is_absolute() const { return is_absolute_; }
|
|
||||||
|
|
||||||
void set_type(source_file_t type) { type_ = type; }
|
|
||||||
|
|
||||||
source_file_t type() const { return type_; }
|
|
||||||
|
|
||||||
source_file(const source_file &) = delete;
|
source_file(const source_file &) = delete;
|
||||||
source_file(source_file &&) = default;
|
source_file(source_file &&) = default;
|
||||||
source_file &operator=(const source_file &) = delete;
|
source_file &operator=(const source_file &) = delete;
|
||||||
@@ -87,15 +89,64 @@ public:
|
|||||||
(type_ == right.type_);
|
(type_ == right.type_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the path to the element in the diagram.
|
||||||
|
*
|
||||||
|
* @param p Diagram path.
|
||||||
|
*/
|
||||||
|
void set_path(const filesystem_path &p) { path_ = p; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the elements path absolute?
|
||||||
|
*
|
||||||
|
* @return True if the elements path is absolute.
|
||||||
|
*/
|
||||||
|
bool is_absolute() const { return is_absolute_; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the type of the source file.
|
||||||
|
*
|
||||||
|
* @param type Type of the source file.
|
||||||
|
*/
|
||||||
|
void set_type(source_file_t type) { type_ = type; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the source file elements type.
|
||||||
|
*
|
||||||
|
* @return Type of the source file.
|
||||||
|
*/
|
||||||
|
source_file_t type() const { return type_; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the source file's parent path.
|
||||||
|
*
|
||||||
|
* @return Source file parent path.
|
||||||
|
*/
|
||||||
const filesystem_path &path() const { return path_; }
|
const filesystem_path &path() const { return path_; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the full path string, i.e. parent path and elements name.
|
||||||
|
*
|
||||||
|
* @return Full source file path as string.
|
||||||
|
*/
|
||||||
std::string full_name(bool /*relative*/) const override
|
std::string full_name(bool /*relative*/) const override
|
||||||
{
|
{
|
||||||
return (path_ | name()).to_string();
|
return (path_ | name()).to_string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return full path, i.e. parent path and elements name.
|
||||||
|
*
|
||||||
|
* @return Full source file path.
|
||||||
|
*/
|
||||||
auto full_path() const { return path() | name(); }
|
auto full_path() const { return path() | name(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the source file path to std::filesystem::path, relative to `base`
|
||||||
|
*
|
||||||
|
* @param base Base path
|
||||||
|
* @return Filesystem path to the source file.
|
||||||
|
*/
|
||||||
std::filesystem::path fs_path(const std::filesystem::path &base = {}) const
|
std::filesystem::path fs_path(const std::filesystem::path &base = {}) const
|
||||||
{
|
{
|
||||||
std::filesystem::path res;
|
std::filesystem::path res;
|
||||||
@@ -114,6 +165,11 @@ public:
|
|||||||
return res.lexically_normal();
|
return res.lexically_normal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return inja context for this element.
|
||||||
|
*
|
||||||
|
* @return Inja context.
|
||||||
|
*/
|
||||||
inja::json context() const override
|
inja::json context() const override
|
||||||
{
|
{
|
||||||
inja::json ctx = diagram_element::context();
|
inja::json ctx = diagram_element::context();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/source_location.cc
|
* @file src/common/model/source_location.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/source_location.h
|
* @file src/common/model/source_location.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -24,6 +24,8 @@ namespace clanguml::common::model {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Base class of all diagram elements that have source location.
|
* @brief Base class of all diagram elements that have source location.
|
||||||
|
*
|
||||||
|
* @embed{source_location_hierarchy_class.svg}
|
||||||
*/
|
*/
|
||||||
class source_location {
|
class source_location {
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/stylable_element.cc
|
* @file src/common/model/stylable_element.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/stylable_element.h
|
* @file src/common/model/stylable_element.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -21,9 +21,25 @@
|
|||||||
|
|
||||||
namespace clanguml::common::model {
|
namespace clanguml::common::model {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Diagram elements to which style can be applied.
|
||||||
|
*
|
||||||
|
* @embed{stylable_element_hierarchy_class.svg}
|
||||||
|
*/
|
||||||
class stylable_element {
|
class stylable_element {
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Set style.
|
||||||
|
*
|
||||||
|
* @param style Style specification
|
||||||
|
*/
|
||||||
void set_style(const std::string &style);
|
void set_style(const std::string &style);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get style
|
||||||
|
*
|
||||||
|
* @return Style specification
|
||||||
|
*/
|
||||||
std::string style() const;
|
std::string style() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/template_parameter.cc
|
* @file src/common/model/template_parameter.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -209,6 +209,8 @@ std::optional<std::string> template_parameter::name() const
|
|||||||
|
|
||||||
void template_parameter::set_default_value(const std::string &value)
|
void template_parameter::set_default_value(const std::string &value)
|
||||||
{
|
{
|
||||||
|
assert(kind_ != template_parameter_kind_t::argument);
|
||||||
|
|
||||||
default_value_ = value;
|
default_value_ = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,10 +651,6 @@ void template_parameter::is_ellipsis(bool e) { is_ellipsis_ = e; }
|
|||||||
|
|
||||||
bool template_parameter::is_ellipsis() const { return is_ellipsis_; }
|
bool template_parameter::is_ellipsis() const { return is_ellipsis_; }
|
||||||
|
|
||||||
void template_parameter::is_noexcept(bool e) { is_noexcept_ = e; }
|
|
||||||
|
|
||||||
bool template_parameter::is_noexcept() const { return is_noexcept_; }
|
|
||||||
|
|
||||||
int calculate_template_params_specialization_match(
|
int calculate_template_params_specialization_match(
|
||||||
const std::vector<template_parameter> &specialization_params,
|
const std::vector<template_parameter> &specialization_params,
|
||||||
const std::vector<template_parameter> &template_params)
|
const std::vector<template_parameter> &template_params)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/template_trait.cc
|
* @file src/common/model/template_trait.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -39,25 +39,11 @@ std::ostream &template_trait::render_template_params(std::ostream &ostr,
|
|||||||
return ostr;
|
return ostr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void template_trait::set_base_template(const std::string &full_name)
|
|
||||||
{
|
|
||||||
base_template_full_name_ = full_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string template_trait::base_template() const
|
|
||||||
{
|
|
||||||
return base_template_full_name_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void template_trait::add_template(template_parameter &&tmplt)
|
void template_trait::add_template(template_parameter &&tmplt)
|
||||||
{
|
{
|
||||||
templates_.push_back(std::move(tmplt));
|
templates_.push_back(std::move(tmplt));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool template_trait::is_implicit() const { return is_implicit_; }
|
|
||||||
|
|
||||||
void template_trait::set_implicit(bool implicit) { is_implicit_ = implicit; }
|
|
||||||
|
|
||||||
const std::vector<template_parameter> &template_trait::template_params() const
|
const std::vector<template_parameter> &template_trait::template_params() const
|
||||||
{
|
{
|
||||||
return templates_;
|
return templates_;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/model/template_trait.h
|
* @file src/common/model/template_trait.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,30 +25,52 @@
|
|||||||
|
|
||||||
namespace clanguml::common::model {
|
namespace clanguml::common::model {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Common interface for template diagram elements.
|
||||||
|
*
|
||||||
|
* @embed{template_trait_hierarchy_class.svg}
|
||||||
|
*/
|
||||||
class template_trait {
|
class template_trait {
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Render the template parameters to a stream.
|
||||||
|
*
|
||||||
|
* @param ostr Output stream
|
||||||
|
* @param using_namespace Relative to namespace
|
||||||
|
* @param relative Whether to make template arguments relative to
|
||||||
|
* `using_namespace`
|
||||||
|
* @return Reference to output stream
|
||||||
|
*/
|
||||||
std::ostream &render_template_params(std::ostream &ostr,
|
std::ostream &render_template_params(std::ostream &ostr,
|
||||||
const common::model::namespace_ &using_namespace, bool relative) const;
|
const common::model::namespace_ &using_namespace, bool relative) const;
|
||||||
|
|
||||||
void set_base_template(const std::string &full_name);
|
/**
|
||||||
|
* Add template parameter
|
||||||
std::string base_template() const;
|
*
|
||||||
|
* @param tmplt Template parameter
|
||||||
|
*/
|
||||||
void add_template(template_parameter &&tmplt);
|
void add_template(template_parameter &&tmplt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get reference to template parameters.
|
||||||
|
*
|
||||||
|
* @return Reference to template parameters list.
|
||||||
|
*/
|
||||||
const std::vector<template_parameter> &template_params() const;
|
const std::vector<template_parameter> &template_params() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Wrapper around @ref
|
||||||
|
* calculate_template_params_specialization_match()
|
||||||
|
*
|
||||||
|
* @param other Other template diagram element
|
||||||
|
* @return Match value
|
||||||
|
*/
|
||||||
int calculate_template_specialization_match(
|
int calculate_template_specialization_match(
|
||||||
const template_trait &other) const;
|
const template_trait &other) const;
|
||||||
|
|
||||||
bool is_implicit() const;
|
|
||||||
|
|
||||||
void set_implicit(bool implicit);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<template_parameter> templates_;
|
std::vector<template_parameter> templates_;
|
||||||
std::string base_template_full_name_;
|
std::string base_template_full_name_;
|
||||||
bool is_implicit_{false};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace clanguml::common::model
|
} // namespace clanguml::common::model
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/class_diagram/model/tvl.h
|
* @file src/class_diagram/model/tvl.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -20,10 +20,29 @@
|
|||||||
#include <optional>
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This namespace implements convenience functions to handle 3-value logic
|
||||||
|
* operations needed for applying diagram filters.
|
||||||
|
*
|
||||||
|
* @see clanguml::common::model::diagram_filter
|
||||||
|
* @see clanguml::common::model::filter_visitor
|
||||||
|
*/
|
||||||
namespace clanguml::common::model::tvl {
|
namespace clanguml::common::model::tvl {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Alias for 3-value logic values
|
||||||
|
*
|
||||||
|
* If optional holds nullopt, the value is undefined.
|
||||||
|
*/
|
||||||
using value_t = std::optional<bool>;
|
using value_t = std::optional<bool>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate 3-value logic AND value.
|
||||||
|
*
|
||||||
|
* @param l Left value
|
||||||
|
* @param r Right value
|
||||||
|
* @return Result of AND operation.
|
||||||
|
*/
|
||||||
inline value_t and_(const value_t &l, const value_t &r)
|
inline value_t and_(const value_t &l, const value_t &r)
|
||||||
{
|
{
|
||||||
if (!l.has_value())
|
if (!l.has_value())
|
||||||
@@ -35,6 +54,13 @@ inline value_t and_(const value_t &l, const value_t &r)
|
|||||||
return r.value() && l.value();
|
return r.value() && l.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate 3-value logic OR value.
|
||||||
|
*
|
||||||
|
* @param l Left value
|
||||||
|
* @param r Right value
|
||||||
|
* @return Result of OR operation.
|
||||||
|
*/
|
||||||
inline value_t or_(const value_t &l, const value_t &r)
|
inline value_t or_(const value_t &l, const value_t &r)
|
||||||
{
|
{
|
||||||
if (!l.has_value() && !r.has_value())
|
if (!l.has_value() && !r.has_value())
|
||||||
@@ -49,12 +75,40 @@ inline value_t or_(const value_t &l, const value_t &r)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the value holds true
|
||||||
|
*
|
||||||
|
* @param v Logical value
|
||||||
|
* @return True, if v holds true
|
||||||
|
*/
|
||||||
inline bool is_true(const value_t &v) { return v.has_value() && v.value(); }
|
inline bool is_true(const value_t &v) { return v.has_value() && v.value(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the value holds false
|
||||||
|
*
|
||||||
|
* @param v Logical value
|
||||||
|
* @return True, if v holds false
|
||||||
|
*/
|
||||||
inline bool is_false(const value_t &v) { return v.has_value() && !v.value(); }
|
inline bool is_false(const value_t &v) { return v.has_value() && !v.value(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the value is undefined
|
||||||
|
*
|
||||||
|
* @param v Logical value
|
||||||
|
* @return True, if v has no value
|
||||||
|
*/
|
||||||
inline bool is_undefined(const value_t &v) { return !v.has_value(); }
|
inline bool is_undefined(const value_t &v) { return !v.has_value(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3-value logic equivalent of std::all_of
|
||||||
|
*
|
||||||
|
* @tparam InputIterator Iterator type
|
||||||
|
* @tparam Predicate Predicate type
|
||||||
|
* @param first First iterator element
|
||||||
|
* @param last Last iterator element
|
||||||
|
* @param pred Predicate to apply to each element
|
||||||
|
* @return True, if all elements are true or undefined
|
||||||
|
*/
|
||||||
template <typename InputIterator, typename Predicate>
|
template <typename InputIterator, typename Predicate>
|
||||||
inline value_t all_of(InputIterator first, InputIterator last, Predicate pred)
|
inline value_t all_of(InputIterator first, InputIterator last, Predicate pred)
|
||||||
{
|
{
|
||||||
@@ -76,6 +130,16 @@ inline value_t all_of(InputIterator first, InputIterator last, Predicate pred)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 3-value logic equivalent of std::any_of
|
||||||
|
*
|
||||||
|
* @tparam InputIterator Iterator type
|
||||||
|
* @tparam Predicate Predicate type
|
||||||
|
* @param first First iterator element
|
||||||
|
* @param last Last iterator element
|
||||||
|
* @param pred Predicate to apply to each element
|
||||||
|
* @return True, if at least 1 element is true
|
||||||
|
*/
|
||||||
template <typename InputIterator, typename Predicate>
|
template <typename InputIterator, typename Predicate>
|
||||||
inline value_t any_of(InputIterator first, InputIterator last, Predicate pred)
|
inline value_t any_of(InputIterator first, InputIterator last, Predicate pred)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/types.cc
|
* @file src/common/types.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/types.h
|
* @file src/common/types.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/class_diagram/visitor/ast_id_mapper.cc
|
* @file src/class_diagram/visitor/ast_id_mapper.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/class_diagram/visitor/ast_id_mapper.h
|
* @file src/class_diagram/visitor/ast_id_mapper.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -24,14 +24,40 @@
|
|||||||
|
|
||||||
namespace clanguml::common::visitor {
|
namespace clanguml::common::visitor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mapping between Clang AST identifier and `clang-uml` unique ids
|
||||||
|
*
|
||||||
|
* Since identifiers provided by Clang AST are not transferable between
|
||||||
|
* translation units (i.e. the same class can have a different id when visited
|
||||||
|
* from different translation units), we need global identifiers which are
|
||||||
|
* the same among all translation units.
|
||||||
|
*
|
||||||
|
* Currently they are calculated as hashes from the fully qualified string
|
||||||
|
* representation of the type.
|
||||||
|
*
|
||||||
|
* This class allows to store mappings between Clang local identifiers
|
||||||
|
* in current translation unit and the global identifiers for the element.
|
||||||
|
*/
|
||||||
class ast_id_mapper {
|
class ast_id_mapper {
|
||||||
public:
|
public:
|
||||||
using id_t = common::model::diagram_element::id_t;
|
using id_t = common::model::diagram_element::id_t;
|
||||||
|
|
||||||
ast_id_mapper() = default;
|
ast_id_mapper() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add id mapping.
|
||||||
|
*
|
||||||
|
* @param ast_id Clang's local AST id.
|
||||||
|
* @param global_id Global element id.
|
||||||
|
*/
|
||||||
void add(int64_t ast_id, id_t global_id);
|
void add(int64_t ast_id, id_t global_id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get global element id based on it's local Clang AST id, if exists.
|
||||||
|
*
|
||||||
|
* @param ast_id Clang's local AST id.
|
||||||
|
* @return Global id, if exists.
|
||||||
|
*/
|
||||||
std::optional<id_t> get_global_id(int64_t ast_id);
|
std::optional<id_t> get_global_id(int64_t ast_id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/clang_visitor.cc
|
* @file src/common/visitor/comment/clang_visitor.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/clang_visitor.h
|
* @file src/common/visitor/comment/clang_visitor.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,10 +25,19 @@
|
|||||||
|
|
||||||
namespace clanguml::common::visitor::comment {
|
namespace clanguml::common::visitor::comment {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Uses Clang's comment parser to extract Doxygen-style comment blocks.
|
||||||
|
*/
|
||||||
class clang_visitor : public comment_visitor {
|
class clang_visitor : public comment_visitor {
|
||||||
public:
|
public:
|
||||||
clang_visitor(clang::SourceManager &source_manager);
|
clang_visitor(clang::SourceManager &source_manager);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts Doxygen style comment blocks from the comment.
|
||||||
|
*
|
||||||
|
* @param decl Clang's named declaration
|
||||||
|
* @param e Diagram element
|
||||||
|
*/
|
||||||
void visit(const clang::NamedDecl &decl,
|
void visit(const clang::NamedDecl &decl,
|
||||||
common::model::decorated_element &e) override;
|
common::model::decorated_element &e) override;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/comment_visitor.cc
|
* @file src/common/visitor/comment/comment_visitor.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/comment_visitor.h
|
* @file src/common/visitor/comment/comment_visitor.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -24,15 +24,31 @@
|
|||||||
|
|
||||||
namespace clanguml::common::visitor::comment {
|
namespace clanguml::common::visitor::comment {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Base class for comment visitors
|
||||||
|
*
|
||||||
|
* @embed{comment_visitor_hierarchy_class.svg}
|
||||||
|
*/
|
||||||
class comment_visitor {
|
class comment_visitor {
|
||||||
public:
|
public:
|
||||||
comment_visitor(clang::SourceManager &source_manager);
|
comment_visitor(clang::SourceManager &source_manager);
|
||||||
|
|
||||||
virtual ~comment_visitor() = default;
|
virtual ~comment_visitor() = default;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Visit the comment in `decl` and extract it's contents to the diagram
|
||||||
|
* element.
|
||||||
|
*
|
||||||
|
* @param decl Clang's named declaration
|
||||||
|
* @param e Diagram element
|
||||||
|
*/
|
||||||
virtual void visit(
|
virtual void visit(
|
||||||
const clang::NamedDecl &decl, common::model::decorated_element &e) = 0;
|
const clang::NamedDecl &decl, common::model::decorated_element &e) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return reference to current source manager.
|
||||||
|
* @return Reference to source manager.
|
||||||
|
*/
|
||||||
clang::SourceManager &source_manager();
|
clang::SourceManager &source_manager();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/plain_visitor.cc
|
* @file src/common/visitor/comment/plain_visitor.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/comment/plain_visitor.h
|
* @file src/common/visitor/comment/plain_visitor.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -25,11 +25,22 @@
|
|||||||
|
|
||||||
namespace clanguml::common::visitor::comment {
|
namespace clanguml::common::visitor::comment {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Plain comment visitor which extracts raw and formatted comment.
|
||||||
|
*/
|
||||||
class plain_visitor : public comment_visitor {
|
class plain_visitor : public comment_visitor {
|
||||||
public:
|
public:
|
||||||
plain_visitor(clang::SourceManager &source_manager);
|
plain_visitor(clang::SourceManager &source_manager);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts 'raw' and 'formatted' comment values from the Clang's
|
||||||
|
* parser.
|
||||||
|
*
|
||||||
|
* @param decl Clang's named declaration
|
||||||
|
* @param e Diagram element
|
||||||
|
*/
|
||||||
void visit(const clang::NamedDecl &decl,
|
void visit(const clang::NamedDecl &decl,
|
||||||
common::model::decorated_element &e) override;
|
common::model::decorated_element &e) override;
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
} // namespace clanguml::common::visitor::comment
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/translation_unit_visitor.cc
|
* @file src/common/visitor/translation_unit_visitor.cc
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* src/common/visitor/translation_unit_visitor.h
|
* @file src/common/visitor/translation_unit_visitor.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
* Copyright (c) 2021-2023 Bartek Kryza <bkryza@gmail.com>
|
||||||
*
|
*
|
||||||
@@ -46,8 +46,8 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Constructor
|
* @brief Constructor
|
||||||
*
|
*
|
||||||
* @param sm Reference to @link clang::SourceManager instance
|
* @param sm Reference to @ref clang::SourceManager instance
|
||||||
* @param config Reference to @link clanguml::config::diagram configuration
|
* @param config Reference to @ref clanguml::config::diagram configuration
|
||||||
* instance
|
* instance
|
||||||
*/
|
*/
|
||||||
explicit translation_unit_visitor(
|
explicit translation_unit_visitor(
|
||||||
@@ -65,7 +65,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get clang::SourceManager
|
* @brief Get clang::SourceManager
|
||||||
* @return Reference to @link clang::SourceManager used by this translation
|
* @return Reference to @ref clang::SourceManager used by this translation
|
||||||
* unit visitor
|
* unit visitor
|
||||||
*/
|
*/
|
||||||
clang::SourceManager &source_manager() const;
|
clang::SourceManager &source_manager() const;
|
||||||
@@ -73,7 +73,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Set source location in diagram element
|
* @brief Set source location in diagram element
|
||||||
*
|
*
|
||||||
* @param decl Reference to @link clang::Decl
|
* @param decl Reference to @ref clang::Decl
|
||||||
* @param element Reference to element to be updated
|
* @param element Reference to element to be updated
|
||||||
*/
|
*/
|
||||||
void set_source_location(const clang::Decl &decl,
|
void set_source_location(const clang::Decl &decl,
|
||||||
@@ -82,7 +82,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Set source location in diagram element
|
* @brief Set source location in diagram element
|
||||||
*
|
*
|
||||||
* @param expr Reference to @link clang::Expr
|
* @param expr Reference to @ref clang::Expr
|
||||||
* @param element Reference to element to be updated
|
* @param element Reference to element to be updated
|
||||||
*/
|
*/
|
||||||
void set_source_location(const clang::Expr &expr,
|
void set_source_location(const clang::Expr &expr,
|
||||||
@@ -94,7 +94,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @brief Set source location in diagram element
|
* @brief Set source location in diagram element
|
||||||
*
|
*
|
||||||
* @param location Reference to @link clang::SourceLocation
|
* @param location Reference to @ref clang::SourceLocation
|
||||||
* @param element Reference to element to be updated
|
* @param element Reference to element to be updated
|
||||||
*/
|
*/
|
||||||
void set_source_location(const clang::SourceLocation &location,
|
void set_source_location(const clang::SourceLocation &location,
|
||||||
@@ -104,7 +104,7 @@ protected:
|
|||||||
/**
|
/**
|
||||||
* @brief Set source location in diagram element
|
* @brief Set source location in diagram element
|
||||||
*
|
*
|
||||||
* @param decl Reference to @link clang::NamedDecl
|
* @param decl Reference to @ref clang::NamedDecl
|
||||||
* @param element Reference to element to be updated
|
* @param element Reference to element to be updated
|
||||||
*/
|
*/
|
||||||
void process_comment(const clang::NamedDecl &decl,
|
void process_comment(const clang::NamedDecl &decl,
|
||||||
|
|||||||
13
uml/class/comment_visitor_hierarchy_class.yml
Normal file
13
uml/class/comment_visitor_hierarchy_class.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
glob:
|
||||||
|
- src/common/visitor/comment/*.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml::common::visitor::comment
|
||||||
|
subclasses:
|
||||||
|
- clanguml::common::visitor::comment::comment_visitor
|
||||||
|
exclude:
|
||||||
|
access: [private, protected, public]
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
18
uml/class/relationship_context_class.yml
Normal file
18
uml/class/relationship_context_class.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
generate_packages: true
|
||||||
|
glob:
|
||||||
|
- src/common/model/relationship.cc
|
||||||
|
- src/common/model/diagram_element.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml
|
||||||
|
context:
|
||||||
|
- clanguml::common::model::relationship
|
||||||
|
exclude:
|
||||||
|
elements:
|
||||||
|
- clanguml::common::model::path
|
||||||
|
relationships:
|
||||||
|
- dependency
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
13
uml/class/source_file_hierarchy_class.yml
Normal file
13
uml/class/source_file_hierarchy_class.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
glob:
|
||||||
|
- src/common/model/source_file.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml
|
||||||
|
parents:
|
||||||
|
- clanguml::common::model::source_file
|
||||||
|
exclude:
|
||||||
|
access: [private, protected, public]
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
20
uml/class/source_location_hierarchy_class.yml
Normal file
20
uml/class/source_location_hierarchy_class.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
generate_packages: true
|
||||||
|
glob:
|
||||||
|
- src/common/model/*.cc
|
||||||
|
- src/class_diagram/model/*.cc
|
||||||
|
- src/sequence_diagram/model/*.cc
|
||||||
|
- src/include_diagram/model/*.cc
|
||||||
|
- src/package_diagram/model/*.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml
|
||||||
|
subclasses:
|
||||||
|
- clanguml::common::model::source_location
|
||||||
|
relationships:
|
||||||
|
- inheritance
|
||||||
|
exclude:
|
||||||
|
access: [ public, protected, private ]
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
20
uml/class/stylable_element_hierarchy_class.yml
Normal file
20
uml/class/stylable_element_hierarchy_class.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
generate_packages: true
|
||||||
|
glob:
|
||||||
|
- src/common/model/*.cc
|
||||||
|
- src/class_diagram/model/*.cc
|
||||||
|
- src/sequence_diagram/model/*.cc
|
||||||
|
- src/include_diagram/model/*.cc
|
||||||
|
- src/package_diagram/model/*.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml
|
||||||
|
subclasses:
|
||||||
|
- clanguml::common::model::stylable_element
|
||||||
|
relationships:
|
||||||
|
- inheritance
|
||||||
|
exclude:
|
||||||
|
access: [public, protected, private]
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
21
uml/class/template_trait_hierarchy_class.yml
Normal file
21
uml/class/template_trait_hierarchy_class.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
type: class
|
||||||
|
include_relations_also_as_members: true
|
||||||
|
generate_packages: true
|
||||||
|
glob:
|
||||||
|
- src/common/model/*.cc
|
||||||
|
- src/class_diagram/model/*.cc
|
||||||
|
- src/sequence_diagram/model/*.cc
|
||||||
|
- src/include_diagram/model/*.cc
|
||||||
|
- src/package_diagram/model/*.cc
|
||||||
|
include:
|
||||||
|
namespaces:
|
||||||
|
- clanguml
|
||||||
|
subclasses:
|
||||||
|
- clanguml::common::model::template_trait
|
||||||
|
context:
|
||||||
|
- clanguml::common::model::template_trait
|
||||||
|
exclude:
|
||||||
|
access: [ public, protected, private ]
|
||||||
|
relationships: [ dependency ]
|
||||||
|
using_namespace:
|
||||||
|
- clanguml
|
||||||
Reference in New Issue
Block a user