Refactored type_alias

This commit is contained in:
Bartek Kryza
2021-09-27 22:34:52 +02:00
parent 2165105922
commit b24d0f4837
3 changed files with 32 additions and 10 deletions

View File

@@ -316,6 +316,20 @@ bool operator==(const class_template &l, const class_template &r)
return (l.name == r.name) && (l.type == r.type);
}
//
// type_alias
//
void type_alias::set_alias(const std::string &alias) { alias_ = alias; }
std::string type_alias::alias() const { return alias_; }
void type_alias::set_underlying_type(const std::string &type)
{
underlying_type_ = type;
}
std::string type_alias::underlying_type() const { return underlying_type_; }
//
// class_
//
@@ -387,8 +401,8 @@ bool operator==(const class_ &l, const class_ &r)
void class_::add_type_alias(type_alias &&ta)
{
LOG_DBG("Adding class alias: {} -> {}", ta.alias, ta.underlying_type);
type_aliases_[ta.alias] = std::move(ta);
LOG_DBG("Adding class alias: {} -> {}", ta.alias(), ta.underlying_type());
type_aliases_[ta.alias()] = std::move(ta);
}
std::string class_::full_name(bool relative) const
@@ -480,9 +494,9 @@ bool diagram::has_class(const class_ &c) const
void diagram::add_type_alias(type_alias &&ta)
{
LOG_DBG("Adding global alias: {} -> {}", ta.alias, ta.underlying_type);
LOG_DBG("Adding global alias: {} -> {}", ta.alias(), ta.underlying_type());
type_aliases_[ta.alias] = std::move(ta);
type_aliases_[ta.alias()] = std::move(ta);
}
void diagram::add_class(class_ &&c)

View File

@@ -244,9 +244,17 @@ private:
static std::atomic_uint64_t m_nextId;
};
struct type_alias {
std::string alias;
std::string underlying_type;
class type_alias {
public:
void set_alias(const std::string &alias);
std::string alias() const;
void set_underlying_type(const std::string &type);
std::string underlying_type() const;
private:
std::string alias_;
std::string underlying_type_;
};
class class_ : public element, public stylable_element {

View File

@@ -246,9 +246,9 @@ void tu_visitor::operator()(const cppast::cpp_entity &file)
auto &ta = static_cast<const cppast::cpp_type_alias &>(e);
type_alias t;
t.alias = cx::util::full_name(ctx.namespace_, ta);
t.underlying_type = cx::util::full_name(ta.underlying_type(),
ctx.entity_index, cx::util::is_inside_class(e));
t.set_alias(cx::util::full_name(ctx.namespace_, ta));
t.set_underlying_type(cx::util::full_name(ta.underlying_type(),
ctx.entity_index, cx::util::is_inside_class(e)));
ctx.add_type_alias(cx::util::full_name(ctx.namespace_, ta),
type_safe::ref(ta.underlying_type()));