From d37c654efbd5bb4ea19e1997d1daccb0b01de8b3 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 4 Jan 2021 15:24:36 +0100 Subject: Refactoring: Embed MemberGroup objects directly in their container --- src/classdef.cpp | 64 ++++++++++++++++++++++++++-------------------------- src/context.cpp | 10 ++++---- src/dotnode.cpp | 4 ++-- src/filedef.cpp | 38 +++++++++++++++---------------- src/groupdef.cpp | 28 +++++++++++------------ src/membergroup.h | 10 +++++++- src/namespacedef.cpp | 34 ++++++++++++++-------------- src/perlmodgen.cpp | 8 +++---- src/sqlite3gen.cpp | 16 ++++++------- src/util.cpp | 18 +++++++-------- src/xmlgen.cpp | 16 ++++++------- 11 files changed, 126 insertions(+), 120 deletions(-) diff --git a/src/classdef.cpp b/src/classdef.cpp index 5a3c75d..ea24c45 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -858,12 +858,12 @@ void ClassDefImpl::addMembersToMemberGroup() } // add members inside sections to their groups - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - if (mg->allMembersInSameSection() && m_impl->subGrouping) + if (mg.allMembersInSameSection() && m_impl->subGrouping) { //printf("addToDeclarationSection(%s)\n",mg->header().data()); - mg->addToDeclarationSection(); + mg.addToDeclarationSection(); } } } @@ -1173,17 +1173,17 @@ void ClassDefImpl::computeAnchors() } } - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->setAnchors(); + mg.setAnchors(); } } void ClassDefImpl::distributeMemberGroupDocumentation() { - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->distributeMemberGroupDocumentation(); + mg.distributeMemberGroupDocumentation(); } } @@ -1191,9 +1191,9 @@ void ClassDefImpl::findSectionsInDocumentation() { docFindSections(briefDescription(),this,docFile()); docFindSections(documentation(),this,docFile()); - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->findSectionsInDocumentation(this); + mg.findSectionsInDocumentation(this); } for (auto &ml : m_impl->memberLists) { @@ -1968,9 +1968,9 @@ void ClassDefImpl::writeMemberGroups(OutputList &ol,bool showInline) const // write user defined member groups for (const auto &mg : m_impl->memberGroups) { - if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section + if (!mg.allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section { - mg->writeDeclarations(ol,this,0,0,0,showInline); + mg.writeDeclarations(ol,this,0,0,0,showInline); } else // add this group to the corresponding member section { @@ -2185,9 +2185,9 @@ void ClassDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::MemberGroups: { - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->writeTagFile(tagFile); + mg.writeTagFile(tagFile); } } break; @@ -3270,10 +3270,10 @@ void ClassDefImpl::writeDeclaration(OutputList &ol,const MemberDef *md,bool inGr ol.endMemberItem(); // write user defined member groups - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->setInGroup(inGroup); - mg->writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId); + mg.setInGroup(inGroup); + mg.writePlainDeclarations(ol,this,0,0,0,inheritedFrom,inheritId); } QListIterator eli( @@ -4163,9 +4163,9 @@ void ClassDefImpl::addListReferences() this ); } - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->addListReferences(this); + mg.addListReferences(this); } for (auto &ml : m_impl->memberLists) { @@ -4275,10 +4275,10 @@ int ClassDefImpl::countMemberDeclarations(MemberListType lt,const ClassDef *inhe // also include grouped members that have their own section in the class (see bug 722759) if (inheritedFrom) { - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - count+=mg->countGroupedInheritedMembers(lt); - if (lt2!=1) count+=mg->countGroupedInheritedMembers((MemberListType)lt2); + count+=mg.countGroupedInheritedMembers(lt); + if (lt2!=1) count+=mg.countGroupedInheritedMembers((MemberListType)lt2); } } static bool inlineInheritedMembers = Config_getBool(INLINE_INHERITED_MEMB); @@ -4309,9 +4309,9 @@ void ClassDefImpl::setAnonymousEnumType() } else if (lde->kind()==LayoutDocEntry::MemberGroups) { - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->setAnonymousEnumType(); + mg.setAnonymousEnumType(); } } } @@ -4324,10 +4324,10 @@ void ClassDefImpl::countMembers() ml.countDecMembers(); ml.countDocMembers(); } - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - mg->countDecMembers(); - mg->countDocMembers(); + mg.countDecMembers(); + mg.countDocMembers(); } } @@ -4445,13 +4445,13 @@ int ClassDefImpl::countMembersIncludingGrouped(MemberListType lt, count=ml->countInheritableMembers(inheritedFrom); } //printf("%s:countMembersIncludingGrouped: count=%d\n",name().data(),count); - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - bool hasOwnSection = !mg->allMembersInSameSection() || + bool hasOwnSection = !mg.allMembersInSameSection() || !m_impl->subGrouping; // group is in its own section if ((additional && hasOwnSection) || (!additional && !hasOwnSection)) { - count+=mg->countGroupedInheritedMembers(lt); + count+=mg.countGroupedInheritedMembers(lt); } } //printf("%s:countMembersIncludingGrouped(lt=%d,%s)=%d\n", @@ -4556,11 +4556,11 @@ void ClassDefImpl::addGroupedInheritedMembers(OutputList &ol,MemberListType lt, const ClassDef *inheritedFrom,const QCString &inheritId) const { //printf("** %s::addGroupedInheritedMembers(%p) inheritId=%s\n",name().data(),m_impl->memberGroupSDict,inheritId.data()); - for (const auto &mg : m_impl->memberGroups) + for (auto &mg : m_impl->memberGroups) { - if (!mg->allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section + if (!mg.allMembersInSameSection() || !m_impl->subGrouping) // group is in its own section { - mg->addGroupedInheritedMembers(ol,this,lt,inheritedFrom,inheritId); + mg.addGroupedInheritedMembers(ol,this,lt,inheritedFrom,inheritId); } } } diff --git a/src/context.cpp b/src/context.cpp index 95fb82d..b8d477f 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -8857,9 +8857,9 @@ MemberGroupListContext::MemberGroupListContext(const Definition *def,const QCStr p = new Private; for (const auto &mg : list) { - if (!mg->allMembersInSameSection() || !subGrouping) + if (!mg.allMembersInSameSection() || !subGrouping) { - p->addMemberGroup(def,relPath,mg.get()); + p->addMemberGroup(def,relPath,&mg); } } } @@ -9131,13 +9131,13 @@ class InheritedMemberInfoListContext::Private : public GenericNodeListContext // addMemberGroupsOfGroup? for (const auto &mg: cd->getMemberGroups()) { - if (mg->members() && (!mg->allMembersInSameSection() || !cd->subGrouping())) // group is in its own section + if (mg.members() && (!mg.allMembersInSameSection() || !cd->subGrouping())) // group is in its own section { - MemberListIterator li(*mg->members()); + MemberListIterator li(*mg.members()); MemberDef *md; for (li.toFirst();(md=li.current());++li) { - if (lt==md->getSectionList(mg->container())->listType() && + if (lt==md->getSectionList(mg.container())->listType() && !md->isReimplementedBy(inheritedFrom) && md->isBriefSectionVisible()) { diff --git a/src/dotnode.cpp b/src/dotnode.cpp index 06de5f4..ce6bada 100644 --- a/src/dotnode.cpp +++ b/src/dotnode.cpp @@ -481,9 +481,9 @@ void DotNode::writeBox(FTextStream &t, { for (const auto &mg : m_classDef->getMemberGroups()) { - if (mg->members()) + if (mg.members()) { - writeBoxMemberList(t,'*',mg->members(),m_classDef,FALSE,&arrowNames); + writeBoxMemberList(t,'*',mg.members(),m_classDef,FALSE,&arrowNames); } } } diff --git a/src/filedef.cpp b/src/filedef.cpp index 917af49..d98594c 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -280,9 +280,9 @@ void FileDefImpl::computeAnchors() void FileDefImpl::distributeMemberGroupDocumentation() { //printf("FileDefImpl::distributeMemberGroupDocumentation()\n"); - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->distributeMemberGroupDocumentation(); + mg.distributeMemberGroupDocumentation(); } } @@ -290,9 +290,9 @@ void FileDefImpl::findSectionsInDocumentation() { docFindSections(briefDescription(),this,docFile()); docFindSections(documentation(),this,docFile()); - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->findSectionsInDocumentation(this); + mg.findSectionsInDocumentation(this); } for (auto &ml : m_memberLists) @@ -395,9 +395,9 @@ void FileDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::MemberGroups: { - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->writeTagFile(tagFile); + mg.writeTagFile(tagFile); } } break; @@ -732,10 +732,10 @@ void FileDefImpl::writeMemberGroups(OutputList &ol) /* write user defined member groups */ for (const auto &mg : m_memberGroups) { - if ((!mg->allMembersInSameSection() || !m_subGrouping) - && mg->header()!="[NOHEADER]") + if ((!mg.allMembersInSameSection() || !m_subGrouping) + && mg.header()!="[NOHEADER]") { - mg->writeDeclarations(ol,0,0,this,0); + mg.writeDeclarations(ol,0,0,this,0); } } } @@ -1247,12 +1247,12 @@ void FileDefImpl::addMembersToMemberGroup() } // add members inside sections to their groups - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - if (mg->allMembersInSameSection() && m_subGrouping) + if (mg.allMembersInSameSection() && m_subGrouping) { //printf("----> addToDeclarationSection(%s)\n",mg->header().data()); - mg->addToDeclarationSection(); + mg.addToDeclarationSection(); } } } @@ -1529,9 +1529,9 @@ void FileDefImpl::addListReferences() 0 ); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->addListReferences(this); + mg.addListReferences(this); } for (auto &ml : m_memberLists) { @@ -1907,9 +1907,9 @@ void FileDefImpl::sortMemberLists() if (ml.needsSorting()) { ml.sort(); ml.setNeedsSorting(FALSE); } } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - MemberList *mlg = mg->members(); + MemberList *mlg = mg.members(); if (mlg->needsSorting()) { mlg->sort(); mlg->setNeedsSorting(FALSE); } } @@ -2032,10 +2032,10 @@ void FileDefImpl::countMembers() ml.countDecMembers(); ml.countDocMembers(); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->countDecMembers(); - mg->countDocMembers(); + mg.countDecMembers(); + mg.countDocMembers(); } } diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 53a24f2..9a48db4 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -208,9 +208,9 @@ void GroupDefImpl::setGroupTitle( const char *t ) void GroupDefImpl::distributeMemberGroupDocumentation() { - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->distributeMemberGroupDocumentation(); + mg.distributeMemberGroupDocumentation(); } } @@ -219,9 +219,9 @@ void GroupDefImpl::findSectionsInDocumentation() docFindSections(briefDescription(),this,docFile()); docFindSections(documentation(),this,docFile()); - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->findSectionsInDocumentation(this); + mg.findSectionsInDocumentation(this); } for (auto &ml : m_memberLists) @@ -301,9 +301,9 @@ void GroupDefImpl::addMembersToMemberGroup() } //printf("GroupDefImpl::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count()); - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->setInGroup(TRUE); + mg.setInGroup(TRUE); } } @@ -572,10 +572,10 @@ void GroupDefImpl::countMembers() ml.countDecMembers(); ml.countDocMembers(); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->countDecMembers(); - mg->countDocMembers(); + mg.countDecMembers(); + mg.countDocMembers(); } } @@ -696,9 +696,9 @@ void GroupDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::MemberGroups: { - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->writeTagFile(tagFile); + mg.writeTagFile(tagFile); } } break; @@ -978,7 +978,7 @@ void GroupDefImpl::writeMemberGroups(OutputList &ol) /* write user defined member groups */ for (const auto &mg : m_memberGroups) { - mg->writeDeclarations(ol,0,0,0,this); + mg.writeDeclarations(ol,0,0,0,this); } } @@ -1528,9 +1528,9 @@ void GroupDefImpl::addListReferences() 0 ); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->addListReferences(this); + mg.addListReferences(this); } for (auto &ml : m_memberLists) { diff --git a/src/membergroup.h b/src/membergroup.h index 5b0c621..20c03d6 100644 --- a/src/membergroup.h +++ b/src/membergroup.h @@ -108,7 +108,15 @@ class MemberGroup }; using MemberGroupRefList = std::vector; -using MemberGroupList = std::vector< std::unique_ptr >; + +class MemberGroupList : public std::vector +{ + public: + MemberGroupList() = default; + private: + MemberGroupList(const MemberGroupList &) = delete; + MemberGroupList &operator=(const MemberGroupList &) = delete; +}; /** Data collected for a member group */ struct MemberGroupInfo diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index f1ac814..507e30b 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -303,9 +303,9 @@ void NamespaceDefImpl::setFileName(const QCString &fn) void NamespaceDefImpl::distributeMemberGroupDocumentation() { - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->distributeMemberGroupDocumentation(); + mg.distributeMemberGroupDocumentation(); } } @@ -313,9 +313,9 @@ void NamespaceDefImpl::findSectionsInDocumentation() { docFindSections(briefDescription(),this,docFile()); docFindSections(documentation(),this,docFile()); - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->findSectionsInDocumentation(this); + mg.findSectionsInDocumentation(this); } for (auto &ml : m_memberLists) { @@ -391,12 +391,12 @@ void NamespaceDefImpl::addMembersToMemberGroup() } // add members inside sections to their groups - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - if (mg->allMembersInSameSection() && m_subGrouping) + if (mg.allMembersInSameSection() && m_subGrouping) { //printf("----> addToDeclarationSection(%s)\n",mg->header().data()); - mg->addToDeclarationSection(); + mg.addToDeclarationSection(); } } } @@ -597,9 +597,9 @@ void NamespaceDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::MemberGroups: { - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->writeTagFile(tagFile); + mg.writeTagFile(tagFile); } } break; @@ -763,10 +763,10 @@ void NamespaceDefImpl::writeMemberGroups(OutputList &ol) /* write user defined member groups */ for (const auto &mg : m_memberGroups) { - if ((!mg->allMembersInSameSection() || !m_subGrouping) - && mg->header()!="[NOHEADER]") + if ((!mg.allMembersInSameSection() || !m_subGrouping) + && mg.header()!="[NOHEADER]") { - mg->writeDeclarations(ol,0,this,0,0); + mg.writeDeclarations(ol,0,this,0,0); } } } @@ -1108,10 +1108,10 @@ void NamespaceDefImpl::countMembers() ml.countDecMembers(); ml.countDocMembers(); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->countDecMembers(); - mg->countDocMembers(); + mg.countDecMembers(); + mg.countDocMembers(); } } @@ -1170,9 +1170,9 @@ void NamespaceDefImpl::addListReferences() this ); } - for (const auto &mg : m_memberGroups) + for (auto &mg : m_memberGroups) { - mg->addListReferences(this); + mg.addListReferences(this); } for (auto &ml : m_memberLists) { diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index 854b3df..688394b 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -1784,13 +1784,13 @@ void PerlModGenerator::generatePerlUserDefinedSection(const Definition *d, const for (const auto &mg : mgl) { m_output.openHash(); - if (mg->header()) - m_output.addFieldQuotedString("header", mg->header()); + if (mg.header()) + m_output.addFieldQuotedString("header", mg.header()); - if (mg->members()) + if (mg.members()) { m_output.openList("members"); - MemberListIterator mli(*mg->members()); + MemberListIterator mli(*mg.members()); const MemberDef *md; for (mli.toFirst(); (md = mli.current()); ++mli) { diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index eb5da5e..33005a4 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -2007,8 +2007,8 @@ static void generateSqlite3ForClass(const ClassDef *cd) // + member groups for (const auto &mg : cd->getMemberGroups()) { - generateSqlite3Section(cd,mg->members(),refid,"user-defined",mg->header(), - mg->documentation()); + generateSqlite3Section(cd,mg.members(),refid,"user-defined",mg.header(), + mg.documentation()); } // this is just a list of *local* members @@ -2064,8 +2064,8 @@ static void generateSqlite3ForNamespace(const NamespaceDef *nd) // + member groups for (const auto &mg : nd->getMemberGroups()) { - generateSqlite3Section(nd,mg->members(),refid,"user-defined",mg->header(), - mg->documentation()); + generateSqlite3Section(nd,mg.members(),refid,"user-defined",mg.header(), + mg.documentation()); } // + normal members @@ -2219,8 +2219,8 @@ static void generateSqlite3ForFile(const FileDef *fd) // + member groups for (const auto &mg : fd->getMemberGroups()) { - generateSqlite3Section(fd,mg->members(),refid,"user-defined",mg->header(), - mg->documentation()); + generateSqlite3Section(fd,mg.members(),refid,"user-defined",mg.header(), + mg.documentation()); } // + normal members @@ -2286,8 +2286,8 @@ static void generateSqlite3ForGroup(const GroupDef *gd) // + member groups for (const auto &mg : gd->getMemberGroups()) { - generateSqlite3Section(gd,mg->members(),refid,"user-defined",mg->header(), - mg->documentation()); + generateSqlite3Section(gd,mg.members(),refid,"user-defined",mg.header(), + mg.documentation()); } // + members diff --git a/src/util.cpp b/src/util.cpp index 665df8b..475afa2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -4403,24 +4403,23 @@ void addMembersToMemberGroup(MemberList *ml, auto mg_it = std::find_if(pMemberGroups->begin(), pMemberGroups->end(), [&groupId](const auto &g) - { return g->groupId()==groupId; } + { return g.groupId()==groupId; } ); MemberGroup *mg_ptr = 0; if (mg_it==pMemberGroups->end()) { - auto mg = std::make_unique( + pMemberGroups->emplace_back( context, groupId, info->header, info->doc, info->docFile, info->docLine); - mg_ptr = mg.get(); - pMemberGroups->push_back(std::move(mg)); + mg_ptr = &pMemberGroups->back(); } else { - mg_ptr = (*mg_it).get(); + mg_ptr = &(*mg_it); } mg_ptr->insertMember(fmd); // insert in member group fmd->setMemberGroup(mg_ptr); @@ -4439,24 +4438,23 @@ void addMembersToMemberGroup(MemberList *ml, auto mg_it = std::find_if(pMemberGroups->begin(), pMemberGroups->end(), [&groupId](const auto &g) - { return g->groupId()==groupId; } + { return g.groupId()==groupId; } ); MemberGroup *mg_ptr = 0; if (mg_it==pMemberGroups->end()) { - auto mg = std::make_unique( + pMemberGroups->emplace_back( context, groupId, info->header, info->doc, info->docFile, info->docLine); - mg_ptr = mg.get(); - pMemberGroups->push_back(std::move(mg)); + mg_ptr = &pMemberGroups->back(); } else { - mg_ptr = (*mg_it).get(); + mg_ptr = &(*mg_it); } md = ml->take(index); // remove from member list mg_ptr->insertMember(md->resolveAlias()); // insert in member group diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 1831a98..b8422a4 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -1357,8 +1357,8 @@ static void generateXMLForClass(const ClassDef *cd,FTextStream &ti) writeTemplateList(cd,t); for (const auto &mg : cd->getMemberGroups()) { - generateXMLSection(cd,ti,t,mg->members(),"user-defined",mg->header(), - mg->documentation()); + generateXMLSection(cd,ti,t,mg.members(),"user-defined",mg.header(), + mg.documentation()); } for (const auto &ml : cd->getMemberLists()) @@ -1454,8 +1454,8 @@ static void generateXMLForNamespace(const NamespaceDef *nd,FTextStream &ti) for (const auto &mg : nd->getMemberGroups()) { - generateXMLSection(nd,ti,t,mg->members(),"user-defined",mg->header(), - mg->documentation()); + generateXMLSection(nd,ti,t,mg.members(),"user-defined",mg.header(), + mg.documentation()); } for (const auto &ml : nd->getMemberLists()) @@ -1578,8 +1578,8 @@ static void generateXMLForFile(FileDef *fd,FTextStream &ti) for (const auto &mg : fd->getMemberGroups()) { - generateXMLSection(fd,ti,t,mg->members(),"user-defined",mg->header(), - mg->documentation()); + generateXMLSection(fd,ti,t,mg.members(),"user-defined",mg.header(), + mg.documentation()); } for (const auto &ml : fd->getMemberLists()) @@ -1651,8 +1651,8 @@ static void generateXMLForGroup(const GroupDef *gd,FTextStream &ti) for (const auto &mg : gd->getMemberGroups()) { - generateXMLSection(gd,ti,t,mg->members(),"user-defined",mg->header(), - mg->documentation()); + generateXMLSection(gd,ti,t,mg.members(),"user-defined",mg.header(), + mg.documentation()); } for (const auto &ml : gd->getMemberLists()) -- cgit v0.12