Added support for anonymous nested structs
This commit is contained in:
@@ -33,12 +33,16 @@ void generator::generate_alias(const class_ &c, std::ostream &ostr) const
|
|||||||
if (c.is_abstract())
|
if (c.is_abstract())
|
||||||
class_type = "abstract";
|
class_type = "abstract";
|
||||||
|
|
||||||
auto full_name = c.full_name();
|
std::string full_name;
|
||||||
|
|
||||||
if (m_config.generate_packages())
|
if (m_config.generate_packages())
|
||||||
ostr << class_type << " \"" << c.full_name_no_ns();
|
full_name = c.full_name_no_ns();
|
||||||
else
|
else
|
||||||
ostr << class_type << " \"" << c.full_name();
|
full_name = c.full_name();
|
||||||
|
|
||||||
|
if (full_name.empty())
|
||||||
|
full_name = "<<anonymous>>";
|
||||||
|
|
||||||
|
ostr << class_type << " \"" << full_name;
|
||||||
|
|
||||||
ostr << "\" as " << c.alias() << '\n';
|
ostr << "\" as " << c.alias() << '\n';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,11 +119,19 @@ std::string class_::full_name(bool relative) const
|
|||||||
ostr << name_and_ns();
|
ostr << name_and_ns();
|
||||||
render_template_params(ostr);
|
render_template_params(ostr);
|
||||||
|
|
||||||
|
std::string res;
|
||||||
|
|
||||||
if (relative)
|
if (relative)
|
||||||
return using_namespace().relative(ostr.str());
|
res = using_namespace().relative(ostr.str());
|
||||||
else
|
else
|
||||||
return ostr.str();
|
res = ostr.str();
|
||||||
|
|
||||||
|
if(res.empty())
|
||||||
|
return "<<anonymous>>";
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostringstream &class_::render_template_params(
|
std::ostringstream &class_::render_template_params(
|
||||||
std::ostringstream &ostr) const
|
std::ostringstream &ostr) const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ void translation_unit_visitor::process_class_declaration(
|
|||||||
auto c_ptr = std::make_unique<class_>(ctx.config().using_namespace());
|
auto c_ptr = std::make_unique<class_>(ctx.config().using_namespace());
|
||||||
auto &c = *c_ptr;
|
auto &c = *c_ptr;
|
||||||
c.is_struct(cls.class_kind() == cppast::cpp_class_kind::struct_t);
|
c.is_struct(cls.class_kind() == cppast::cpp_class_kind::struct_t);
|
||||||
// c.set_name(cx::util::full_name(ctx.get_namespace(), cls));
|
|
||||||
c.set_name(cls.name());
|
c.set_name(cls.name());
|
||||||
c.set_namespace(ctx.get_namespace());
|
c.set_namespace(ctx.get_namespace());
|
||||||
|
|
||||||
@@ -711,8 +711,12 @@ void translation_unit_visitor::process_field(
|
|||||||
{
|
{
|
||||||
bool template_instantiation_added_as_aggregation{false};
|
bool template_instantiation_added_as_aggregation{false};
|
||||||
|
|
||||||
class_member m{detail::cpp_access_specifier_to_scope(as), mv.name(),
|
auto type_name = cppast::to_string(mv.type());
|
||||||
cppast::to_string(mv.type())};
|
if (type_name.empty())
|
||||||
|
type_name = "<<anonymous>>";
|
||||||
|
|
||||||
|
class_member m{
|
||||||
|
detail::cpp_access_specifier_to_scope(as), mv.name(), type_name};
|
||||||
|
|
||||||
if (mv.comment().has_value())
|
if (mv.comment().has_value())
|
||||||
m.add_decorators(decorators::parse(mv.comment().value()));
|
m.add_decorators(decorators::parse(mv.comment().value()));
|
||||||
@@ -722,6 +726,8 @@ void translation_unit_visitor::process_field(
|
|||||||
|
|
||||||
auto &tr = cx::util::unreferenced(cppast::remove_cv(mv.type()));
|
auto &tr = cx::util::unreferenced(cppast::remove_cv(mv.type()));
|
||||||
|
|
||||||
|
auto tr_declaration = cppast::to_string(tr);
|
||||||
|
|
||||||
#ifndef __APPLE__
|
#ifndef __APPLE__
|
||||||
LOG_DBG("Processing field {} with unreferenced type of kind {}", mv.name(),
|
LOG_DBG("Processing field {} with unreferenced type of kind {}", mv.name(),
|
||||||
tr.kind());
|
tr.kind());
|
||||||
@@ -748,8 +754,6 @@ void translation_unit_visitor::process_field(
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
auto tr_declaration = cppast::to_string(tr);
|
|
||||||
|
|
||||||
if (!m.skip_relationship() &&
|
if (!m.skip_relationship() &&
|
||||||
!template_instantiation_added_as_aggregation &&
|
!template_instantiation_added_as_aggregation &&
|
||||||
(tr.kind() != cppast::cpp_type_kind::builtin_t) &&
|
(tr.kind() != cppast::cpp_type_kind::builtin_t) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user