summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-12-30 13:43:03 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-12-30 13:43:03 (GMT)
commitefa76fb818ff37ed2bde1675a11d36dc852727e5 (patch)
treecaf401f707b19e5a51d670e58ac426f6a0a29c04
parent62f341f2ff134f65aa9ccb10056d40bcefbb167f (diff)
downloadDoxygen-efa76fb818ff37ed2bde1675a11d36dc852727e5.zip
Doxygen-efa76fb818ff37ed2bde1675a11d36dc852727e5.tar.gz
Doxygen-efa76fb818ff37ed2bde1675a11d36dc852727e5.tar.bz2
Refactoring: modernise MemberGroupList
-rw-r--r--src/context.cpp22
-rw-r--r--src/context.h6
-rw-r--r--src/dotnode.cpp14
-rw-r--r--src/membergroup.h13
-rw-r--r--src/memberlist.cpp174
-rw-r--r--src/memberlist.h9
-rw-r--r--src/vhdldocgen.cpp58
7 files changed, 99 insertions, 197 deletions
diff --git a/src/context.cpp b/src/context.cpp
index a7eb9a3..0e531b0 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -8818,7 +8818,7 @@ class MemberGroupInfoContext::Private
{
if (!m_cache.memberGroups)
{
- m_cache.memberGroups.reset(MemberGroupListContext::alloc(m_def,m_relPath,0));
+ m_cache.memberGroups.reset(MemberGroupListContext::alloc());
}
return m_cache.memberGroups.get();
}
@@ -8895,17 +8895,12 @@ MemberGroupListContext::MemberGroupListContext() : RefCountedContext("MemberGrou
p = new Private;
}
-MemberGroupListContext::MemberGroupListContext(const Definition *def,const QCString &relPath,const MemberGroupList *list) : RefCountedContext("MemberGroupListContext")
+MemberGroupListContext::MemberGroupListContext(const Definition *def,const QCString &relPath,const MemberGroupList &list) : RefCountedContext("MemberGroupListContext")
{
p = new Private;
- if (list)
+ for (const auto &mg : list)
{
- MemberGroupListIterator mgli(*list);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- p->addMemberGroup(def,relPath,mg);
- }
+ p->addMemberGroup(def,relPath,mg);
}
}
@@ -9180,14 +9175,9 @@ class InheritedMemberInfoListContext::Private : public GenericNodeListContext
if (ml)
{
addMemberList(inheritedFrom,ml,combinedList);
- if (ml->getMemberGroupList())
+ for (const auto *mg : ml->getMemberGroupList())
{
- MemberGroupListIterator mgli(*ml->getMemberGroupList());
- MemberGroup *mg;
- for (mgli.toFirst();(mg=mgli.current());++mgli)
- {
- addMemberList(inheritedFrom,mg->members(),combinedList);
- }
+ addMemberList(inheritedFrom,mg->members(),combinedList);
}
}
}
diff --git a/src/context.h b/src/context.h
index 19fa0df..8e3c0fb 100644
--- a/src/context.h
+++ b/src/context.h
@@ -23,6 +23,7 @@
#include "dirdef.h"
#include "classdef.h"
#include "searchindex.h"
+#include "membergroup.h"
class Definition;
class PageDef;
@@ -50,7 +51,6 @@ class MemberNameInfoLinkedMap;
class MemberInfo;
class MemberGroup;
class MemberGroupSDict;
-class MemberGroupList;
class DotNode;
class DotGfxHierarchyTable;
@@ -1006,7 +1006,7 @@ class MemberGroupListContext : public RefCountedContext, public TemplateListIntf
public:
static MemberGroupListContext *alloc()
{ return new MemberGroupListContext; }
- static MemberGroupListContext *alloc(const Definition *def,const QCString &relPath,const MemberGroupList *list)
+ static MemberGroupListContext *alloc(const Definition *def,const QCString &relPath,const MemberGroupList &list)
{ return new MemberGroupListContext(def,relPath,list); }
static MemberGroupListContext *alloc(const Definition *def,const QCString &relPath,const MemberGroupSDict *dict,bool subGrouping)
{ return new MemberGroupListContext(def,relPath,dict,subGrouping); }
@@ -1020,7 +1020,7 @@ class MemberGroupListContext : public RefCountedContext, public TemplateListIntf
private:
MemberGroupListContext();
- MemberGroupListContext(const Definition *def,const QCString &relPath,const MemberGroupList *list);
+ MemberGroupListContext(const Definition *def,const QCString &relPath,const MemberGroupList &list);
MemberGroupListContext(const Definition *def,const QCString &relPath,const MemberGroupSDict *mgDict,bool subGrouping);
~MemberGroupListContext();
class Private;
diff --git a/src/dotnode.cpp b/src/dotnode.cpp
index 86f99a2..b56e258 100644
--- a/src/dotnode.cpp
+++ b/src/dotnode.cpp
@@ -119,7 +119,7 @@ static UmlDetailLevel getUmlDetailLevelFromConfig()
result=UmlDetailLevel::None;
}
return result;
-}
+}
static QCString escapeTooltip(const QCString &tooltip)
{
@@ -197,17 +197,11 @@ static void writeBoxMemberList(FTextStream &t,
}
}
// write member groups within the memberlist
- MemberGroupList *mgl = ml->getMemberGroupList();
- if (mgl)
+ for (const auto &mg : ml->getMemberGroupList())
{
- MemberGroupListIterator mgli(*mgl);
- MemberGroup *mg;
- for (mgli.toFirst();(mg=mgli.current());++mgli)
+ if (mg->members())
{
- if (mg->members())
- {
- writeBoxMemberList(t,prot,mg->members(),scope,isStatic,skipNames);
- }
+ writeBoxMemberList(t,prot,mg->members(),scope,isStatic,skipNames);
}
}
}
diff --git a/src/membergroup.h b/src/membergroup.h
index e1dae25..0734344 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -105,18 +105,7 @@ class MemberGroup
RefItemVector m_xrefListItems;
};
-/** A list of MemberGroup objects. */
-class MemberGroupList : public QList<MemberGroup>
-{
-};
-
-/** An iterator for MemberGroup objects in a MemberGroupList. */
-class MemberGroupListIterator : public QListIterator<MemberGroup>
-{
- public:
- MemberGroupListIterator(const MemberGroupList &l) :
- QListIterator<MemberGroup>(l) {}
-};
+using MemberGroupList = std::vector<MemberGroup *>;
/** A sorted dictionary of MemberGroup objects. */
class MemberGroupSDict : public SIntDict<MemberGroup>
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index bbc6e5d..78c9373 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -35,7 +35,6 @@
MemberList::MemberList() : m_listType(MemberListType_pubMethods)
{
//printf("%p: MemberList::MemberList()\n",this);
- memberGroupList=0;
m_numDecMembers=-1; // special value indicating that value needs to be computed
m_numDecEnumValues=0;
m_numDocMembers=-1; // special value indicating that value needs to be computed
@@ -48,7 +47,6 @@ MemberList::MemberList() : m_listType(MemberListType_pubMethods)
MemberList::MemberList(MemberListType lt) : m_listType(lt)
{
//printf("%p: MemberList::MemberList(%d)\n",this,lt);
- memberGroupList=0;
m_numDecMembers=-1; // special value indicating that value needs to be computed
m_numDecEnumValues=0;
m_numDocMembers=-1; // special value indicating that value needs to be computed
@@ -60,7 +58,6 @@ MemberList::MemberList(MemberListType lt) : m_listType(lt)
MemberList::~MemberList()
{
- delete memberGroupList;
}
int genericCompareMembers(const MemberDef *c1,const MemberDef *c2)
@@ -126,14 +123,9 @@ int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- count+=mg->countInheritableMembers(inheritedFrom);
- }
+ count+=mg->countInheritableMembers(inheritedFrom);
}
//printf("%s::countInheritableMembers(%s)=%d\n",
// listTypeAsString().data(),
@@ -208,28 +200,23 @@ void MemberList::countDecMembers()
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->countDecMembers();
- /*
- m_varCnt+=mg->varCount();
- m_funcCnt+=mg->funcCount();
- m_enumCnt+=mg->enumCount();
- m_enumValCnt+=mg->enumValueCount();
- m_typeCnt+=mg->typedefCount();
- m_seqCnt+=mg->sequenceCount();
- m_dictCnt+=mg->dictionaryCount();
- m_protoCnt+=mg->protoCount();
- m_defCnt+=mg->defineCount();
- m_friendCnt+=mg->friendCount();
- */
- m_numDecMembers+=mg->numDecMembers();
- m_numDecEnumValues+=mg->numDecEnumValues();
- }
+ mg->countDecMembers();
+ /*
+ m_varCnt+=mg->varCount();
+ m_funcCnt+=mg->funcCount();
+ m_enumCnt+=mg->enumCount();
+ m_enumValCnt+=mg->enumValueCount();
+ m_typeCnt+=mg->typedefCount();
+ m_seqCnt+=mg->sequenceCount();
+ m_dictCnt+=mg->dictionaryCount();
+ m_protoCnt+=mg->protoCount();
+ m_defCnt+=mg->defineCount();
+ m_friendCnt+=mg->friendCount();
+ */
+ m_numDecMembers+=mg->numDecMembers();
+ m_numDecEnumValues+=mg->numDecEnumValues();
}
//printf("----- end countDecMembers ----\n");
@@ -254,16 +241,11 @@ void MemberList::countDocMembers()
m_numDocMembers++;
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->countDocMembers();
- m_numDocMembers+=mg->numDocMembers();
- m_numDocEnumValues+=mg->numDocEnumValues();
- }
+ mg->countDocMembers();
+ m_numDocMembers+=mg->numDocMembers();
+ m_numDocEnumValues+=mg->numDocEnumValues();
}
//printf("MemberList::countDocMembers()=%d memberGroupList=%p\n",m_numDocMembers,memberGroupList);
}
@@ -348,14 +330,9 @@ void MemberList::setAnonymousEnumType()
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->setAnonymousEnumType();
- }
+ mg->setAnonymousEnumType();
}
}
@@ -718,39 +695,33 @@ void MemberList::writeDeclarations(OutputList &ol,
}
//printf("memberGroupList=%p\n",memberGroupList);
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- while ((mg=mgli.current()))
+ bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]";
+ if (inheritId.isEmpty())
{
- bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]";
- if (inheritId.isEmpty())
+ //printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader);
+ ol.startMemberGroupHeader(hasHeader);
+ if (hasHeader)
{
- //printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader);
- ol.startMemberGroupHeader(hasHeader);
- if (hasHeader)
- {
- ol.parseText(mg->header());
- }
- ol.endMemberGroupHeader();
- if (!mg->documentation().isEmpty())
- {
- //printf("Member group has docs!\n");
- ol.startMemberGroupDocs();
- ol.generateDoc(mg->docFile(),mg->docLine(),ctx,0,mg->documentation()+"\n",FALSE,FALSE,
- 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
- ol.endMemberGroupDocs();
- }
- ol.startMemberGroup();
+ ol.parseText(mg->header());
}
- //printf("--- mg->writePlainDeclarations ---\n");
- mg->writePlainDeclarations(ol,cd,nd,fd,gd,inheritedFrom,inheritId);
- if (inheritId.isEmpty())
+ ol.endMemberGroupHeader();
+ if (!mg->documentation().isEmpty())
{
- ol.endMemberGroup(hasHeader);
+ //printf("Member group has docs!\n");
+ ol.startMemberGroupDocs();
+ ol.generateDoc(mg->docFile(),mg->docLine(),ctx,0,mg->documentation()+"\n",FALSE,FALSE,
+ 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
+ ol.endMemberGroupDocs();
}
- ++mgli;
+ ol.startMemberGroup();
+ }
+ //printf("--- mg->writePlainDeclarations ---\n");
+ mg->writePlainDeclarations(ol,cd,nd,fd,gd,inheritedFrom,inheritId);
+ if (inheritId.isEmpty())
+ {
+ ol.endMemberGroup(hasHeader);
}
}
}
@@ -834,15 +805,10 @@ void MemberList::writeDocumentation(OutputList &ol,
}
}
}
- if (memberGroupList)
+ //printf("MemberList::writeDocumentation() -- member groups %d\n",memberGroupList->count());
+ for (const auto &mg : m_memberGroupList)
{
- //printf("MemberList::writeDocumentation() -- member groups %d\n",memberGroupList->count());
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writeDocumentation(ol,scopeName,container,showEnumValues,showInline);
- }
+ mg->writeDocumentation(ol,scopeName,container,showEnumValues,showInline);
}
ol.endMemberDocList();
}
@@ -953,26 +919,15 @@ void MemberList::writeDocumentationPage(OutputList &ol,
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- //printf("MemberList::writeDocumentation() -- member groups\n");
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writeDocumentationPage(ol,scopeName,container);
- }
+ mg->writeDocumentationPage(ol,scopeName,container);
}
}
void MemberList::addMemberGroup(MemberGroup *mg)
{
- if (memberGroupList==0)
- {
- memberGroupList=new MemberGroupList;
- }
- //printf("addMemberGroup: this=%p mg=%p\n",this,mg);
- memberGroupList->append(mg);
+ m_memberGroupList.push_back(mg);
}
void MemberList::addListReferences(Definition *def)
@@ -1003,14 +958,9 @@ void MemberList::addListReferences(Definition *def)
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->addListReferences(def);
- }
+ mg->addListReferences(def);
}
}
@@ -1026,14 +976,9 @@ void MemberList::findSectionsInDocumentation(const Definition *d)
md->findSectionsInDocumentation();
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->findSectionsInDocumentation(d);
- }
+ mg->findSectionsInDocumentation(d);
}
}
@@ -1132,14 +1077,9 @@ void MemberList::writeTagFile(FTextStream &tagFile)
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writeTagFile(tagFile);
- }
+ mg->writeTagFile(tagFile);
}
}
diff --git a/src/memberlist.h b/src/memberlist.h
index e62655b..e9e14dd 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -16,14 +16,15 @@
#ifndef MEMBERLIST_H
#define MEMBERLIST_H
+#include <vector>
+
#include <qlist.h>
#include "memberdef.h"
#include "sortdict.h"
#include "types.h"
+#include "membergroup.h"
class GroupDef;
-class MemberGroup;
-class MemberGroupList;
/** A list of MemberDef objects. */
class MemberList : private QList<MemberDef>
@@ -88,7 +89,7 @@ class MemberList : private QList<MemberDef>
void addListReferences(Definition *def);
void findSectionsInDocumentation(const Definition *d);
void setNeedsSorting(bool b);
- MemberGroupList *getMemberGroupList() const { return memberGroupList; }
+ const MemberGroupList &getMemberGroupList() const { return m_memberGroupList; }
void setAnonymousEnumType();
void setAnchors();
@@ -110,7 +111,7 @@ class MemberList : private QList<MemberDef>
int m_numDecEnumValues;
int m_numDocMembers; // number of members in the detailed part of the memberlist
int m_numDocEnumValues;
- MemberGroupList *memberGroupList;
+ MemberGroupList m_memberGroupList;
bool m_inGroup; // is this list part of a group definition
bool m_inFile; // is this list part of a file definition
MemberListType m_listType;
diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp
index dd208aa..f75cf35 100644
--- a/src/vhdldocgen.cpp
+++ b/src/vhdldocgen.cpp
@@ -2169,17 +2169,11 @@ static bool membersHaveSpecificType(const MemberList *ml,uint64 type)
return TRUE;
}
}
- if (ml->getMemberGroupList())
+ for (const auto &mg : ml->getMemberGroupList())
{
- MemberGroupListIterator mgli(*ml->getMemberGroupList());
- MemberGroup *mg;
- while ((mg=mgli.current()))
+ if (mg->members())
{
- if (mg->members())
- {
- if (membersHaveSpecificType(mg->members(),type)) return TRUE;
- }
- ++mgli;
+ if (membersHaveSpecificType(mg->members(),type)) return TRUE;
}
}
return FALSE;
@@ -2208,36 +2202,30 @@ void VhdlDocGen::writeVHDLDeclarations(const MemberList* ml,OutputList &ol,
VhdlDocGen::writePlainVHDLDeclarations(ml,ol,cd,nd,fd,gd,type);
- if (ml->getMemberGroupList())
+ for (const auto &mg : ml->getMemberGroupList())
{
- MemberGroupListIterator mgli(*ml->getMemberGroupList());
- MemberGroup *mg;
- while ((mg=mgli.current()))
+ if (membersHaveSpecificType(mg->members(),type))
{
- if (membersHaveSpecificType(mg->members(),type))
+ //printf("mg->header=%s\n",mg->header().data());
+ bool hasHeader=mg->header()!="[NOHEADER]";
+ ol.startMemberGroupHeader(hasHeader);
+ if (hasHeader)
{
- //printf("mg->header=%s\n",mg->header().data());
- bool hasHeader=mg->header()!="[NOHEADER]";
- ol.startMemberGroupHeader(hasHeader);
- if (hasHeader)
- {
- ol.parseText(mg->header());
- }
- ol.endMemberGroupHeader();
- if (!mg->documentation().isEmpty())
- {
- //printf("Member group has docs!\n");
- ol.startMemberGroupDocs();
- ol.generateDoc("[generated]",-1,0,0,mg->documentation()+"\n",FALSE,FALSE,
- 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
- ol.endMemberGroupDocs();
- }
- ol.startMemberGroup();
- //printf("--- mg->writePlainDeclarations ---\n");
- VhdlDocGen::writePlainVHDLDeclarations(mg->members(),ol,cd,nd,fd,gd,type);
- ol.endMemberGroup(hasHeader);
+ ol.parseText(mg->header());
+ }
+ ol.endMemberGroupHeader();
+ if (!mg->documentation().isEmpty())
+ {
+ //printf("Member group has docs!\n");
+ ol.startMemberGroupDocs();
+ ol.generateDoc("[generated]",-1,0,0,mg->documentation()+"\n",FALSE,FALSE,
+ 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
+ ol.endMemberGroupDocs();
}
- ++mgli;
+ ol.startMemberGroup();
+ //printf("--- mg->writePlainDeclarations ---\n");
+ VhdlDocGen::writePlainVHDLDeclarations(mg->members(),ol,cd,nd,fd,gd,type);
+ ol.endMemberGroup(hasHeader);
}
}
}// writeVHDLDeclarations