Refactored class_parent
This commit is contained in:
@@ -258,7 +258,8 @@ void generator::generate(const class_ &c, std::ostream &ostr) const
|
|||||||
for (const auto &b : c.parents()) {
|
for (const auto &b : c.parents()) {
|
||||||
std::stringstream relstr;
|
std::stringstream relstr;
|
||||||
try {
|
try {
|
||||||
relstr << m_model.to_alias(ns_relative(uns, b.name)) << " <|-- "
|
relstr << m_model.to_alias(ns_relative(uns, b.name()))
|
||||||
|
<< " <|-- "
|
||||||
<< m_model.to_alias(ns_relative(uns, c.full_name()))
|
<< m_model.to_alias(ns_relative(uns, c.full_name()))
|
||||||
<< '\n';
|
<< '\n';
|
||||||
ostr << relstr.str();
|
ostr << relstr.str();
|
||||||
@@ -266,7 +267,7 @@ void generator::generate(const class_ &c, std::ostream &ostr) const
|
|||||||
catch (error::uml_alias_missing &e) {
|
catch (error::uml_alias_missing &e) {
|
||||||
LOG_ERROR("=== Skipping inheritance relation from {} to {} due "
|
LOG_ERROR("=== Skipping inheritance relation from {} to {} due "
|
||||||
"to: {}",
|
"to: {}",
|
||||||
b.name, c.name(), e.what());
|
b.name(), c.name(), e.what());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -279,6 +279,24 @@ void class_method::add_parameter(method_parameter &¶meter)
|
|||||||
parameters_.emplace_back(std::move(parameter));
|
parameters_.emplace_back(std::move(parameter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// class_parent
|
||||||
|
//
|
||||||
|
void class_parent::set_name(const std::string &name) { name_ = name; }
|
||||||
|
|
||||||
|
std::string class_parent::name() const { return name_; }
|
||||||
|
|
||||||
|
void class_parent::is_virtual(bool is_virtual) { is_virtual_ = is_virtual; }
|
||||||
|
|
||||||
|
bool class_parent::is_virtual() const { return is_virtual_; }
|
||||||
|
|
||||||
|
void class_parent::set_access(class_parent::access_t access)
|
||||||
|
{
|
||||||
|
access_ = access;
|
||||||
|
}
|
||||||
|
|
||||||
|
class_parent::access_t class_parent::access() const { return access_; }
|
||||||
|
|
||||||
//
|
//
|
||||||
// class_relationship
|
// class_relationship
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -166,11 +166,23 @@ private:
|
|||||||
bool is_static_{false};
|
bool is_static_{false};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct class_parent {
|
class class_parent {
|
||||||
|
public:
|
||||||
enum class access_t { kPublic, kProtected, kPrivate };
|
enum class access_t { kPublic, kProtected, kPrivate };
|
||||||
std::string name;
|
|
||||||
bool is_virtual{false};
|
void set_name(const std::string &name);
|
||||||
access_t access;
|
std::string name() const;
|
||||||
|
|
||||||
|
void is_virtual(bool is_virtual);
|
||||||
|
bool is_virtual() const;
|
||||||
|
|
||||||
|
void set_access(access_t access);
|
||||||
|
access_t access() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string name_;
|
||||||
|
bool is_virtual_{false};
|
||||||
|
access_t access_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct class_relationship : public decorated_element, public stylable_element {
|
struct class_relationship : public decorated_element, public stylable_element {
|
||||||
|
|||||||
@@ -421,24 +421,24 @@ void tu_visitor::process_class_declaration(const cppast::cpp_class &cls,
|
|||||||
// Process class bases
|
// Process class bases
|
||||||
for (auto &base : cls.bases()) {
|
for (auto &base : cls.bases()) {
|
||||||
class_parent cp;
|
class_parent cp;
|
||||||
cp.name = clanguml::cx::util::fully_prefixed(ctx.namespace_, base);
|
cp.set_name(clanguml::cx::util::fully_prefixed(ctx.namespace_, base));
|
||||||
cp.is_virtual = base.is_virtual();
|
cp.is_virtual(base.is_virtual());
|
||||||
|
|
||||||
switch (base.access_specifier()) {
|
switch (base.access_specifier()) {
|
||||||
case cppast::cpp_access_specifier_kind::cpp_private:
|
case cppast::cpp_access_specifier_kind::cpp_private:
|
||||||
cp.access = class_parent::access_t::kPrivate;
|
cp.set_access(class_parent::access_t::kPrivate);
|
||||||
break;
|
break;
|
||||||
case cppast::cpp_access_specifier_kind::cpp_public:
|
case cppast::cpp_access_specifier_kind::cpp_public:
|
||||||
cp.access = class_parent::access_t::kPublic;
|
cp.set_access(class_parent::access_t::kPublic);
|
||||||
break;
|
break;
|
||||||
case cppast::cpp_access_specifier_kind::cpp_protected:
|
case cppast::cpp_access_specifier_kind::cpp_protected:
|
||||||
cp.access = class_parent::access_t::kProtected;
|
cp.set_access(class_parent::access_t::kProtected);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cp.access = class_parent::access_t::kPublic;
|
cp.set_access(class_parent::access_t::kPublic);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DBG("Found base class {} for class {}", cp.name, c.name());
|
LOG_DBG("Found base class {} for class {}", cp.name(), c.name());
|
||||||
|
|
||||||
c.add_parent(std::move(cp));
|
c.add_parent(std::move(cp));
|
||||||
}
|
}
|
||||||
@@ -1527,8 +1527,8 @@ class_ tu_visitor::build_template_instantiation(
|
|||||||
LOG_DBG("Adding template argument '{}' as base class", ct.type);
|
LOG_DBG("Adding template argument '{}' as base class", ct.type);
|
||||||
|
|
||||||
class_parent cp;
|
class_parent cp;
|
||||||
cp.access = class_parent::access_t::kPublic;
|
cp.set_access(class_parent::access_t::kPublic);
|
||||||
cp.name = ct.type;
|
cp.set_name(ct.type);
|
||||||
|
|
||||||
tinst.add_parent(std::move(cp));
|
tinst.add_parent(std::move(cp));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user