Fixed package diagram generation
This commit is contained in:
@@ -25,13 +25,13 @@
|
||||
|
||||
namespace clanguml::class_diagram::model {
|
||||
|
||||
const std::vector<std::reference_wrapper<const class_>> &
|
||||
const std::vector<std::reference_wrapper<class_>> &
|
||||
diagram::classes() const
|
||||
{
|
||||
return classes_;
|
||||
}
|
||||
|
||||
const std::vector<std::reference_wrapper<const enum_>> &diagram::enums() const
|
||||
const std::vector<std::reference_wrapper<enum_>> &diagram::enums() const
|
||||
{
|
||||
return enums_;
|
||||
}
|
||||
@@ -41,14 +41,11 @@ common::model::diagram_t diagram::type() const
|
||||
return common::model::diagram_t::kClass;
|
||||
}
|
||||
|
||||
std::optional<
|
||||
std::reference_wrapper<const clanguml::common::model::diagram_element>>
|
||||
std::optional<std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
diagram::get(const std::string &full_name) const
|
||||
{
|
||||
// type_safe::optional_ref<const clanguml::common::model::diagram_element>
|
||||
// res;
|
||||
std::optional<
|
||||
std::reference_wrapper<const clanguml::common::model::diagram_element>>
|
||||
std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
res;
|
||||
|
||||
res = get_class(full_name);
|
||||
@@ -61,6 +58,23 @@ diagram::get(const std::string &full_name) const
|
||||
return res;
|
||||
}
|
||||
|
||||
std::optional<std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
diagram::get(const clanguml::common::model::diagram_element::id_t id) const
|
||||
{
|
||||
std::optional<
|
||||
std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
res;
|
||||
|
||||
res = get_class(id);
|
||||
|
||||
if (res.has_value())
|
||||
return res;
|
||||
|
||||
res = get_enum(id);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
bool diagram::has_class(const class_ &c) const
|
||||
{
|
||||
return std::any_of(classes_.cbegin(), classes_.cend(),
|
||||
@@ -73,7 +87,7 @@ bool diagram::has_enum(const enum_ &e) const
|
||||
[&e](const auto &ee) { return ee.get().full_name() == e.full_name(); });
|
||||
}
|
||||
|
||||
std::optional<std::reference_wrapper<const class_>> diagram::get_class(
|
||||
std::optional<std::reference_wrapper<class_>> diagram::get_class(
|
||||
const std::string &name) const
|
||||
{
|
||||
for (const auto &c : classes_) {
|
||||
@@ -87,7 +101,7 @@ std::optional<std::reference_wrapper<const class_>> diagram::get_class(
|
||||
return {};
|
||||
}
|
||||
|
||||
std::optional<std::reference_wrapper<const class_>> diagram::get_class(
|
||||
std::optional<std::reference_wrapper<class_>> diagram::get_class(
|
||||
clanguml::common::model::diagram_element::id_t id) const
|
||||
{
|
||||
for (const auto &c : classes_) {
|
||||
@@ -99,7 +113,7 @@ std::optional<std::reference_wrapper<const class_>> diagram::get_class(
|
||||
return {};
|
||||
}
|
||||
|
||||
std::optional<std::reference_wrapper<const enum_>> diagram::get_enum(
|
||||
std::optional<std::reference_wrapper<enum_>> diagram::get_enum(
|
||||
const std::string &name) const
|
||||
{
|
||||
for (const auto &e : enums_) {
|
||||
@@ -111,6 +125,18 @@ std::optional<std::reference_wrapper<const enum_>> diagram::get_enum(
|
||||
return {};
|
||||
}
|
||||
|
||||
std::optional<std::reference_wrapper<enum_>> diagram::get_enum(
|
||||
clanguml::common::model::diagram_element::id_t id) const
|
||||
{
|
||||
for (const auto &e : enums_) {
|
||||
if (e.get().id() == id) {
|
||||
return {e};
|
||||
}
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void diagram::add_type_alias(std::unique_ptr<type_alias> &&ta)
|
||||
{
|
||||
LOG_DBG(
|
||||
@@ -149,7 +175,7 @@ bool diagram::add_class(std::unique_ptr<class_> &&c)
|
||||
auto name = base_name;
|
||||
auto name_with_ns = c->name_and_ns();
|
||||
auto name_and_ns = ns | name;
|
||||
const auto &cc = *c;
|
||||
auto &cc = *c;
|
||||
|
||||
auto cc_ref = std::ref(cc);
|
||||
|
||||
|
||||
@@ -46,26 +46,33 @@ public:
|
||||
common::model::diagram_t type() const override;
|
||||
|
||||
std::optional<
|
||||
std::reference_wrapper<const clanguml::common::model::diagram_element>>
|
||||
std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
get(const std::string &full_name) const override;
|
||||
|
||||
const std::vector<std::reference_wrapper<const class_>> &classes() const;
|
||||
std::optional<
|
||||
std::reference_wrapper<clanguml::common::model::diagram_element>>
|
||||
get(const clanguml::common::model::diagram_element::id_t id) const override;
|
||||
|
||||
const std::vector<std::reference_wrapper<const enum_>> &enums() const;
|
||||
const std::vector<std::reference_wrapper<class_>> &classes() const;
|
||||
|
||||
const std::vector<std::reference_wrapper<enum_>> &enums() const;
|
||||
|
||||
bool has_class(const class_ &c) const;
|
||||
|
||||
bool has_enum(const enum_ &e) const;
|
||||
|
||||
std::optional<std::reference_wrapper<const class_>> get_class(
|
||||
std::optional<std::reference_wrapper<class_>> get_class(
|
||||
const std::string &name) const;
|
||||
|
||||
std::optional<std::reference_wrapper<const class_>> get_class(
|
||||
std::optional<std::reference_wrapper<class_>> get_class(
|
||||
clanguml::common::model::diagram_element::id_t id) const;
|
||||
|
||||
std::optional<std::reference_wrapper<const enum_>> get_enum(
|
||||
std::optional<std::reference_wrapper<enum_>> get_enum(
|
||||
const std::string &name) const;
|
||||
|
||||
std::optional<std::reference_wrapper<enum_>> get_enum(
|
||||
clanguml::common::model::diagram_element::id_t id) const;
|
||||
|
||||
void add_type_alias(std::unique_ptr<type_alias> &&ta);
|
||||
|
||||
bool add_class(std::unique_ptr<class_> &&c);
|
||||
@@ -85,11 +92,10 @@ public:
|
||||
const clanguml::common::model::diagram_element::id_t id) const override;
|
||||
|
||||
private:
|
||||
std::vector<std::reference_wrapper<const class_>> classes_;
|
||||
std::vector<std::reference_wrapper<const enum_>> enums_;
|
||||
std::vector<std::reference_wrapper<class_>> classes_;
|
||||
|
||||
std::vector<std::reference_wrapper<enum_>> enums_;
|
||||
|
||||
// std::vector<type_safe::object_ref<const class_, false>> classes_;
|
||||
// std::vector<type_safe::object_ref<const enum_, false>> enums_;
|
||||
std::map<std::string, std::unique_ptr<type_alias>> type_aliases_;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -783,8 +783,7 @@ bool translation_unit_visitor::find_relationships(const clang::QualType &type,
|
||||
found_relationships_t &relationships,
|
||||
clanguml::common::model::relationship_t relationship_hint)
|
||||
{
|
||||
bool result = false;
|
||||
// std::string type_name =
|
||||
bool result{false};
|
||||
|
||||
if (type->isPointerType()) {
|
||||
relationship_hint = relationship_t::kAssociation;
|
||||
|
||||
@@ -58,13 +58,10 @@ public:
|
||||
|
||||
virtual bool VisitTypeAliasTemplateDecl(clang::TypeAliasTemplateDecl *cls);
|
||||
|
||||
// virtual bool VisitVarDecl(clang::VarDecl *variable_declaration);
|
||||
clanguml::class_diagram::model::diagram &diagram() { return diagram_; }
|
||||
|
||||
const clanguml::config::class_diagram &config() const { return config_; }
|
||||
|
||||
// void operator()();
|
||||
|
||||
void finalize();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user