Removed usr from class diagram generator and visitor

This commit is contained in:
Bartek Kryza
2021-09-26 22:58:31 +02:00
parent 29c8c93478
commit 52c6ebfa19
6 changed files with 204 additions and 209 deletions

View File

@@ -70,22 +70,6 @@ struct decorated_element {
std::string style_spec();
};
class element : public decorated_element {
public:
element();
std::string alias() const;
std::string name;
std::vector<std::string> namespace_;
protected:
const uint64_t m_id{0};
private:
static std::atomic_uint64_t m_nextId;
};
struct class_element : public decorated_element {
scope_t scope;
std::string name;
@@ -143,6 +127,44 @@ struct class_template {
friend bool operator==(const class_template &l, const class_template &r);
};
class element : public decorated_element {
public:
element(const std::vector<std::string> &using_namespaces);
std::string alias() const;
void set_name(const std::string &name) { name_ = name; }
std::string name() const { return name_; }
void set_namespace(const std::vector<std::string> &ns) { namespace_ = ns; }
std::vector<std::string> get_namespace() const { return namespace_; }
virtual std::string full_name(bool relative) const { return name(); }
void set_using_namespaces(const std::vector<std::string> &un);
const std::vector<std::string> &using_namespaces() const;
std::vector<class_relationship> &relationships();
const std::vector<class_relationship> &relationships() const;
void add_relationship(class_relationship &&cr);
protected:
const uint64_t m_id{0};
private:
std::string name_;
std::vector<std::string> namespace_;
std::vector<std::string> using_namespaces_;
std::vector<class_relationship> relationships_;
static std::atomic_uint64_t m_nextId;
};
struct type_alias {
std::string alias;
std::string underlying_type;
@@ -150,7 +172,11 @@ struct type_alias {
class class_ : public element, public stylable_element {
public:
std::string usr;
class_(const std::vector<std::string> &using_namespaces)
: element{using_namespaces}
{
}
bool is_struct{false};
bool is_template{false};
bool is_template_instantiation{false};
@@ -158,31 +184,39 @@ public:
std::vector<class_method> methods;
std::vector<class_parent> bases;
std::vector<std::string> inner_classes;
std::vector<class_relationship> relationships;
std::vector<class_template> templates;
std::string base_template_usr;
std::string base_template_full_name;
std::map<std::string, type_alias> type_aliases;
friend bool operator==(const class_ &l, const class_ &r);
void add_type_alias(type_alias &&ta);
void add_relationship(class_relationship &&cr);
std::string full_name(
const std::vector<std::string> &using_namespaces) const;
std::string full_name(bool relative = true) const override;
bool is_abstract() const;
private:
std::string full_name_;
};
struct enum_ : public element, public stylable_element {
std::vector<std::string> constants;
std::vector<class_relationship> relationships;
public:
enum_(const std::vector<std::string> &using_namespaces)
: element{using_namespaces}
{
}
friend bool operator==(const enum_ &l, const enum_ &r);
std::string full_name(
const std::vector<std::string> &using_namespaces) const;
std::string full_name(bool relative = true) const override;
std::vector<std::string> &constants() { return constants_; }
const std::vector<std::string> &constants() const { return constants_; }
private:
std::vector<std::string> constants_;
};
struct diagram {
@@ -191,7 +225,7 @@ struct diagram {
std::vector<enum_> enums;
std::map<std::string, type_alias> type_aliases;
bool has_class(const std::string &usr) const;
bool has_class(const class_ &c) const;
void add_type_alias(type_alias &&ta);
@@ -199,11 +233,7 @@ struct diagram {
void add_enum(enum_ &&e);
std::string to_alias(const std::vector<std::string> &using_namespaces,
const std::string &full_name) const;
std::string usr_to_name(const std::vector<std::string> &using_namespaces,
const std::string &usr) const;
std::string to_alias(const std::string &full_name) const;
};
}
}