summaryrefslogtreecommitdiffstats
path: root/src/groupdef.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2020-04-24 06:27:22 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2020-04-24 07:03:09 (GMT)
commit9e2b6a2dac870b5daabde118c5327281e3f79ba2 (patch)
tree39e49bae6eeb116f19be64a19eb9d3ff26a6c36c /src/groupdef.cpp
parentcd581388f3d013c501e3cefbaf3e81cf93d46fcb (diff)
downloadDoxygen-9e2b6a2dac870b5daabde118c5327281e3f79ba2.zip
Doxygen-9e2b6a2dac870b5daabde118c5327281e3f79ba2.tar.gz
Doxygen-9e2b6a2dac870b5daabde118c5327281e3f79ba2.tar.bz2
Performance improvements after profiling
In some cases performance dropped when upgrading from version 1.8.16 to 1.8.17 or 1.8.18. With these changes the performance should be back to normal again.
Diffstat (limited to 'src/groupdef.cpp')
-rw-r--r--src/groupdef.cpp164
1 files changed, 82 insertions, 82 deletions
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 5af1525..90de94b 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.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.
*
@@ -58,7 +58,7 @@ class GroupDefImpl : public DefinitionImpl, public GroupDef
virtual const char *groupTitle() const { return m_title; }
virtual void setGroupTitle( const char *newtitle );
virtual bool hasGroupTitle( ) const { return m_titleSet; }
- virtual void addFile(const FileDef *def);
+ virtual void addFile(const FileDef *def);
virtual bool addClass(const ClassDef *def);
virtual bool addNamespace(const NamespaceDef *def);
virtual void addGroup(const GroupDef *def);
@@ -105,8 +105,8 @@ class GroupDefImpl : public DefinitionImpl, public GroupDef
virtual PageSDict * getExamples() const { return m_exampleDict; }
virtual bool hasDetailedDescription() const;
virtual void sortSubGroups();
-
- private:
+
+ private:
void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
MemberList *createMemberList(MemberListType lt);
void addMemberToList(MemberListType lt,MemberDef *md);
@@ -284,13 +284,13 @@ bool GroupDefImpl::addClass(const ClassDef *cd)
//printf("i=%d\n",i);
if (i>0)
{
- // add nested classes (e.g. A::B, A::C) after their parent (A) in
+ // add nested classes (e.g. A::B, A::C) after their parent (A) in
// order of insertion
QCString scope = qn.left(i);
int j=m_classSDict->findAt(scope);
if (j!=-1)
{
- while (j<(int)m_classSDict->count() &&
+ while (j<(int)m_classSDict->count() &&
m_classSDict->at(j)->qualifiedName().left(i)==scope)
{
//printf("skipping over %s\n",classSDict->at(j)->qualifiedName().data());
@@ -319,7 +319,7 @@ bool GroupDefImpl::addNamespace(const NamespaceDef *def)
if (m_namespaceSDict->find(def->name())==0)
{
if (sortBriefDocs)
- m_namespaceSDict->inSort(def->name(),def);
+ m_namespaceSDict->inSort(def->name(),def);
else
m_namespaceSDict->append(def->name(),def);
return TRUE;
@@ -331,7 +331,7 @@ void GroupDefImpl::addDir(const DirDef *def)
{
if (def->isHidden()) return;
if (Config_getBool(SORT_BRIEF_DOCS))
- m_dirList->inSort(def);
+ m_dirList->inSort(def);
else
m_dirList->append(def);
}
@@ -381,7 +381,7 @@ bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
MemberNameInfo *mni=0;
if ((mni=(*m_allMemberNameInfoSDict)[md->name()]))
{ // member with this name already found
- MemberNameInfoIterator srcMnii(*mni);
+ MemberNameInfoIterator srcMnii(*mni);
const MemberInfo *srcMi;
for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
{
@@ -391,7 +391,7 @@ bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
// both inside a file => definition and declaration do not have to be in the same file
(srcMd->getOuterScope()->definitionType()==Definition::TypeFile &&
- md->getOuterScope()->definitionType()==Definition::TypeFile);
+ md->getOuterScope()->definitionType()==Definition::TypeFile);
const ArgumentList &srcMdAl = srcMd->argumentList();
const ArgumentList &mdAl = md->argumentList();
@@ -400,20 +400,20 @@ bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
if (srcMd->isFunction() && md->isFunction() && // both are a function
(tSrcMdAl.size()==tMdAl.size()) && // same number of template arguments
- matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),srcMdAl,
- md->getOuterScope(),md->getFileDef(),mdAl,
+ matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),&srcMdAl,
+ md->getOuterScope(),md->getFileDef(),&mdAl,
TRUE
) && // matching parameters
sameScope // both are found in the same scope
)
{
- if (srcMd->getGroupAlias()==0)
+ if (srcMd->getGroupAlias()==0)
{
- md->setGroupAlias(srcMd);
+ md->setGroupAlias(srcMd);
}
else if (md!=srcMd->getGroupAlias())
{
- md->setGroupAlias(srcMd->getGroupAlias());
+ md->setGroupAlias(srcMd->getGroupAlias());
}
return FALSE; // member is the same as one that is already added
}
@@ -427,59 +427,59 @@ bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
m_allMemberNameInfoSDict->append(mni->memberName(),mni);
}
//printf("Added member!\n");
- m_allMemberList->append(md);
+ m_allMemberList->append(md);
switch(md->memberType())
{
- case MemberType_Variable:
+ case MemberType_Variable:
if (!docOnly)
{
addMemberToList(MemberListType_decVarMembers,md);
}
addMemberToList(MemberListType_docVarMembers,md);
break;
- case MemberType_Function:
+ case MemberType_Function:
if (!docOnly)
{
addMemberToList(MemberListType_decFuncMembers,md);
}
addMemberToList(MemberListType_docFuncMembers,md);
break;
- case MemberType_Typedef:
+ case MemberType_Typedef:
if (!docOnly)
{
addMemberToList(MemberListType_decTypedefMembers,md);
}
addMemberToList(MemberListType_docTypedefMembers,md);
break;
- case MemberType_Enumeration:
+ case MemberType_Enumeration:
if (!docOnly)
{
addMemberToList(MemberListType_decEnumMembers,md);
}
addMemberToList(MemberListType_docEnumMembers,md);
break;
- case MemberType_EnumValue:
+ case MemberType_EnumValue:
if (!docOnly)
{
addMemberToList(MemberListType_decEnumValMembers,md);
}
addMemberToList(MemberListType_docEnumValMembers,md);
break;
- case MemberType_Define:
+ case MemberType_Define:
if (!docOnly)
{
addMemberToList(MemberListType_decDefineMembers,md);
}
addMemberToList(MemberListType_docDefineMembers,md);
break;
- case MemberType_Signal:
+ case MemberType_Signal:
if (!docOnly)
{
addMemberToList(MemberListType_decSignalMembers,md);
}
addMemberToList(MemberListType_docSignalMembers,md);
break;
- case MemberType_Slot:
+ case MemberType_Slot:
if (md->protection()==Public)
{
if (!docOnly)
@@ -505,21 +505,21 @@ bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
addMemberToList(MemberListType_docPriSlotMembers,md);
}
break;
- case MemberType_Event:
+ case MemberType_Event:
if (!docOnly)
{
addMemberToList(MemberListType_decEventMembers,md);
}
addMemberToList(MemberListType_docEventMembers,md);
break;
- case MemberType_Property:
+ case MemberType_Property:
if (!docOnly)
{
addMemberToList(MemberListType_decPropMembers,md);
}
addMemberToList(MemberListType_docPropMembers,md);
break;
- case MemberType_Friend:
+ case MemberType_Friend:
if (!docOnly)
{
addMemberToList(MemberListType_decFriendMembers,md);
@@ -564,31 +564,31 @@ void GroupDefImpl::removeMember(MemberDef *md)
removeMemberFromList(MemberListType_decVarMembers,md);
removeMemberFromList(MemberListType_docVarMembers,md);
break;
- case MemberType_Function:
+ case MemberType_Function:
removeMemberFromList(MemberListType_decFuncMembers,md);
removeMemberFromList(MemberListType_docFuncMembers,md);
break;
- case MemberType_Typedef:
+ case MemberType_Typedef:
removeMemberFromList(MemberListType_decTypedefMembers,md);
removeMemberFromList(MemberListType_docTypedefMembers,md);
break;
- case MemberType_Enumeration:
+ case MemberType_Enumeration:
removeMemberFromList(MemberListType_decEnumMembers,md);
removeMemberFromList(MemberListType_docEnumMembers,md);
break;
- case MemberType_EnumValue:
+ case MemberType_EnumValue:
removeMemberFromList(MemberListType_decEnumValMembers,md);
removeMemberFromList(MemberListType_docEnumValMembers,md);
break;
- case MemberType_Define:
+ case MemberType_Define:
removeMemberFromList(MemberListType_decDefineMembers,md);
removeMemberFromList(MemberListType_docDefineMembers,md);
break;
- case MemberType_Signal:
+ case MemberType_Signal:
removeMemberFromList(MemberListType_decSignalMembers,md);
removeMemberFromList(MemberListType_docSignalMembers,md);
break;
- case MemberType_Slot:
+ case MemberType_Slot:
if (md->protection()==Public)
{
removeMemberFromList(MemberListType_decPubSlotMembers,md);
@@ -605,15 +605,15 @@ void GroupDefImpl::removeMember(MemberDef *md)
removeMemberFromList(MemberListType_docPriSlotMembers,md);
}
break;
- case MemberType_Event:
+ case MemberType_Event:
removeMemberFromList(MemberListType_decEventMembers,md);
removeMemberFromList(MemberListType_docEventMembers,md);
break;
- case MemberType_Property:
+ case MemberType_Property:
removeMemberFromList(MemberListType_decPropMembers,md);
removeMemberFromList(MemberListType_docPropMembers,md);
break;
- case MemberType_Friend:
+ case MemberType_Friend:
removeMemberFromList(MemberListType_decFriendMembers,md);
removeMemberFromList(MemberListType_docFriendMembers,md);
break;
@@ -691,7 +691,7 @@ int GroupDefImpl::numDocMembers() const
m_exampleDict->count();
}
-/*! Compute the HTML anchor names for all members in the group */
+/*! Compute the HTML anchor names for all members in the group */
void GroupDefImpl::computeAnchors()
{
//printf("GroupDefImpl::computeAnchors()\n");
@@ -843,7 +843,7 @@ void GroupDefImpl::writeTagFile(FTextStream &tagFile)
void GroupDefImpl::writeDetailedDescription(OutputList &ol,const QCString &title)
{
- if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
+ if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
|| !documentation().isEmpty() || !inbodyDocumentation().isEmpty()
)
{
@@ -1183,7 +1183,7 @@ void GroupDefImpl::writeSummaryLinks(OutputList &ol) const
SrcLangExt lang = getLanguage();
for (eli.toFirst();(lde=eli.current());++eli)
{
- if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classSDict->declVisible()) ||
+ if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classSDict->declVisible()) ||
(lde->kind()==LayoutDocEntry::GroupNamespaces && m_namespaceSDict->declVisible()) ||
(lde->kind()==LayoutDocEntry::GroupFiles && m_fileList->count()>0) ||
(lde->kind()==LayoutDocEntry::GroupNestedGroups && m_groupList->count()>0) ||
@@ -1191,7 +1191,7 @@ void GroupDefImpl::writeSummaryLinks(OutputList &ol) const
)
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
- QCString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
+ QCString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" :
lde->kind()==LayoutDocEntry::GroupFiles ? "files" :
lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" :
@@ -1266,84 +1266,84 @@ void GroupDefImpl::writeDocumentation(OutputList &ol)
{
switch (lde->kind())
{
- case LayoutDocEntry::BriefDesc:
+ case LayoutDocEntry::BriefDesc:
writeBriefDescription(ol);
- break;
- case LayoutDocEntry::MemberDeclStart:
+ break;
+ case LayoutDocEntry::MemberDeclStart:
startMemberDeclarations(ol);
- break;
- case LayoutDocEntry::GroupClasses:
+ break;
+ case LayoutDocEntry::GroupClasses:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeClasses(ol,ls->title(lang));
}
- break;
- case LayoutDocEntry::GroupInlineClasses:
+ break;
+ case LayoutDocEntry::GroupInlineClasses:
{
writeInlineClasses(ol);
}
break;
- case LayoutDocEntry::GroupNamespaces:
+ case LayoutDocEntry::GroupNamespaces:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeNamespaces(ol,ls->title(lang));
}
- break;
- case LayoutDocEntry::MemberGroups:
+ break;
+ case LayoutDocEntry::MemberGroups:
writeMemberGroups(ol);
- break;
- case LayoutDocEntry::MemberDecl:
+ break;
+ case LayoutDocEntry::MemberDecl:
{
LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
}
- break;
- case LayoutDocEntry::MemberDeclEnd:
+ break;
+ case LayoutDocEntry::MemberDeclEnd:
endMemberDeclarations(ol);
break;
- case LayoutDocEntry::DetailedDesc:
+ case LayoutDocEntry::DetailedDesc:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeDetailedDescription(ol,ls->title(lang));
}
break;
- case LayoutDocEntry::MemberDefStart:
+ case LayoutDocEntry::MemberDefStart:
startMemberDocumentation(ol);
- break;
- case LayoutDocEntry::MemberDef:
+ break;
+ case LayoutDocEntry::MemberDef:
{
LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
}
break;
- case LayoutDocEntry::MemberDefEnd:
+ case LayoutDocEntry::MemberDefEnd:
endMemberDocumentation(ol);
break;
- case LayoutDocEntry::GroupNestedGroups:
+ case LayoutDocEntry::GroupNestedGroups:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeNestedGroups(ol,ls->title(lang));
}
break;
- case LayoutDocEntry::GroupPageDocs:
+ case LayoutDocEntry::GroupPageDocs:
writePageDocumentation(ol);
break;
- case LayoutDocEntry::GroupDirs:
+ case LayoutDocEntry::GroupDirs:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeDirs(ol,ls->title(lang));
}
break;
- case LayoutDocEntry::GroupFiles:
+ case LayoutDocEntry::GroupFiles:
{
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
writeFiles(ol,ls->title(lang));
}
break;
- case LayoutDocEntry::GroupGraph:
+ case LayoutDocEntry::GroupGraph:
writeGroupGraph(ol);
break;
- case LayoutDocEntry::AuthorSection:
+ case LayoutDocEntry::AuthorSection:
writeAuthorSection(ol);
break;
case LayoutDocEntry::ClassIncludes:
@@ -1368,7 +1368,7 @@ void GroupDefImpl::writeDocumentation(OutputList &ol)
case LayoutDocEntry::FileConstantGroups:
case LayoutDocEntry::FileIncludes:
case LayoutDocEntry::FileIncludeGraph:
- case LayoutDocEntry::FileIncludedByGraph:
+ case LayoutDocEntry::FileIncludedByGraph:
case LayoutDocEntry::FileSourceLink:
case LayoutDocEntry::FileInlineClasses:
case LayoutDocEntry::DirSubDirs:
@@ -1382,7 +1382,7 @@ void GroupDefImpl::writeDocumentation(OutputList &ol)
//---------------------------------------- end flexible part -------------------------------
- endFile(ol);
+ endFile(ol);
ol.popGeneratorState();
@@ -1398,7 +1398,7 @@ void GroupDefImpl::writeMemberPages(OutputList &ol)
{
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
-
+
QListIterator<MemberList> mli(m_memberLists);
MemberList *ml;
for (mli.toFirst();(ml=mli.current());++mli)
@@ -1462,7 +1462,7 @@ void addClassToGroups(const Entry *root,ClassDef *cd)
GroupDef *gd=0;
if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
{
- if (gd->addClass(cd))
+ if (gd->addClass(cd))
{
cd->makePartOfGroup(gd);
}
@@ -1532,7 +1532,7 @@ void addGroupToGroups(const Entry *root,GroupDef *subGroup)
/*! Add a member to the group with the highest priority */
void addMemberToGroups(const Entry *root,MemberDef *md)
{
- //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
+ //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
// root, root->name.data(), md, md->name().data(), root->groups->count() );
// Search entry's group list for group with highest pri.
@@ -1545,7 +1545,7 @@ void addMemberToGroups(const Entry *root,MemberDef *md)
(gd=Doxygen::groupSDict->find(g.groupname)) &&
g.pri >= pri)
{
- if (fgd && gd!=fgd && g.pri==pri)
+ if (fgd && gd!=fgd && g.pri==pri)
{
warn(root->fileName.data(), root->startLine,
"Member %s found in multiple %s groups! "
@@ -1575,7 +1575,7 @@ void addMemberToGroups(const Entry *root,MemberDef *md)
{
bool moveit = FALSE;
- // move member from one group to another if
+ // move member from one group to another if
// - the new one has a higher priority
// - the new entry has the same priority, but with docs where the old one had no docs
if (md->getGroupPri()<pri)
@@ -1624,7 +1624,7 @@ void addMemberToGroups(const Entry *root,MemberDef *md)
md->setGroupDef(fgd,pri,root->fileName,root->startLine,
!root->doc.isEmpty());
ClassDef *cd = md->getClassDefOfAnonymousType();
- if (cd)
+ if (cd)
{
cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0);
}
@@ -1741,12 +1741,12 @@ void GroupDefImpl::writeMemberDeclarations(OutputList &ol,MemberListType lt,cons
static bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
MemberList * ml = getMemberList(lt);
- if (optimizeVhdl && ml)
+ if (optimizeVhdl && ml)
{
VhdlDocGen::writeVhdlDeclarations(ml,ol,this,0,0,0);
return;
}
- if (ml)
+ if (ml)
{
ml->writeDeclarations(ol,0,0,0,this,title,0);
}
@@ -1761,12 +1761,12 @@ void GroupDefImpl::writeMemberDocumentation(OutputList &ol,MemberListType lt,con
void GroupDefImpl::removeMemberFromList(MemberListType lt,MemberDef *md)
{
MemberList *ml = getMemberList(lt);
- if (ml) ml->remove(md);
+ if (ml) ml->remove(md);
}
-void GroupDefImpl::sortSubGroups()
-{
- m_groupList->sort();
+void GroupDefImpl::sortSubGroups()
+{
+ m_groupList->sort();
}
bool GroupDefImpl::isLinkableInProject() const