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()) {
|
||||
std::stringstream relstr;
|
||||
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()))
|
||||
<< '\n';
|
||||
ostr << relstr.str();
|
||||
@@ -266,7 +267,7 @@ void generator::generate(const class_ &c, std::ostream &ostr) const
|
||||
catch (error::uml_alias_missing &e) {
|
||||
LOG_ERROR("=== Skipping inheritance relation from {} to {} due "
|
||||
"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));
|
||||
}
|
||||
|
||||
//
|
||||
// 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
|
||||
//
|
||||
|
||||
@@ -166,11 +166,23 @@ private:
|
||||
bool is_static_{false};
|
||||
};
|
||||
|
||||
struct class_parent {
|
||||
class class_parent {
|
||||
public:
|
||||
enum class access_t { kPublic, kProtected, kPrivate };
|
||||
std::string name;
|
||||
bool is_virtual{false};
|
||||
access_t access;
|
||||
|
||||
void set_name(const std::string &name);
|
||||
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 {
|
||||
|
||||
@@ -421,24 +421,24 @@ void tu_visitor::process_class_declaration(const cppast::cpp_class &cls,
|
||||
// Process class bases
|
||||
for (auto &base : cls.bases()) {
|
||||
class_parent cp;
|
||||
cp.name = clanguml::cx::util::fully_prefixed(ctx.namespace_, base);
|
||||
cp.is_virtual = base.is_virtual();
|
||||
cp.set_name(clanguml::cx::util::fully_prefixed(ctx.namespace_, base));
|
||||
cp.is_virtual(base.is_virtual());
|
||||
|
||||
switch (base.access_specifier()) {
|
||||
case cppast::cpp_access_specifier_kind::cpp_private:
|
||||
cp.access = class_parent::access_t::kPrivate;
|
||||
cp.set_access(class_parent::access_t::kPrivate);
|
||||
break;
|
||||
case cppast::cpp_access_specifier_kind::cpp_public:
|
||||
cp.access = class_parent::access_t::kPublic;
|
||||
cp.set_access(class_parent::access_t::kPublic);
|
||||
break;
|
||||
case cppast::cpp_access_specifier_kind::cpp_protected:
|
||||
cp.access = class_parent::access_t::kProtected;
|
||||
cp.set_access(class_parent::access_t::kProtected);
|
||||
break;
|
||||
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));
|
||||
}
|
||||
@@ -1527,8 +1527,8 @@ class_ tu_visitor::build_template_instantiation(
|
||||
LOG_DBG("Adding template argument '{}' as base class", ct.type);
|
||||
|
||||
class_parent cp;
|
||||
cp.access = class_parent::access_t::kPublic;
|
||||
cp.name = ct.type;
|
||||
cp.set_access(class_parent::access_t::kPublic);
|
||||
cp.set_name(ct.type);
|
||||
|
||||
tinst.add_parent(std::move(cp));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user