diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2020-04-24 06:27:22 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2020-04-24 07:03:09 (GMT) |
commit | 9e2b6a2dac870b5daabde118c5327281e3f79ba2 (patch) | |
tree | 39e49bae6eeb116f19be64a19eb9d3ff26a6c36c /src/groupdef.cpp | |
parent | cd581388f3d013c501e3cefbaf3e81cf93d46fcb (diff) | |
download | Doxygen-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.cpp | 164 |
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 |