summaryrefslogtreecommitdiffstats
path: root/src/memberlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memberlist.cpp')
-rw-r--r--src/memberlist.cpp276
1 files changed, 84 insertions, 192 deletions
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index c71390c..bd89739 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -15,8 +15,6 @@
*
*/
-#include <qregexp.h>
-
#include "memberlist.h"
#include "classdef.h"
#include "message.h"
@@ -75,7 +73,7 @@ int genericCompareMembers(const MemberDef *c1,const MemberDef *c2)
// sort on name
int cmp = qstricmp(c1->name(),c2->name());
// then on argument list
- if (cmp==0 && c1->argsString() && c2->argsString())
+ if (cmp==0 && !c1->argsString().isEmpty() && !c2->argsString().isEmpty())
{
cmp = qstricmp(c1->argsString(),c2->argsString());
}
@@ -92,25 +90,18 @@ int genericCompareMembers(const MemberDef *c1,const MemberDef *c2)
return cmp;
}
-int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const
-{
- return genericCompareMembers(c1,c2);
-}
-
int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const
{
int count=0;
- QListIterator<MemberDef> mli(*this);
- const MemberDef *md;
- for (mli.toFirst();(md=mli.current());++mli)
+ for (const auto &md : m_members)
{
if (md->isBriefSectionVisible())
{
if (md->memberType()!=MemberType_Friend &&
md->memberType()!=MemberType_EnumValue)
{
- //printf("member %s: isReimplementedBy(%s)=%d\n",md->name().data(),
- // inheritedFrom->name().data(),
+ //printf("member %s: isReimplementedBy(%s)=%d\n",qPrint(md->name()),
+ // qPrint(inheritedFrom->name()),
// md->isReimplementedBy(inheritedFrom));
if (md->memberType()==MemberType_Function)
{
@@ -128,8 +119,8 @@ int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const
count+=mg->countInheritableMembers(inheritedFrom);
}
//printf("%s::countInheritableMembers(%s)=%d\n",
- // listTypeAsString().data(),
- // inheritedFrom->name().data(),count);
+ // qPrint(listTypeAsString()),
+ // qPrint(inheritedFrom->name()),count);
return count;
}
@@ -146,11 +137,9 @@ void MemberList::countDecMembers()
m_typeCnt=m_seqCnt=m_dictCnt=m_protoCnt=m_defCnt=m_friendCnt=0;
*/
m_numDecMembers=0;
- QListIterator<MemberDef> mli(*this);
- MemberDef *md;
- for (mli.toFirst();(md=mli.current());++mli)
+ for (const auto &md : m_members)
{
- //printf("MemberList::countDecMembers(md=%s,%d)\n",md->name().data(),md->isBriefSectionVisible());
+ //printf("MemberList::countDecMembers(md=%s,%d)\n",qPrint(md->name()),md->isBriefSectionVisible());
if (md->isBriefSectionVisible())
{
switch(md->memberType())
@@ -187,7 +176,7 @@ void MemberList::countDecMembers()
break;
//case MemberType_Prototype: m_protoCnt++,m_numDecMembers++; break;
case MemberType_Define: if (Config_getBool(EXTRACT_ALL) ||
- md->argsString() ||
+ !md->argsString().isEmpty() ||
!md->initializer().isEmpty() ||
md->hasDocumentation()
) /*m_defCnt++,*/ m_numDecMembers++;
@@ -196,7 +185,7 @@ void MemberList::countDecMembers()
m_numDecMembers++;
break;
default:
- err("Unknown member type found for member '%s'\n!",md->name().data());
+ err("Unknown member type found for member '%s'\n!",qPrint(md->name()));
}
}
}
@@ -227,9 +216,7 @@ void MemberList::countDocMembers()
{
if (m_numDocMembers!=-1) return; // used cached value
m_numDocMembers=0;
- QListIterator<MemberDef> mli(*this);
- MemberDef *md;
- for (mli.toFirst();(md=mli.current());++mli)
+ for (const auto &md : m_members)
{
if (md->isDetailedSectionVisible(m_inGroup,m_inFile) && !md->isAlias())
{
@@ -250,57 +237,10 @@ void MemberList::countDocMembers()
//printf("MemberList::countDocMembers()=%d memberGroupList=%p\n",m_numDocMembers,memberGroupList);
}
-void MemberList::inSort(const MemberDef *md)
-{
- QList<MemberDef>::inSort(md);
-}
-
-void MemberList::append(const MemberDef *md)
-{
- QList<MemberDef>::append(md);
-}
-
-void MemberList::remove(const MemberDef *md)
-{
- QList<MemberDef>::remove(md);
-}
-
-void MemberList::sort()
-{
- QList<MemberDef>::sort();
-}
-
-uint MemberList::count() const
-{
- return QList<MemberDef>::count();
-}
-
-int MemberList::findRef(const MemberDef *md) const
-{
- return QList<MemberDef>::findRef(md);
-}
-
-MemberDef *MemberList::getFirst() const
-{
- return QList<MemberDef>::getFirst();
-}
-
-MemberDef *MemberList::take(uint index)
-{
- return QList<MemberDef>::take(index);
-}
-
-MemberListIterator::MemberListIterator(const MemberList &l) :
- QListIterator<MemberDef>(l)
-{
-}
-
void MemberList::setAnonymousEnumType()
{
//printf("MemberList(%p)::setAnonymousEnumType()\n",this);
- MemberListIterator mli(*this);
- const MemberDef *md;
- for ( ; (md=mli.current()); ++mli )
+ for (const auto &md : m_members)
{
if (md->isBriefSectionVisible())
{
@@ -309,21 +249,15 @@ void MemberList::setAnonymousEnumType()
if (i!=-1) name=name.right(name.length()-i-2);
if (md->memberType()==MemberType_Enumeration && name[0]=='@')
{
- const MemberList *mfl = md->enumFieldList();
- if (mfl)
+ for (const auto &vmd : md->enumFieldList())
{
- MemberListIterator vmli(*mfl);
- MemberDef *vmd;
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ MemberDefMutable *vmdm = toMemberDefMutable(vmd);
+ if (vmdm)
{
- MemberDefMutable *vmdm = toMemberDefMutable(vmd);
- if (vmdm)
+ QCString vtype=vmd->typeString();
+ if ((vtype.find(name))!=-1)
{
- QCString vtype=vmd->typeString();
- if ((vtype.find(name))!=-1)
- {
- vmdm->setAnonymousEnumType(md);
- }
+ vmdm->setAnonymousEnumType(md);
}
}
}
@@ -339,14 +273,12 @@ void MemberList::setAnonymousEnumType()
int MemberList::countEnumValues(const MemberDef *md) const
{
int numEnumValues=0;
- MemberListIterator vmli(*this);
- const MemberDef *vmd;
QCString name(md->name());
int i=name.findRev("::");
if (i!=-1) name=name.right(name.length()-i-2);
if (name[0]=='@')
{
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ for (const auto &vmd : m_members)
{
QCString vtype=vmd->typeString();
if ((vtype.find(name))!=-1)
@@ -360,9 +292,7 @@ int MemberList::countEnumValues(const MemberDef *md) const
bool MemberList::declVisible() const
{
- MemberListIterator mli(*this);
- const MemberDef *md;
- for ( ; (md=mli.current()); ++mli )
+ for (const auto &md : m_members)
{
if (md->isBriefSectionVisible())
{
@@ -410,7 +340,7 @@ bool MemberList::declVisible() const
void MemberList::writePlainDeclarations(OutputList &ol,
const ClassDef *cd,const NamespaceDef *nd,const FileDef *fd,
- const GroupDef *gd,const ClassDef *inheritedFrom,const char *inheritId
+ const GroupDef *gd,const ClassDef *inheritedFrom,const QCString &inheritId
) const
{
//printf("----- writePlainDeclaration() ----\n");
@@ -430,12 +360,10 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.pushGeneratorState();
bool first=TRUE;
- const MemberDef *md;
- MemberListIterator mli(*this);
- for ( ; (md=mli.current()); ++mli )
+ for (const auto &md : m_members)
{
//printf(">>> Member '%s' type=%d visible=%d\n",
- // md->name().data(),md->memberType(),md->isBriefSectionVisible());
+ // qPrint(md->name()),md->memberType(),md->isBriefSectionVisible());
if ((inheritedFrom==0 || !md->isReimplementedBy(inheritedFrom)) &&
md->isBriefSectionVisible())
{
@@ -478,7 +406,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
bool detailsLinkable = md->isDetailedSectionLinkable();
if (!detailsLinkable)
{
- ol.startDoxyAnchor(md->getOutputFileBase(),0,md->anchor(),md->name(),QCString());
+ ol.startDoxyAnchor(md->getOutputFileBase(),QCString(),md->anchor(),md->name(),QCString());
}
if (md->isSliceLocal())
{
@@ -503,7 +431,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
cd,md,
md->briefDescription(),
TRUE,FALSE,
- 0,TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)
+ QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)
);
if (rootNode && !rootNode->isEmpty())
{
@@ -557,7 +485,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
// no variables of the anonymous compound type exist.
if (cd)
{
- for ( mli.toFirst(); (md=mli.current()) ; ++mli )
+ for (const auto &md : m_members)
{
if (md->fromAnonymousScope() && !md->anonymousDeclShown())
{
@@ -604,7 +532,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
*/
void MemberList::writeDeclarations(OutputList &ol,
const ClassDef *cd,const NamespaceDef *nd,const FileDef *fd,const GroupDef *gd,
- const char *title,const char *subtitle, bool showEnumValues,
+ const QCString &title,const QCString &subtitle, bool showEnumValues,
bool showInline,const ClassDef *inheritedFrom,MemberListType lt) const
{
(void)showEnumValues; // unused
@@ -633,7 +561,7 @@ void MemberList::writeDeclarations(OutputList &ol,
ol.disableAllBut(OutputGenerator::Html);
inheritId = substitute(listTypeAsString(lt),"-","_")+"_"+
stripPath(cd->getOutputFileBase());
- if (title)
+ if (!title.isEmpty())
{
ol.writeInheritedSectionTitle(inheritId,cd->getReference(),
cd->getOutputFileBase(),
@@ -644,7 +572,7 @@ void MemberList::writeDeclarations(OutputList &ol,
}
else if (num>numEnumValues)
{
- if (title)
+ if (!title.isEmpty())
{
if (showInline)
{
@@ -664,17 +592,12 @@ void MemberList::writeDeclarations(OutputList &ol,
ol.endMemberHeader();
}
}
- if (subtitle)
+ if (!subtitle.stripWhiteSpace().isEmpty())
{
- QCString st=subtitle;
- st = st.stripWhiteSpace();
- if (!st.isEmpty())
- {
- ol.startMemberSubtitle();
- ol.generateDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,
- 0,FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
- ol.endMemberSubtitle();
- }
+ ol.startMemberSubtitle();
+ ol.generateDoc("[generated]",-1,ctx,0,subtitle,FALSE,FALSE,
+ QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
+ ol.endMemberSubtitle();
}
}
if (num>numEnumValues)
@@ -700,7 +623,7 @@ void MemberList::writeDeclarations(OutputList &ol,
bool hasHeader=!mg->header().isEmpty() && mg->header()!="[NOHEADER]";
if (inheritId.isEmpty())
{
- //printf("mg->header=%s hasHeader=%d\n",mg->header().data(),hasHeader);
+ //printf("mg->header=%s hasHeader=%d\n",qPrint(mg->header()),hasHeader);
ol.startMemberGroupHeader(hasHeader);
if (hasHeader)
{
@@ -712,7 +635,7 @@ void MemberList::writeDeclarations(OutputList &ol,
//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));
+ QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
ol.endMemberGroupDocs();
}
ol.startMemberGroup();
@@ -739,8 +662,8 @@ void MemberList::writeDeclarations(OutputList &ol,
}
void MemberList::writeDocumentation(OutputList &ol,
- const char *scopeName, const Definition *container,
- const char *title,bool showEnumValues,bool showInline) const
+ const QCString &scopeName, const Definition *container,
+ const QCString &title,bool showEnumValues,bool showInline) const
{
if (numDocMembers()==-1)
{
@@ -751,7 +674,7 @@ void MemberList::writeDocumentation(OutputList &ol,
if (numDocMembers()==0) return;
if (!showEnumValues && numDocMembers()<=numDocEnumValues()) return;
- if (title)
+ if (!title.isEmpty())
{
ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
@@ -763,45 +686,36 @@ void MemberList::writeDocumentation(OutputList &ol,
}
ol.startMemberDocList();
- MemberListIterator mli(*this);
- const MemberDef *md;
-
+ struct OverloadInfo
+ {
+ uint count = 1;
+ uint total = 0;
+ };
+ std::unordered_map<std::string,OverloadInfo> overloadInfo;
// count the number of overloaded members
- QDict<uint> overloadTotalDict(67);
- QDict<uint> overloadCountDict(67);
- overloadTotalDict.setAutoDelete(TRUE);
- overloadCountDict.setAutoDelete(TRUE);
- for (mli.toFirst() ; (md=mli.current()) ; ++mli)
+ for (const auto &md : m_members)
{
if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
!(md->isEnumValue() && !showInline))
{
- uint *pCount = overloadTotalDict.find(md->name());
- if (pCount)
- {
- (*pCount)++;
- }
- else
- {
- overloadTotalDict.insert(md->name(),new uint(1));
- overloadCountDict.insert(md->name(),new uint(1));
- }
+ auto it = overloadInfo.insert(std::make_pair(md->name().str(),OverloadInfo())).first;
+ it->second.total++;
}
}
- for (mli.toFirst() ; (md=mli.current()) ; ++mli)
+ for (const auto &md : m_members)
{
if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) &&
!(md->isEnumValue() && !showInline))
{
- uint overloadCount = *overloadTotalDict.find(md->name());
- uint *pCount = overloadCountDict.find(md->name());
+ auto it = overloadInfo.find(md->name().str());
+ uint overloadCount = it->second.total;
+ uint &count = it->second.count;
MemberDefMutable *mdm = toMemberDefMutable(md);
if (mdm)
{
- mdm->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container,
+ mdm->writeDocumentation(this,count++,overloadCount,ol,scopeName,container,
m_inGroup,showEnumValues,showInline);
- (*pCount)++;
}
}
}
@@ -826,9 +740,7 @@ void MemberList::writeSimpleDocumentation(OutputList &ol,
cd = toClassDef(container);
}
ol.startMemberDocSimple(cd && cd->isJavaEnum());
- MemberListIterator mli(*this);
- const MemberDef *md;
- for ( ; (md=mli.current()) ; ++mli)
+ for (const auto &md : m_members)
{
MemberDefMutable *mdm = toMemberDefMutable(md);
if (mdm)
@@ -841,44 +753,38 @@ void MemberList::writeSimpleDocumentation(OutputList &ol,
// separate member pages
void MemberList::writeDocumentationPage(OutputList &ol,
- const char *scopeName, const DefinitionMutable *container) const
+ const QCString &scopeName, const DefinitionMutable *container) const
{
static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
+ struct OverloadInfo
+ {
+ uint count = 1;
+ uint total = 0;
+ };
+ std::unordered_map<std::string,OverloadInfo> overloadInfo;
+
// count the number of overloaded members
- QDict<uint> overloadTotalDict(67);
- QDict<uint> overloadCountDict(67);
- overloadTotalDict.setAutoDelete(TRUE);
- overloadCountDict.setAutoDelete(TRUE);
- MemberListIterator mli(*this);
- const MemberDef *imd;
- for (mli.toFirst() ; (imd=mli.current()) ; ++mli)
+ for (const auto &imd : m_members)
{
MemberDefMutable *md = toMemberDefMutable(imd);
- if (md->isDetailedSectionLinkable())
+ if (md && md->isDetailedSectionLinkable())
{
- uint *pCount = overloadTotalDict.find(md->name());
- if (pCount)
- {
- (*pCount)++;
- }
- else
- {
- overloadTotalDict.insert(md->name(),new uint(1));
- overloadCountDict.insert(md->name(),new uint(1));
- }
+ auto it = overloadInfo.insert(std::make_pair(md->name().str(),OverloadInfo())).first;
+ it->second.total++;
}
}
- for ( mli.toFirst() ; (imd=mli.current()) ; ++mli)
+ for (const auto &imd : m_members)
{
Definition *container_d = toDefinition(const_cast<DefinitionMutable*>(container));
MemberDefMutable *md = toMemberDefMutable(imd);
- if (md->isDetailedSectionLinkable())
+ if (md && md->isDetailedSectionLinkable())
{
- uint overloadCount = *overloadTotalDict.find(md->name());
- uint *pCount = overloadCountDict.find(md->name());
+ auto it = overloadInfo.find(md->name().str());
+ uint overloadCount = it->second.total;
+ uint &count = it->second.count;
QCString diskName=md->getOutputFileBase();
QCString title=md->qualifiedName();
startFile(ol,diskName,md->name(),title,HLI_None,!generateTreeView,diskName);
@@ -891,8 +797,7 @@ void MemberList::writeDocumentationPage(OutputList &ol,
if (generateTreeView)
{
- md->writeDocumentation(this,*pCount,overloadCount,ol,scopeName,container_d,m_inGroup);
- (*pCount)++;
+ md->writeDocumentation(this,count++,overloadCount,ol,scopeName,container_d,m_inGroup);
ol.endContents();
endFileWithNavPath(container_d,ol);
@@ -908,8 +813,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_d,m_inGroup);
- (*pCount)++;
+ md->writeDocumentation(this,count++,overloadCount,ol,scopeName,container_d,m_inGroup);
ol.writeString(" </td>\n");
ol.writeString(" </tr>\n");
@@ -932,26 +836,22 @@ void MemberList::addMemberGroup(MemberGroup *mg)
void MemberList::addListReferences(Definition *def)
{
- MemberListIterator mli(*this);
- MemberDef *imd;
- for ( ; (imd=mli.current()) ; ++mli)
+ for (const auto &imd : m_members)
{
MemberDefMutable *md = toMemberDefMutable(imd);
if (md && !md->isAlias() && (md->getGroupDef()==0 || def->definitionType()==Definition::TypeGroup))
{
md->addListReference(def);
- const MemberList *enumFields = md->enumFieldList();
- if (md->memberType()==MemberType_Enumeration && enumFields)
+ const MemberList &enumFields = md->enumFieldList();
+ if (md->memberType()==MemberType_Enumeration && !enumFields.empty())
{
//printf(" Adding enum values!\n");
- MemberListIterator vmli(*enumFields);
- MemberDef *vmd;
- for ( ; (vmd=vmli.current()) ; ++vmli)
+ for (const auto &vmd : enumFields)
{
MemberDefMutable *vmdm = toMemberDefMutable(vmd);
if (vmdm)
{
- //printf(" adding %s\n",vmd->name().data());
+ //printf(" adding %s\n",qPrint(vmd->name()));
vmdm->addListReference(def);
}
}
@@ -966,9 +866,7 @@ void MemberList::addListReferences(Definition *def)
void MemberList::findSectionsInDocumentation(const Definition *d)
{
- MemberListIterator mli(*this);
- MemberDef *imd;
- for ( ; (imd=mli.current()) ; ++mli)
+ for (const auto &imd : m_members)
{
MemberDefMutable *md = toMemberDefMutable(imd);
if (md)
@@ -1045,11 +943,9 @@ QCString MemberList::listTypeAsString(MemberListType type)
return "";
}
-void MemberList::writeTagFile(FTextStream &tagFile)
+void MemberList::writeTagFile(TextStream &tagFile)
{
- MemberListIterator mli(*this);
- MemberDef *imd;
- for ( ; (imd=mli.current()) ; ++mli)
+ for (const auto &imd : m_members)
{
MemberDefMutable *md = toMemberDefMutable(imd);
if (md)
@@ -1057,11 +953,9 @@ void MemberList::writeTagFile(FTextStream &tagFile)
if (md->getLanguage()!=SrcLangExt_VHDL)
{
md->writeTagFile(tagFile);
- if (md->memberType()==MemberType_Enumeration && md->enumFieldList() && !md->isStrong())
+ if (md->memberType()==MemberType_Enumeration && !md->isStrong())
{
- MemberListIterator vmli(*md->enumFieldList());
- MemberDef *ivmd;
- for ( ; (ivmd=vmli.current()) ; ++vmli)
+ for (const auto &ivmd : md->enumFieldList())
{
MemberDefMutable *vmd = toMemberDefMutable(ivmd);
if (vmd)
@@ -1087,9 +981,7 @@ void MemberList::writeTagFile(FTextStream &tagFile)
void MemberList::setAnchors()
{
//int count=0;
- MemberListIterator mli(*this);
- MemberDef *md;
- for (;(md=mli.current());++mli)
+ for (const auto &md : m_members)
{
MemberDefMutable *mdm = toMemberDefMutable(md);
if (mdm && !md->isReference())