diff options
-rw-r--r-- | src/code.l | 2 | ||||
-rw-r--r-- | src/context.cpp | 72 | ||||
-rw-r--r-- | src/context.h | 4 | ||||
-rw-r--r-- | src/docbookgen.cpp | 14 | ||||
-rw-r--r-- | src/docparser.cpp | 2 | ||||
-rw-r--r-- | src/doxygen.cpp | 127 | ||||
-rw-r--r-- | src/doxygen.h | 4 | ||||
-rw-r--r-- | src/fortrancode.l | 2 | ||||
-rw-r--r-- | src/index.cpp | 30 | ||||
-rw-r--r-- | src/latexgen.cpp | 39 | ||||
-rw-r--r-- | src/namespacedef.h | 53 | ||||
-rw-r--r-- | src/perlmodgen.cpp | 6 | ||||
-rw-r--r-- | src/rtfgen.cpp | 45 | ||||
-rw-r--r-- | src/searchindex.cpp | 8 | ||||
-rw-r--r-- | src/sqlite3gen.cpp | 6 | ||||
-rw-r--r-- | src/util.cpp | 12 | ||||
-rw-r--r-- | src/xmlgen.cpp | 6 |
17 files changed, 150 insertions, 282 deletions
@@ -2530,7 +2530,7 @@ static void addUsingDirective(yyscan_t yyscanner,const char *name) struct yyguts_t *yyg = (struct yyguts_t*)yyscanner; if (yyextra->sourceFileDef && name) { - const NamespaceDef *nd = Doxygen::namespaceSDict->find(name); + const NamespaceDef *nd = Doxygen::namespaceLinkedMap->find(name); if (nd) { yyextra->sourceFileDef->addUsingDirective(nd); diff --git a/src/context.cpp b/src/context.cpp index 8c6de66..b7a547f 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -6465,42 +6465,33 @@ class NestingContext::Private : public GenericNodeListContext Private(const NestingNodeContext *parent,int level) : m_parent(parent), m_level(level), m_index(0) {} - void addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) + void addNamespace(const NamespaceDef *nd,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) { - NamespaceSDict::Iterator nli(nsDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + if (!nd->isAnonymous() && + (!rootOnly || nd->getOuterScope()==Doxygen::globalScope)) { - if (!nd->isAnonymous() && - (!rootOnly || nd->getOuterScope()==Doxygen::globalScope)) + bool hasChildren = namespaceHasNestedNamespace(nd); + bool isLinkable = nd->isLinkableInProject(); + if (isLinkable || hasChildren) { - bool hasChildren = namespaceHasNestedNamespace(nd); - bool isLinkable = nd->isLinkableInProject(); - if (isLinkable || hasChildren) - { - NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,nd,m_index,m_level,addClasses,FALSE,FALSE,visitedClasses); - append(nnc); - m_index++; - } + NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,nd,m_index,m_level,addClasses,FALSE,FALSE,visitedClasses); + append(nnc); + m_index++; } } } + void addNamespaces(const NamespaceLinkedMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) + { + for (const auto &nd : nsLinkedMap) + { + addNamespace(nd.get(),rootOnly,addClasses,visitedClasses); + } + } void addNamespaces(const NamespaceLinkedRefMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) { for (const auto &nd : nsLinkedMap) { - if (!nd->isAnonymous() && - (!rootOnly || nd->getOuterScope()==Doxygen::globalScope)) - { - bool hasChildren = namespaceHasNestedNamespace(nd); - bool isLinkable = nd->isLinkableInProject(); - if (isLinkable || hasChildren) - { - NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,nd,m_index,m_level,addClasses,FALSE,FALSE,visitedClasses); - append(nnc); - m_index++; - } - } + addNamespace(nd,rootOnly,addClasses,visitedClasses); } } void addClass(const ClassDef *cd,bool rootOnly,ClassDefSet &visitedClasses) @@ -6730,9 +6721,9 @@ void NestingContext::addClasses(const ClassLinkedMap &clLinkedMap,bool rootOnly, p->addClasses(clLinkedMap,rootOnly,visitedClasses); } -void NestingContext::addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) +void NestingContext::addNamespaces(const NamespaceLinkedMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) { - p->addNamespaces(nsDict,rootOnly,addClasses,visitedClasses); + p->addNamespaces(nsLinkedMap,rootOnly,addClasses,visitedClasses); } void NestingContext::addNamespaces(const NamespaceLinkedRefMap &nsLinkedRefMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses) @@ -6796,14 +6787,8 @@ class ClassTreeContext::Private { m_classTree.reset(NestingContext::alloc(0,0)); ClassDefSet visitedClasses; - if (Doxygen::namespaceSDict) - { - m_classTree->addNamespaces(*Doxygen::namespaceSDict,TRUE,TRUE,visitedClasses); - } - if (Doxygen::classLinkedMap) - { - m_classTree->addClasses(*Doxygen::classLinkedMap,TRUE,visitedClasses); - } + m_classTree->addNamespaces(*Doxygen::namespaceLinkedMap,TRUE,TRUE,visitedClasses); + m_classTree->addClasses(*Doxygen::classLinkedMap,TRUE,visitedClasses); //%% Nesting tree static bool init=FALSE; if (!init) @@ -6917,15 +6902,13 @@ TemplateVariant ClassTreeContext::get(const char *name) const class NamespaceListContext::Private : public GenericNodeListContext { public: - void addNamespaces(const NamespaceSDict &nsDict) + void addNamespaces(const NamespaceLinkedMap &nsLinkedMap) { - NamespaceSDict::Iterator nli(nsDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : nsLinkedMap) { if (nd->isLinkableInProject()) { - append(NamespaceContext::alloc(nd)); + append(NamespaceContext::alloc(nd.get())); } } } @@ -6934,7 +6917,7 @@ class NamespaceListContext::Private : public GenericNodeListContext NamespaceListContext::NamespaceListContext() : RefCountedContext("NamespaceListContext") { p = new Private; - p->addNamespaces(*Doxygen::namespaceSDict); + p->addNamespaces(*Doxygen::namespaceLinkedMap); } NamespaceListContext::~NamespaceListContext() @@ -6969,10 +6952,7 @@ class NamespaceTreeContext::Private { m_namespaceTree.reset(NestingContext::alloc(0,0)); ClassDefSet visitedClasses; - if (Doxygen::namespaceSDict) - { - m_namespaceTree->addNamespaces(*Doxygen::namespaceSDict,TRUE,FALSE,visitedClasses); - } + m_namespaceTree->addNamespaces(*Doxygen::namespaceLinkedMap,TRUE,FALSE,visitedClasses); //%% Nesting tree static bool init=FALSE; if (!init) diff --git a/src/context.h b/src/context.h index 25ce78b..1a2df8c 100644 --- a/src/context.h +++ b/src/context.h @@ -27,7 +27,7 @@ class Definition; class PageDef; class GroupDef; class NamespaceDef; -class NamespaceSDict; +class NamespaceLinkedMap; class NamespaceLinkedRefMap; class FileDef; class FileList; @@ -545,7 +545,7 @@ class NestingContext : public RefCountedContext, public TemplateListIntf virtual int addRef() { return RefCountedContext::addRef(); } virtual int release() { return RefCountedContext::release(); } - void addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses); + void addNamespaces(const NamespaceLinkedMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses); void addNamespaces(const NamespaceLinkedRefMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses); void addClasses(const ClassLinkedRefMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses); void addClasses(const ClassLinkedMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses); diff --git a/src/docbookgen.cpp b/src/docbookgen.cpp index d378703..2d0521b 100644 --- a/src/docbookgen.cpp +++ b/src/docbookgen.cpp @@ -532,24 +532,12 @@ DB_GEN_C2("IndexSections " << is) case isNamespaceDocumentation: { t << "</title>" << endl; - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - bool found=FALSE; - for (nli.toFirst();(nd=nli.current()) && !found;++nli) - { - if (nd->isLinkableInProject() && !nd->isAlias()) - { - t << "<xi:include href=\"" << nd->getOutputFileBase() << ".xml\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>" << endl; - found=TRUE; - } - } - while ((nd=nli.current())) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject() && !nd->isAlias()) { t << "<xi:include href=\"" << nd->getOutputFileBase() << ".xml\" xmlns:xi=\"http://www.w3.org/2001/XInclude\"/>" << endl; } - ++nli; } } t << "</chapter>\n"; diff --git a/src/docparser.cpp b/src/docparser.cpp index 9a71cf7..af9e6a8 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -778,7 +778,7 @@ static bool findDocsForMemberOrCompound(const char *commandName, *pDef=cd; return TRUE; } - nd = Doxygen::namespaceSDict->find(fullName); + nd = Doxygen::namespaceLinkedMap->find(fullName); if (nd) // namespace { *pDoc=nd->documentation(); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index f8bb5d5..3381323 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -119,7 +119,7 @@ extern void initResources(); // globally accessible variables ClassLinkedMap *Doxygen::classLinkedMap = 0; ClassLinkedMap *Doxygen::hiddenClassLinkedMap = 0; -NamespaceSDict *Doxygen::namespaceSDict = 0; +NamespaceLinkedMap *Doxygen::namespaceLinkedMap = 0; MemberNameLinkedMap *Doxygen::memberNameLinkedMap = 0; MemberNameLinkedMap *Doxygen::functionNameLinkedMap = 0; FileNameLinkedMap *Doxygen::inputNameLinkedMap = 0; @@ -182,7 +182,7 @@ void clearAll() Doxygen::classLinkedMap->clear(); Doxygen::hiddenClassLinkedMap->clear(); - Doxygen::namespaceSDict->clear(); + Doxygen::namespaceLinkedMap->clear(); Doxygen::pageSDict->clear(); Doxygen::exampleSDict->clear(); Doxygen::inputNameLinkedMap->clear(); @@ -732,7 +732,7 @@ static Definition *buildScopeFromQualifiedName(const QCString name, if (nsName.isEmpty()) return prevScope; if (!fullScope.isEmpty()) fullScope+="::"; fullScope+=nsName; - NamespaceDef *nd=Doxygen::namespaceSDict->find(fullScope); + NamespaceDef *nd=Doxygen::namespaceLinkedMap->find(fullScope); DefinitionMutable *innerScope = toDefinitionMutable(nd); ClassDef *cd=0; if (nd==0) cd = getClass(fullScope); @@ -744,14 +744,17 @@ static Definition *buildScopeFromQualifiedName(const QCString name, { // introduce bogus namespace //printf("++ adding dummy namespace %s to %s tagInfo=%p\n",nsName.data(),prevScope->name().data(),tagInfo); - NamespaceDefMutable *newNd=createNamespaceDef( - "[generated]",1,1,fullScope, - tagInfo?tagInfo->tagName:QCString(), - tagInfo?tagInfo->fileName:QCString()); + NamespaceDefMutable *newNd= + toNamespaceDefMutable( + Doxygen::namespaceLinkedMap->add(fullScope, + std::unique_ptr<NamespaceDef>( + createNamespaceDef( + "[generated]",1,1,fullScope, + tagInfo?tagInfo->tagName:QCString(), + tagInfo?tagInfo->fileName:QCString())))); newNd->setLanguage(lang); // add namespace to the list - Doxygen::namespaceSDict->inSort(fullScope,newNd); innerScope = newNd; } else // scope is a namespace @@ -874,7 +877,7 @@ std::unique_ptr<ArgumentList> getTemplateArgumentsFromName( auto alIt = tArgLists.begin(); while ((i=name.find("::",p))!=-1 && alIt!=tArgLists.end()) { - NamespaceDef *nd = Doxygen::namespaceSDict->find(name.left(i)); + NamespaceDef *nd = Doxygen::namespaceLinkedMap->find(name.left(i)); if (nd==0) { ClassDef *cd = getClass(name.left(i)); @@ -1496,7 +1499,7 @@ static void buildNamespaceList(const Entry *root) //printf("Found namespace %s in %s at line %d\n",root->name.data(), // root->fileName.data(), root->startLine); NamespaceDefMutable *nd; - if ((nd=toNamespaceDefMutable(Doxygen::namespaceSDict->find(fullName)))) // existing namespace + if ((nd=toNamespaceDefMutable(Doxygen::namespaceLinkedMap->find(fullName)))) // existing namespace { nd->setDocumentation(root->doc,root->docFile,root->docLine); nd->setName(fullName); // change name to match docs @@ -1533,9 +1536,13 @@ static void buildNamespaceList(const Entry *root) tagFileName = tagInfo->fileName; } //printf("++ new namespace %s lang=%s tagName=%s\n",fullName.data(),langToString(root->lang).data(),tagName.data()); - nd=createNamespaceDef(tagInfo?tagName:root->fileName,root->startLine, + // add namespace to the list + nd = toNamespaceDefMutable( + Doxygen::namespaceLinkedMap->add(fullName, + std::unique_ptr<NamespaceDef>( + createNamespaceDef(tagInfo?tagName:root->fileName,root->startLine, root->startColumn,fullName,tagName,tagFileName, - root->type,root->spec&Entry::Published); + root->type,root->spec&Entry::Published)))); nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); nd->addSectionsToDefinition(root->anchors); @@ -1560,8 +1567,6 @@ static void buildNamespaceList(const Entry *root) nd->insertUsedFile(fd); nd->setBodySegment(root->startLine,root->bodyLine,root->endBodyLine); nd->setBodyDef(fd); - // add class to the list - Doxygen::namespaceSDict->inSort(fullName,nd); // also add namespace to the correct structural context Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName,0,tagInfo); @@ -1602,7 +1607,9 @@ static void buildNamespaceList(const Entry *root) NamespaceDef *aliasNd = createNamespaceDefAlias(d,nd); //printf("adding %s to %s\n",qPrint(aliasNd->name()),qPrint(d->name())); dm->addInnerCompound(aliasNd); - Doxygen::namespaceSDict->inSort(aliasNd->name(),aliasNd); + QCString aliasName = aliasNd->name(); + Doxygen::namespaceLinkedMap->add( + aliasName,std::unique_ptr<NamespaceDef>(aliasNd)); } } } @@ -1732,7 +1739,11 @@ static void findUsingDirectives(const Entry *root) else // unknown namespace, but add it anyway. { //printf("++ new unknown namespace %s lang=%s\n",name.data(),langToString(root->lang).data()); - nd=createNamespaceDef(root->fileName,root->startLine,root->startColumn,name); + // add namespace to the list + nd = toNamespaceDefMutable( + Doxygen::namespaceLinkedMap->add(name, + std::unique_ptr<NamespaceDef>( + createNamespaceDef(root->fileName,root->startLine,root->startColumn,name)))); nd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); nd->addSectionsToDefinition(root->anchors); @@ -1764,8 +1775,6 @@ static void findUsingDirectives(const Entry *root) // the empty string test is needed for extract all case nd->setBriefDescription(root->brief,root->briefFile,root->briefLine); nd->insertUsedFile(fd); - // add class to the list - Doxygen::namespaceSDict->inSort(name,nd); nd->setRefItems(root->sli); } } @@ -2466,7 +2475,7 @@ static bool isVarWithConstructor(const Entry *root) } if (!root->parent()->name.isEmpty()) { - ctx=Doxygen::namespaceSDict->find(root->parent()->name); + ctx=Doxygen::namespaceLinkedMap->find(root->parent()->name); } type = root->type; // remove qualifiers @@ -3325,7 +3334,7 @@ static void buildFunctionList(const Entry *root) // note: the following code was replaced by inMember=TRUE to deal with a // function rname='X::foo' of class X inside a namespace also called X... // bug id 548175 - //nd = Doxygen::namespaceSDict->find(rname.left(memIndex)); + //nd = Doxygen::namespaceLinkedMap->find(rname.left(memIndex)); //isMember = nd==0; //if (nd) //{ @@ -4813,11 +4822,9 @@ static void computeMemberReferences() fd->computeAnchors(); } } - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd=0; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->computeAnchors(); @@ -4852,11 +4859,9 @@ static void addListReferences() } } - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd=0; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->addListReferences(); @@ -5182,7 +5187,7 @@ static bool findGlobalMember(const Entry *root, qPrint(md->name()),qPrint(namespaceName)); NamespaceDef *rnd = 0; - if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceSDict->find(namespaceName); + if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceLinkedMap->find(namespaceName); const ArgumentList &mdAl = const_cast<const MemberDef *>(md.get())->argumentList(); bool matching= @@ -6095,7 +6100,7 @@ static void findMember(const Entry *root, { QCString joinedName = root->parent()->name+"::"+scopeName; if (!scopeName.isEmpty() && - (getClass(joinedName) || Doxygen::namespaceSDict->find(joinedName))) + (getClass(joinedName) || Doxygen::namespaceLinkedMap->find(joinedName))) { scopeName = joinedName; } @@ -6112,7 +6117,7 @@ static void findMember(const Entry *root, for (const auto &fnd : fd->getUsedNamespaces()) { QCString joinedName = fnd->name()+"::"+scopeName; - if (Doxygen::namespaceSDict->find(joinedName)) + if (Doxygen::namespaceLinkedMap->find(joinedName)) { scopeName=joinedName; break; @@ -7839,14 +7844,12 @@ static void addSourceReferences() } } // add source references for namespace definitions - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd=0; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { FileDef *fd=nd->getBodyDef(); if (fd && nd->isLinkableInProject() && nd->getStartDefLine()!=-1) { - fd->addSourceRef(nd->getStartDefLine(),nd,0); + fd->addSourceRef(nd->getStartDefLine(),nd.get(),0); } } @@ -7948,11 +7951,9 @@ static void sortMemberLists() } // sort namespace member lists - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd=0; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->sortMemberLists(); @@ -8025,11 +8026,9 @@ static void countMembers() } } - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd=0; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->countMembers(); @@ -8140,11 +8139,9 @@ static void combineUsingRelations() // for each namespace NamespaceDefSet visitedNamespaces; - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for (nli.toFirst() ; (nd=nli.current()) ; ++nli ) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->combineUsingRelations(visitedNamespaces); @@ -8174,11 +8171,9 @@ static void addMembersToMemberGroup() } } // for each namespace - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for ( ; (nd=nli.current()) ; ++nli ) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->addMembersToMemberGroup(); @@ -8215,11 +8210,9 @@ static void distributeMemberGroupDocumentation() } } // for each namespace - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for ( ; (nd=nli.current()) ; ++nli ) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->distributeMemberGroupDocumentation(); @@ -8256,11 +8249,9 @@ static void findSectionsInDocumentation() } } // for each namespace - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for ( ; (nd=nli.current()) ; ++nli ) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { ndm->findSectionsInDocumentation(); @@ -8976,15 +8967,12 @@ static void generateNamespaceDocs() //writeNamespaceIndex(*g_outputList); - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; // for each namespace... - for (;(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - if (nd->isLinkableInProject()) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm) { msg("Generating docs for namespace %s\n",nd->name().data()); @@ -10123,8 +10111,7 @@ void initDoxygen() Doxygen::functionNameLinkedMap = new MemberNameLinkedMap; Doxygen::groupSDict = new GroupSDict(17); Doxygen::groupSDict->setAutoDelete(TRUE); - Doxygen::namespaceSDict = new NamespaceSDict(20); - Doxygen::namespaceSDict->setAutoDelete(TRUE); + Doxygen::namespaceLinkedMap = new NamespaceLinkedMap; Doxygen::classLinkedMap = new ClassLinkedMap; Doxygen::hiddenClassLinkedMap = new ClassLinkedMap; Doxygen::directories = new DirSDict(17); @@ -10187,7 +10174,7 @@ void cleanUpDoxygen() delete Doxygen::memberNameLinkedMap; delete Doxygen::functionNameLinkedMap; delete Doxygen::groupSDict; - delete Doxygen::namespaceSDict; + delete Doxygen::namespaceLinkedMap; delete Doxygen::directories; DotManager::deleteInstance(); @@ -10739,11 +10726,9 @@ static void writeTagFile() } } // for each namespace - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for ( ; (nd=nli.current()) ; ++nli ) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { - NamespaceDefMutable *ndm = toNamespaceDefMutable(nd); + NamespaceDefMutable *ndm = toNamespaceDefMutable(nd.get()); if (ndm && nd->isLinkableInProject()) { ndm->writeTagFile(tagFile); diff --git a/src/doxygen.h b/src/doxygen.h index 76b8ef9..fb984f6 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -53,7 +53,7 @@ class ClassLinkedMap; class GenericsSDict; class MemberNameLinkedMap; class FileNameLinkedMap; -class NamespaceSDict; +class NamespaceLinkedMap; class NamespaceDef; class DirSDict; class DirRelation; @@ -113,7 +113,7 @@ class Doxygen static MemberNameLinkedMap *functionNameLinkedMap; static StringUnorderedMap namespaceAliasMap; static GroupSDict *groupSDict; - static NamespaceSDict *namespaceSDict; + static NamespaceLinkedMap *namespaceLinkedMap; static StringDict tagDestinationDict; static StringDict aliasDict; static QIntDict<MemberGroupInfo> memGrpInfoDict; diff --git a/src/fortrancode.l b/src/fortrancode.l index c4b865b..0ddddd1 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -1067,7 +1067,7 @@ static bool getFortranNamespaceDefs(const QCString &mname, if (mname.isEmpty()) return FALSE; /* empty name => nothing to link */ // search for module - if ((cd=Doxygen::namespaceSDict->find(mname))) return TRUE; + if ((cd=Doxygen::namespaceLinkedMap->find(mname))) return TRUE; return FALSE; } diff --git a/src/index.cpp b/src/index.cpp index 2e5d9f8..e68f7eb 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1506,9 +1506,7 @@ static void writeFileIndex(OutputList &ol) static int countNamespaces() { int count=0; - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for (;(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject()) count++; } @@ -1712,14 +1710,12 @@ static void writeNamespaceTree(const NamespaceLinkedRefMap &nsLinkedMap,FTVHelp } } -static void writeNamespaceTree(const NamespaceSDict &nsDict,FTVHelp *ftv, +static void writeNamespaceTree(const NamespaceLinkedMap &nsLinkedMap,FTVHelp *ftv, bool rootOnly,bool addToIndex) { - NamespaceSDict::Iterator nli(nsDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : nsLinkedMap) { - writeNamespaceTreeElement(nd,ftv,rootOnly,addToIndex); + writeNamespaceTreeElement(nd.get(),ftv,rootOnly,addToIndex); } } @@ -1807,14 +1803,12 @@ static void writeClassTreeInsideNamespace(const NamespaceLinkedRefMap &nsLinkedM } } -static void writeClassTreeInsideNamespace(const NamespaceSDict &nsDict,FTVHelp *ftv, +static void writeClassTreeInsideNamespace(const NamespaceLinkedMap &nsLinkedMap,FTVHelp *ftv, bool rootOnly,bool addToIndex,ClassDef::CompoundType ct) { - NamespaceSDict::Iterator nli(nsDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : nsLinkedMap) { - writeClassTreeInsideNamespaceElement(nd,ftv,rootOnly,addToIndex,ct); + writeClassTreeInsideNamespaceElement(nd.get(),ftv,rootOnly,addToIndex,ct); } } @@ -1845,9 +1839,7 @@ static void writeNamespaceIndex(OutputList &ol) ol.pushGeneratorState(); ol.disable(OutputGenerator::Html); - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject()) { @@ -1875,7 +1867,7 @@ static void writeNamespaceIndex(OutputList &ol) //ol.docify(" ("); ol.generateDoc( nd->briefFile(),nd->briefLine(), - nd,0, + nd.get(),0, nd->briefDescription(TRUE), FALSE, // index words FALSE, // isExample @@ -1907,7 +1899,7 @@ static void writeNamespaceIndex(OutputList &ol) Doxygen::indexList->incContentsDepth(); } FTVHelp* ftv = new FTVHelp(FALSE); - writeNamespaceTree(*Doxygen::namespaceSDict,ftv,TRUE,addToIndex); + writeNamespaceTree(*Doxygen::namespaceLinkedMap,ftv,TRUE,addToIndex); QGString outStr; FTextStream t(&outStr); ftv->generateTreeViewInline(t); @@ -2476,7 +2468,7 @@ static void writeAnnotatedIndexGeneric(OutputList &ol,const AnnotatedIndexContex Doxygen::indexList->incContentsDepth(); } FTVHelp ftv(false); - writeClassTreeInsideNamespace(*Doxygen::namespaceSDict,&ftv,TRUE,addToIndex,ctx.compoundType); + writeClassTreeInsideNamespace(*Doxygen::namespaceLinkedMap,&ftv,TRUE,addToIndex,ctx.compoundType); writeClassTree(*Doxygen::classLinkedMap,&ftv,addToIndex,TRUE,ctx.compoundType); QGString outStr; FTextStream t(&outStr); diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 156be8e..bfde4d1 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -1000,14 +1000,13 @@ void LatexGenerator::startIndexSection(IndexSections is) { GroupSDict::Iterator gli(*Doxygen::groupSDict); GroupDef *gd; - bool found=FALSE; - for (gli.toFirst();(gd=gli.current()) && !found;++gli) + for (gli.toFirst();(gd=gli.current());++gli) { if (!gd->isReference()) { if (compactLatex) t << "\\doxysection"; else t << "\\chapter"; t << "{"; //Module Documentation}\n"; - found=TRUE; + break; } } } @@ -1016,30 +1015,26 @@ void LatexGenerator::startIndexSection(IndexSections is) { SDict<DirDef>::Iterator dli(*Doxygen::directories); DirDef *dd; - bool found=FALSE; - for (dli.toFirst();(dd=dli.current()) && !found;++dli) + for (dli.toFirst();(dd=dli.current());++dli) { if (dd->isLinkableInProject()) { if (compactLatex) t << "\\doxysection"; else t << "\\chapter"; t << "{"; //Module Documentation}\n"; - found=TRUE; + break; } } } break; case isNamespaceDocumentation: { - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - bool found=FALSE; - for (nli.toFirst();(nd=nli.current()) && !found;++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject() && !nd->isAlias()) { if (compactLatex) t << "\\doxysection"; else t << "\\chapter"; t << "{"; // Namespace Documentation}\n": - found=TRUE; + break; } } } @@ -1197,26 +1192,18 @@ void LatexGenerator::endIndexSection(IndexSections is) break; case isNamespaceDocumentation: { - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; bool found=FALSE; - for (nli.toFirst();(nd=nli.current()) && !found;++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject() && !nd->isAlias()) { - t << "}\n\\input{" << nd->getOutputFileBase() << "}\n"; - found=TRUE; - } - } - while ((nd=nli.current())) - { - if (nd->isLinkableInProject() && !nd->isAlias()) - { - //if (compactLatex) t << "\\input"; else t << "\\include"; - t << "\\input"; - t << "{" << nd->getOutputFileBase() << "}\n"; + if (!found) + { + t << "}\n"; + found=true; + } + t << "\\input{" << nd->getOutputFileBase() << "}\n"; } - ++nli; } } break; diff --git a/src/namespacedef.h b/src/namespacedef.h index c9f1280..e9bf86f 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -19,8 +19,6 @@ #include <set> #include <qstrlist.h> -#include <qdict.h> -#include "sortdict.h" #include "definition.h" #include "filedef.h" #include "linkedmap.h" @@ -40,6 +38,10 @@ class NamespaceDefMutable; using NamespaceDefSet = std::set<const NamespaceDef*>; +class NamespaceLinkedMap : public LinkedMap<NamespaceDef> +{ +}; + class NamespaceLinkedRefMap : public LinkedRefMap<const NamespaceDef> { public: @@ -48,7 +50,6 @@ class NamespaceLinkedRefMap : public LinkedRefMap<const NamespaceDef> bool declVisible() const; }; - /** An abstract interface of a namespace symbol. */ class NamespaceDef : public Definition { @@ -148,50 +149,4 @@ NamespaceDefMutable *toNamespaceDefMutable(const Definition *d); //------------------------------------------------------------------------ -#if 0 - -/** A list of NamespaceDef objects. */ -class NamespaceList : public QList<NamespaceDef> -{ - public: - ~NamespaceList() {} - int compareValues(const NamespaceDef *nd1,const NamespaceDef *nd2) const - { - return qstricmp(nd1->name(), nd2->name()); - } -}; - -/** An iterator for NamespaceDef objects in a NamespaceList. */ -class NamespaceListIterator : public QListIterator<NamespaceDef> -{ - public: - NamespaceListIterator(const NamespaceList &l) : - QListIterator<NamespaceDef>(l) {} -}; - - -/** An unsorted dictionary of NamespaceDef objects. */ -class NamespaceDict : public QDict<NamespaceDef> -{ - public: - NamespaceDict(uint size) : QDict<NamespaceDef>(size) {} - ~NamespaceDict() {} -}; -#endif - -/** A sorted dictionary of NamespaceDef objects. */ -class NamespaceSDict : public SDict<NamespaceDef> -{ - public: - NamespaceSDict(uint size=17) : SDict<NamespaceDef>(size) {} - ~NamespaceSDict() {} - private: - int compareValues(const NamespaceDef *item1,const NamespaceDef *item2) const - { - return qstricmp(item1->name(),item2->name()); - } -}; - - - #endif diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index 918f39e..d84d5e4 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -2203,10 +2203,8 @@ bool PerlModGenerator::generatePerlModOutput() m_output.closeList(); m_output.openList("namespaces"); - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) - generatePerlModForNamespace(nd); + for (const auto &nd : *Doxygen::namespaceLinkedMap) + generatePerlModForNamespace(nd.get()); m_output.closeList(); m_output.openList("files"); diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index b96e4b5..a8aa898 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -473,13 +473,12 @@ void RTFGenerator::startIndexSection(IndexSections is) //Module Documentation GroupSDict::Iterator gli(*Doxygen::groupSDict); GroupDef *gd; - bool found=FALSE; - for (gli.toFirst();(gd=gli.current()) && !found;++gli) + for (gli.toFirst();(gd=gli.current());++gli) { if (!gd->isReference()) { beginRTFChapter(); - found=TRUE; + break; } } } @@ -489,13 +488,12 @@ void RTFGenerator::startIndexSection(IndexSections is) //Directory Documentation SDict<DirDef>::Iterator dli(*Doxygen::directories); DirDef *dd; - bool found=FALSE; - for (dli.toFirst();(dd=dli.current()) && !found;++dli) + for (dli.toFirst();(dd=dli.current());++dli) { if (dd->isLinkableInProject()) { beginRTFChapter(); - found=TRUE; + break; } } } @@ -503,15 +501,12 @@ void RTFGenerator::startIndexSection(IndexSections is) case isNamespaceDocumentation: { // Namespace Documentation - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - bool found=FALSE; - for (nli.toFirst();(nd=nli.current()) && !found;++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject()) { beginRTFChapter(); - found=TRUE; + break; } } } @@ -551,6 +546,10 @@ void RTFGenerator::startIndexSection(IndexSections is) } } } + if (!isFirst) + { + break; + } } } break; @@ -776,31 +775,21 @@ void RTFGenerator::endIndexSection(IndexSections is) break; case isNamespaceDocumentation: { - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - bool found=FALSE; - for (nli.toFirst();(nd=nli.current()) && !found;++nli) - { - if (nd->isLinkableInProject() && !nd->isAlias()) - { - t << "\\par " << rtf_Style_Reset << endl; - t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; - t << nd->getOutputFileBase(); - t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; - found=TRUE; - } - } - while ((nd=nli.current())) + bool first=true; + for (const auto &nd : *Doxygen::namespaceLinkedMap) { if (nd->isLinkableInProject() && !nd->isAlias()) { t << "\\par " << rtf_Style_Reset << endl; - beginRTFSection(); + if (!first) + { + beginRTFSection(); + } + first=false; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << nd->getOutputFileBase(); t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; } - ++nli; } } break; diff --git a/src/searchindex.cpp b/src/searchindex.cpp index 209cdea..42601b9 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -771,15 +771,13 @@ void createJavaScriptSearchIndex() } // index namespaces - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - NamespaceDef *nd; - for (;(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { uint letter = getUtf8CodeToLower(nd->name(),0); if (nd->isLinkable() && isId(letter)) { - g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,nd); - g_searchIndexInfo[SEARCH_INDEX_NAMESPACES].symbolList.append(letter,nd); + g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,nd.get()); + g_searchIndexInfo[SEARCH_INDEX_NAMESPACES].symbolList.append(letter,nd.get()); } } diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index e272ed0..97c7337 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -2547,12 +2547,10 @@ void generateSqlite3() } // + namespaces - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { msg("Generating Sqlite3 output for namespace %s\n",nd->name().data()); - generateSqlite3ForNamespace(nd); + generateSqlite3ForNamespace(nd.get()); } // + files diff --git a/src/util.cpp b/src/util.cpp index 0ae2c86..c22d267 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -231,7 +231,7 @@ QCString stripAnonymousNamespaceScope(const QCString &s) while ((i=getScopeFragment(s,p,&l))!=-1) { //printf("Scope fragment %s\n",s.mid(i,l).data()); - if (Doxygen::namespaceSDict->find(s.left(i+l))!=0) + if (Doxygen::namespaceLinkedMap->find(s.left(i+l))!=0) { if (s.at(i)!='@') { @@ -501,11 +501,11 @@ NamespaceDef *getResolvedNamespace(const char *name) { warn_uncond("possible recursive namespace alias detected for %s!\n",name); } - return Doxygen::namespaceSDict->find(it->second.data()); + return Doxygen::namespaceLinkedMap->find(it->second.data()); } else { - return Doxygen::namespaceSDict->find(name); + return Doxygen::namespaceLinkedMap->find(name); } } @@ -2614,7 +2614,7 @@ bool getDefs(const QCString &scName, } //printf("Trying namespace %s\n",namespaceName.data()); if (!namespaceName.isEmpty() && - (fnd=Doxygen::namespaceSDict->find(namespaceName)) && + (fnd=Doxygen::namespaceLinkedMap->find(namespaceName)) && fnd->isLinkable() ) { @@ -2861,7 +2861,7 @@ static bool getScopeDefs(const char *docScope,const char *scope, { return TRUE; // class link written => quit } - else if ((nd=Doxygen::namespaceSDict->find(fullName)) && nd->isLinkable()) + else if ((nd=Doxygen::namespaceLinkedMap->find(fullName)) && nd->isLinkable()) { return TRUE; // namespace link written => quit } @@ -3249,7 +3249,7 @@ bool resolveLink(/* in */ const char *scName, // resAnchor=cd->anchor(); // return TRUE; // } - else if ((nd=Doxygen::namespaceSDict->find(linkRef))) + else if ((nd=Doxygen::namespaceLinkedMap->find(linkRef))) { *resContext=nd; return TRUE; diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 7b52d67..13f76cb 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -1953,12 +1953,10 @@ void generateXML() { generateXMLForClass(cd.get(),t); } - NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict); - const NamespaceDef *nd; - for (nli.toFirst();(nd=nli.current());++nli) + for (const auto &nd : *Doxygen::namespaceLinkedMap) { msg("Generating XML output for namespace %s\n",nd->name().data()); - generateXMLForNamespace(nd,t); + generateXMLForNamespace(nd.get(),t); } for (const auto &fn : *Doxygen::inputNameLinkedMap) { |