summaryrefslogtreecommitdiffstats
path: root/src/memberlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memberlist.cpp')
-rw-r--r--src/memberlist.cpp410
1 files changed, 207 insertions, 203 deletions
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 278023b..c71390c 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -1,12 +1,12 @@
/******************************************************************************
*
- *
+ *
*
* Copyright (C) 1997-2015 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
- * documentation under the terms of the GNU General Public License is hereby
- * granted. No representations are made about the suitability of this software
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
@@ -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,13 +58,13 @@ MemberList::MemberList(MemberListType lt) : m_listType(lt)
MemberList::~MemberList()
{
- delete memberGroupList;
}
-int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const
+int genericCompareMembers(const MemberDef *c1,const MemberDef *c2)
{
- static bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST);
- if (sortConstructorsFirst) {
+ bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST);
+ if (sortConstructorsFirst)
+ {
int ord1 = c1->isConstructor() ? 2 : (c1->isDestructor() ? 1 : 0);
int ord2 = c2->isConstructor() ? 2 : (c2->isDestructor() ? 1 : 0);
if (ord1 > ord2)
@@ -74,9 +72,29 @@ int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const
else if (ord2 > ord1)
return 1;
}
+ // sort on name
int cmp = qstricmp(c1->name(),c2->name());
- if (cmp==0) cmp = qstricmp(c1->argsString(),c2->argsString());
- return cmp!=0 ? cmp : c1->getDefLine()-c2->getDefLine();
+ // then on argument list
+ if (cmp==0 && c1->argsString() && c2->argsString())
+ {
+ cmp = qstricmp(c1->argsString(),c2->argsString());
+ }
+ // then on file in which the item is defined
+ if (cmp==0)
+ {
+ cmp = qstricmp(c1->getDefFileName(),c2->getDefFileName());
+ }
+ // then on line number at which the member is defined
+ if (cmp==0)
+ {
+ cmp = c1->getDefLine()-c2->getDefLine();
+ }
+ return cmp;
+}
+
+int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const
+{
+ return genericCompareMembers(c1,c2);
}
int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const
@@ -105,14 +123,9 @@ int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- 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(),
@@ -187,28 +200,23 @@ void MemberList::countDecMembers()
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- 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");
@@ -233,16 +241,11 @@ void MemberList::countDocMembers()
m_numDocMembers++;
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- 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);
}
@@ -288,7 +291,7 @@ MemberDef *MemberList::take(uint index)
}
MemberListIterator::MemberListIterator(const MemberList &l) :
- QListIterator<MemberDef>(l)
+ QListIterator<MemberDef>(l)
{
}
@@ -313,24 +316,23 @@ void MemberList::setAnonymousEnumType()
MemberDef *vmd;
for ( ; (vmd=vmli.current()) ; ++vmli)
{
- QCString vtype=vmd->typeString();
- if ((vtype.find(name))!=-1)
+ MemberDefMutable *vmdm = toMemberDefMutable(vmd);
+ if (vmdm)
{
- vmd->setAnonymousEnumType(md);
+ QCString vtype=vmd->typeString();
+ if ((vtype.find(name))!=-1)
+ {
+ vmdm->setAnonymousEnumType(md);
+ }
}
}
}
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->setAnonymousEnumType();
- }
+ mg->setAnonymousEnumType();
}
}
@@ -378,9 +380,9 @@ bool MemberList::declVisible() const
case MemberType_Service: // fall through
case MemberType_Sequence: // fall through
case MemberType_Dictionary: // fall through
- case MemberType_Event:
+ case MemberType_Event:
return TRUE;
- case MemberType_Enumeration:
+ case MemberType_Enumeration:
{
// if this is an anonymous enum and there are variables of this
// enum type (i.e. enumVars>0), then we do not show the enum here.
@@ -392,7 +394,7 @@ bool MemberList::declVisible() const
break;
case MemberType_Friend:
return TRUE;
- case MemberType_EnumValue:
+ case MemberType_EnumValue:
{
if (m_inGroup)
{
@@ -412,7 +414,6 @@ void MemberList::writePlainDeclarations(OutputList &ol,
) const
{
//printf("----- writePlainDeclaration() ----\n");
- static bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
if (numDecMembers()==-1)
{
err("MemberList::numDecMembers()==-1, so the members of this list have not been counted. Please report as a bug.\n");
@@ -425,7 +426,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
}
//printf(" --> writePlainDeclaration() numDecMembers()=%d\n",
// numDecMembers());
-
+
ol.pushGeneratorState();
bool first=TRUE;
@@ -454,13 +455,13 @@ void MemberList::writePlainDeclarations(OutputList &ol,
case MemberType_Service: // fall through
case MemberType_Sequence: // fall through
case MemberType_Dictionary: // fall through
- case MemberType_Event:
+ case MemberType_Event:
{
if (first) ol.startMemberList(),first=FALSE;
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId);
break;
}
- case MemberType_Enumeration:
+ case MemberType_Enumeration:
{
// if this is an anonymous enum and there are variables of this
// enum type (i.e. enumVars>0), then we do not show the enum here.
@@ -484,6 +485,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.writeString("local ");
}
ol.writeString("enum ");
+ if (md->isStrong())
+ {
+ ol.writeString("class ");
+ }
ol.insertMemberAlign();
md->writeEnumDeclaration(ol,cd,nd,fd,gd);
if (!detailsLinkable)
@@ -497,7 +502,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
md->briefFile(),md->briefLine(),
cd,md,
md->briefDescription(),
- TRUE,FALSE,0,TRUE,FALSE
+ TRUE,FALSE,
+ 0,TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)
);
if (rootNode && !rootNode->isEmpty())
{
@@ -525,7 +531,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
case MemberType_Friend:
if (inheritedFrom==0)
{
- if (first)
+ if (first)
{
ol.startMemberList();
first=FALSE;
@@ -533,7 +539,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId);
break;
}
- case MemberType_EnumValue:
+ case MemberType_EnumValue:
{
if (m_inGroup)
{
@@ -551,30 +557,30 @@ void MemberList::writePlainDeclarations(OutputList &ol,
// no variables of the anonymous compound type exist.
if (cd)
{
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()) ; ++mli )
+ for ( mli.toFirst(); (md=mli.current()) ; ++mli )
{
if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{
- md->setFromAnonymousScope(FALSE);
+ MemberDefMutable *mdm = toMemberDefMutable(md);
+ if (mdm) mdm->setFromAnonymousScope(FALSE);
//printf("anonymous compound members\n");
if (md->isBriefSectionVisible())
{
- if (first)
+ if (first)
{
ol.startMemberList();
first=FALSE;
}
md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup);
}
- md->setFromAnonymousScope(TRUE);
+ if (mdm) mdm->setFromAnonymousScope(TRUE);
}
}
}
-
- if (!first)
+
+ if (!first)
{
- ol.endMemberList();
+ ol.endMemberList();
}
ol.popGeneratorState();
@@ -630,7 +636,7 @@ void MemberList::writeDeclarations(OutputList &ol,
if (title)
{
ol.writeInheritedSectionTitle(inheritId,cd->getReference(),
- cd->getOutputFileBase(),
+ cd->getOutputFileBase(),
cd->anchor(),title,cd->displayName());
}
ol.popGeneratorState();
@@ -638,7 +644,7 @@ void MemberList::writeDeclarations(OutputList &ol,
}
else if (num>numEnumValues)
{
- if (title)
+ if (title)
{
if (showInline)
{
@@ -658,14 +664,15 @@ void MemberList::writeDeclarations(OutputList &ol,
ol.endMemberHeader();
}
}
- if (subtitle)
+ if (subtitle)
{
QCString st=subtitle;
st = st.stripWhiteSpace();
if (!st.isEmpty())
{
ol.startMemberSubtitle();
- ol.generateDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,0,FALSE,FALSE);
+ ol.generateDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,
+ 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
ol.endMemberSubtitle();
}
}
@@ -688,46 +695,45 @@ void MemberList::writeDeclarations(OutputList &ol,
}
//printf("memberGroupList=%p\n",memberGroupList);
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- 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);
- 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);
}
}
}
- if (inheritedFrom && cd)
+ if (inheritedFrom && cd)
{
- // also add members that of this list type, that are grouped together
- // in a separate list in class 'inheritedFrom'
- cd->addGroupedInheritedMembers(ol,m_listType,inheritedFrom,inheritId);
+ const ClassDefMutable *cdm = toClassDefMutable(cd);
+ if (cdm)
+ {
+ // also add members that of this list type, that are grouped together
+ // in a separate list in class 'inheritedFrom'
+ cdm->addGroupedInheritedMembers(ol,m_listType,inheritedFrom,inheritId);
+ }
}
//printf("----- end writeDeclaration() ----\n");
}
@@ -767,7 +773,7 @@ void MemberList::writeDocumentation(OutputList &ol,
overloadCountDict.setAutoDelete(TRUE);
for (mli.toFirst() ; (md=mli.current()) ; ++mli)
{
- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
+ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
!(md->isEnumValue() && !showInline))
{
uint *pCount = overloadTotalDict.find(md->name());
@@ -785,25 +791,24 @@ void MemberList::writeDocumentation(OutputList &ol,
for (mli.toFirst() ; (md=mli.current()) ; ++mli)
{
- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
+ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
!(md->isEnumValue() && !showInline))
{
uint overloadCount = *overloadTotalDict.find(md->name());
uint *pCount = overloadCountDict.find(md->name());
- md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container,
- m_inGroup,showEnumValues,showInline);
- (*pCount)++;
+ MemberDefMutable *mdm = toMemberDefMutable(md);
+ if (mdm)
+ {
+ mdm->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container,
+ m_inGroup,showEnumValues,showInline);
+ (*pCount)++;
+ }
}
}
- if (memberGroupList)
+ //printf("MemberList::writeDocumentation() -- member groups %d\n",memberGroupList->count());
+ for (const auto &mg : m_memberGroupRefList)
{
- //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();
}
@@ -818,21 +823,25 @@ void MemberList::writeSimpleDocumentation(OutputList &ol,
const ClassDef *cd = 0;
if (container && container->definitionType()==Definition::TypeClass)
{
- cd = dynamic_cast<const ClassDef*>(container);
+ cd = toClassDef(container);
}
ol.startMemberDocSimple(cd && cd->isJavaEnum());
MemberListIterator mli(*this);
const MemberDef *md;
for ( ; (md=mli.current()) ; ++mli)
{
- md->writeMemberDocSimple(ol,container);
+ MemberDefMutable *mdm = toMemberDefMutable(md);
+ if (mdm)
+ {
+ mdm->writeMemberDocSimple(ol,container);
+ }
}
ol.endMemberDocSimple(cd && cd->isJavaEnum());
}
// separate member pages
void MemberList::writeDocumentationPage(OutputList &ol,
- const char *scopeName, const Definition *container) const
+ const char *scopeName, const DefinitionMutable *container) const
{
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
@@ -842,9 +851,11 @@ void MemberList::writeDocumentationPage(OutputList &ol,
overloadTotalDict.setAutoDelete(TRUE);
overloadCountDict.setAutoDelete(TRUE);
MemberListIterator mli(*this);
- const MemberDef *md;
- for (mli.toFirst() ; (md=mli.current()) ; ++mli)
+ const MemberDef *imd;
+ for (mli.toFirst() ; (imd=mli.current()) ; ++mli)
{
+ MemberDefMutable *md = toMemberDefMutable(imd);
+
if (md->isDetailedSectionLinkable())
{
uint *pCount = overloadTotalDict.find(md->name());
@@ -860,8 +871,10 @@ void MemberList::writeDocumentationPage(OutputList &ol,
}
}
- for ( mli.toFirst() ; (md=mli.current()) ; ++mli)
+ for ( mli.toFirst() ; (imd=mli.current()) ; ++mli)
{
+ Definition *container_d = toDefinition(const_cast<DefinitionMutable*>(container));
+ MemberDefMutable *md = toMemberDefMutable(imd);
if (md->isDetailedSectionLinkable())
{
uint overloadCount = *overloadTotalDict.find(md->name());
@@ -878,10 +891,11 @@ void MemberList::writeDocumentationPage(OutputList &ol,
if (generateTreeView)
{
- md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container,m_inGroup);
+ md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container_d,m_inGroup);
(*pCount)++;
+
ol.endContents();
- endFileWithNavPath(container,ol);
+ endFileWithNavPath(container_d,ol);
}
else
{
@@ -894,7 +908,7 @@ void MemberList::writeDocumentationPage(OutputList &ol,
ol.writeString(" </td>\n");
ol.writeString(" <td valign=\"top\" class=\"mempage\">\n");
- md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container,m_inGroup);
+ md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container_d,m_inGroup);
(*pCount)++;
ol.writeString(" </td>\n");
@@ -905,35 +919,25 @@ void MemberList::writeDocumentationPage(OutputList &ol,
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- //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_memberGroupRefList.push_back(mg);
}
void MemberList::addListReferences(Definition *def)
{
MemberListIterator mli(*this);
- MemberDef *md;
- for ( ; (md=mli.current()) ; ++mli)
+ MemberDef *imd;
+ for ( ; (imd=mli.current()) ; ++mli)
{
- if (!md->isAlias() && (md->getGroupDef()==0 || def->definitionType()==Definition::TypeGroup))
+ MemberDefMutable *md = toMemberDefMutable(imd);
+ if (md && !md->isAlias() && (md->getGroupDef()==0 || def->definitionType()==Definition::TypeGroup))
{
md->addListReference(def);
const MemberList *enumFields = md->enumFieldList();
@@ -944,40 +948,38 @@ void MemberList::addListReferences(Definition *def)
MemberDef *vmd;
for ( ; (vmd=vmli.current()) ; ++vmli)
{
- //printf(" adding %s\n",vmd->name().data());
- vmd->addListReference(def);
+ MemberDefMutable *vmdm = toMemberDefMutable(vmd);
+ if (vmdm)
+ {
+ //printf(" adding %s\n",vmd->name().data());
+ vmdm->addListReference(def);
+ }
}
}
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->addListReferences(def);
- }
+ mg->addListReferences(def);
}
}
void MemberList::findSectionsInDocumentation(const Definition *d)
{
MemberListIterator mli(*this);
- MemberDef *md;
- for ( ; (md=mli.current()) ; ++mli)
+ MemberDef *imd;
+ for ( ; (imd=mli.current()) ; ++mli)
{
- md->findSectionsInDocumentation();
- }
- if (memberGroupList)
- {
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
+ MemberDefMutable *md = toMemberDefMutable(imd);
+ if (md)
{
- mg->findSectionsInDocumentation(d);
+ md->findSectionsInDocumentation();
}
}
+ for (const auto &mg : m_memberGroupRefList)
+ {
+ mg->findSectionsInDocumentation(d);
+ }
}
void MemberList::setNeedsSorting(bool b)
@@ -985,7 +987,7 @@ void MemberList::setNeedsSorting(bool b)
m_needsSorting = b;
}
-QCString MemberList::listTypeAsString(MemberListType type)
+QCString MemberList::listTypeAsString(MemberListType type)
{
switch(type)
{
@@ -1037,7 +1039,7 @@ QCString MemberList::listTypeAsString(MemberListType type)
case MemberListType_decFriendMembers: return "friend-members";
case MemberListType_decPropMembers: return "prop-members";
case MemberListType_enumFields: return "enum-fields";
- case MemberListType_memberGroup: return "member-group";
+ case MemberListType_memberGroup: break;
default: break;
}
return "";
@@ -1046,52 +1048,54 @@ QCString MemberList::listTypeAsString(MemberListType type)
void MemberList::writeTagFile(FTextStream &tagFile)
{
MemberListIterator mli(*this);
- MemberDef *md;
- for ( ; (md=mli.current()) ; ++mli)
+ MemberDef *imd;
+ for ( ; (imd=mli.current()) ; ++mli)
{
- if (md->getLanguage()!=SrcLangExt_VHDL)
+ MemberDefMutable *md = toMemberDefMutable(imd);
+ if (md)
{
- md->writeTagFile(tagFile);
- if (md->memberType()==MemberType_Enumeration && md->enumFieldList() && !md->isStrong())
+ if (md->getLanguage()!=SrcLangExt_VHDL)
{
- MemberListIterator vmli(*md->enumFieldList());
- MemberDef *vmd;
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ md->writeTagFile(tagFile);
+ if (md->memberType()==MemberType_Enumeration && md->enumFieldList() && !md->isStrong())
{
- vmd->writeTagFile(tagFile);
+ MemberListIterator vmli(*md->enumFieldList());
+ MemberDef *ivmd;
+ for ( ; (ivmd=vmli.current()) ; ++vmli)
+ {
+ MemberDefMutable *vmd = toMemberDefMutable(ivmd);
+ if (vmd)
+ {
+ vmd->writeTagFile(tagFile);
+ }
+ }
}
}
- }
- else
- {
- VhdlDocGen::writeTagFile(md,tagFile);
+ else
+ {
+ VhdlDocGen::writeTagFile(md,tagFile);
+ }
}
}
- if (memberGroupList)
+ for (const auto &mg : m_memberGroupRefList)
{
- MemberGroupListIterator mgli(*memberGroupList);
- MemberGroup *mg;
- for (;(mg=mgli.current());++mgli)
- {
- mg->writeTagFile(tagFile);
- }
+ mg->writeTagFile(tagFile);
}
}
-//--------------------------------------------------------------------------
-
-int MemberSDict::compareValues(const MemberDef *c1, const MemberDef *c2) const
+// compute the HTML anchors for a list of members
+void MemberList::setAnchors()
{
- //printf("MemberSDict::compareValues(%s,%s)\n",c1->name().data(),c2->name().data());
- int cmp = qstricmp(c1->name(),c2->name());
- if (cmp)
- {
- return cmp;
- }
- else
+ //int count=0;
+ MemberListIterator mli(*this);
+ MemberDef *md;
+ for (;(md=mli.current());++mli)
{
- return c1->getDefLine()-c2->getDefLine();
+ MemberDefMutable *mdm = toMemberDefMutable(md);
+ if (mdm && !md->isReference())
+ {
+ mdm->setAnchor();
+ }
}
}
-