Skip to content

Commit bf5c2ac

Browse files
committed
Refactoring: replaced getNamespaceSDict() by getNamespaces()
1 parent 9bf7658 commit bf5c2ac

15 files changed

+315
-345
lines changed

addon/doxyapp/doxyapp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,9 @@ static void lookupSymbol(Definition *d)
186186
case Definition::TypeNamespace:
187187
{
188188
NamespaceDef *nd = dynamic_cast<NamespaceDef*>(d);
189-
printf("Kind: Namespace: contains %zu classes and %d namespaces\n",
189+
printf("Kind: Namespace: contains %zu classes and %zu namespaces\n",
190190
nd->getClasses().size(),
191-
nd->getNamespaceSDict() ? nd->getNamespaceSDict()->count() : 0);
191+
nd->getNamespaces().size());
192192
}
193193
break;
194194
case Definition::TypeMember:

src/context.cpp

Lines changed: 43 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,16 +2765,11 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
27652765
if (!cache.namespaces)
27662766
{
27672767
TemplateList *namespaceList = TemplateList::alloc();
2768-
if (m_namespaceDef->getNamespaceSDict())
2768+
for (const auto &nd : m_namespaceDef->getNamespaces())
27692769
{
2770-
NamespaceSDict::Iterator sdi(*m_namespaceDef->getNamespaceSDict());
2771-
const NamespaceDef *nd;
2772-
for (sdi.toFirst();(nd=sdi.current());++sdi)
2770+
if (nd->isLinkable() && !nd->isConstantGroup())
27732771
{
2774-
if (nd->isLinkable() && !nd->isConstantGroup())
2775-
{
2776-
namespaceList->append(NamespaceContext::alloc(nd));
2777-
}
2772+
namespaceList->append(NamespaceContext::alloc(nd));
27782773
}
27792774
}
27802775
cache.namespaces.reset(namespaceList);
@@ -2787,16 +2782,11 @@ class NamespaceContext::Private : public DefinitionContext<NamespaceContext::Pri
27872782
if (!cache.constantgroups)
27882783
{
27892784
TemplateList *namespaceList = TemplateList::alloc();
2790-
if (m_namespaceDef->getNamespaceSDict())
2785+
for (const auto &nd : m_namespaceDef->getNamespaces())
27912786
{
2792-
NamespaceSDict::Iterator sdi(*m_namespaceDef->getNamespaceSDict());
2793-
const NamespaceDef *nd;
2794-
for (sdi.toFirst();(nd=sdi.current());++sdi)
2787+
if (nd->isLinkable() && nd->isConstantGroup())
27952788
{
2796-
if (nd->isLinkable() && nd->isConstantGroup())
2797-
{
2798-
namespaceList->append(NamespaceContext::alloc(nd));
2799-
}
2789+
namespaceList->append(NamespaceContext::alloc(nd));
28002790
}
28012791
}
28022792
cache.constantgroups.reset(namespaceList);
@@ -3214,16 +3204,11 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
32143204
if (!cache.namespaces)
32153205
{
32163206
TemplateList *namespaceList = TemplateList::alloc();
3217-
if (m_fileDef->getNamespaceSDict())
3207+
for (const auto &nd : m_fileDef->getNamespaces())
32183208
{
3219-
NamespaceSDict::Iterator sdi(*m_fileDef->getNamespaceSDict());
3220-
const NamespaceDef *nd;
3221-
for (sdi.toFirst();(nd=sdi.current());++sdi)
3209+
if (nd->isLinkable() && !nd->isConstantGroup())
32223210
{
3223-
if (nd->isLinkable() && !nd->isConstantGroup())
3224-
{
3225-
namespaceList->append(NamespaceContext::alloc(nd));
3226-
}
3211+
namespaceList->append(NamespaceContext::alloc(nd));
32273212
}
32283213
}
32293214
cache.namespaces.reset(namespaceList);
@@ -3236,16 +3221,11 @@ class FileContext::Private : public DefinitionContext<FileContext::Private>
32363221
if (!cache.constantgroups)
32373222
{
32383223
TemplateList *namespaceList = TemplateList::alloc();
3239-
if (m_fileDef->getNamespaceSDict())
3224+
for (const auto &nd : m_fileDef->getNamespaces())
32403225
{
3241-
NamespaceSDict::Iterator sdi(*m_fileDef->getNamespaceSDict());
3242-
NamespaceDef *nd;
3243-
for (sdi.toFirst();(nd=sdi.current());++sdi)
3226+
if (nd->isLinkable() && nd->isConstantGroup())
32443227
{
3245-
if (nd->isLinkable() && nd->isConstantGroup())
3246-
{
3247-
namespaceList->append(NamespaceContext::alloc(nd));
3248-
}
3228+
namespaceList->append(NamespaceContext::alloc(nd));
32493229
}
32503230
}
32513231
cache.constantgroups.reset(namespaceList);
@@ -5496,16 +5476,11 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
54965476
if (!cache.namespaces)
54975477
{
54985478
TemplateList *namespaceList = TemplateList::alloc();
5499-
if (m_groupDef->getNamespaces())
5479+
for (const auto &nd : m_groupDef->getNamespaces())
55005480
{
5501-
NamespaceSDict::Iterator sdi(*m_groupDef->getNamespaces());
5502-
const NamespaceDef *nd;
5503-
for (sdi.toFirst();(nd=sdi.current());++sdi)
5481+
if (nd->isLinkable() && !nd->isConstantGroup())
55045482
{
5505-
if (nd->isLinkable() && !nd->isConstantGroup())
5506-
{
5507-
namespaceList->append(NamespaceContext::alloc(nd));
5508-
}
5483+
namespaceList->append(NamespaceContext::alloc(nd));
55095484
}
55105485
}
55115486
cache.namespaces.reset(namespaceList);
@@ -5518,16 +5493,11 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
55185493
if (!cache.constantgroups)
55195494
{
55205495
TemplateList *namespaceList = TemplateList::alloc();
5521-
if (m_groupDef->getNamespaces())
5496+
for (const auto &nd : m_groupDef->getNamespaces())
55225497
{
5523-
NamespaceSDict::Iterator sdi(*m_groupDef->getNamespaces());
5524-
NamespaceDef *nd;
5525-
for (sdi.toFirst();(nd=sdi.current());++sdi)
5498+
if (nd->isLinkable() && nd->isConstantGroup())
55265499
{
5527-
if (nd->isLinkable() && nd->isConstantGroup())
5528-
{
5529-
namespaceList->append(NamespaceContext::alloc(nd));
5530-
}
5500+
namespaceList->append(NamespaceContext::alloc(nd));
55315501
}
55325502
}
55335503
cache.constantgroups.reset(namespaceList);
@@ -6403,9 +6373,9 @@ class NestingNodeContext::Private
64036373
void addNamespaces(bool addClasses,ClassDefSet &visitedClasses)
64046374
{
64056375
const NamespaceDef *nd = toNamespaceDef(m_def);
6406-
if (nd && nd->getNamespaceSDict())
6376+
if (nd && !nd->getNamespaces().empty())
64076377
{
6408-
m_children->addNamespaces(*nd->getNamespaceSDict(),FALSE,addClasses,visitedClasses);
6378+
m_children->addNamespaces(nd->getNamespaces(),FALSE,addClasses,visitedClasses);
64096379
}
64106380
if (addClasses && nd)
64116381
{
@@ -6515,6 +6485,24 @@ class NestingContext::Private : public GenericNodeListContext
65156485
}
65166486
}
65176487
}
6488+
void addNamespaces(const NamespaceLinkedRefMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses)
6489+
{
6490+
for (const auto &nd : nsLinkedMap)
6491+
{
6492+
if (!nd->isAnonymous() &&
6493+
(!rootOnly || nd->getOuterScope()==Doxygen::globalScope))
6494+
{
6495+
bool hasChildren = namespaceHasNestedNamespace(nd);
6496+
bool isLinkable = nd->isLinkableInProject();
6497+
if (isLinkable || hasChildren)
6498+
{
6499+
NestingNodeContext *nnc = NestingNodeContext::alloc(m_parent,nd,m_index,m_level,addClasses,FALSE,FALSE,visitedClasses);
6500+
append(nnc);
6501+
m_index++;
6502+
}
6503+
}
6504+
}
6505+
}
65186506
void addClass(const ClassDef *cd,bool rootOnly,ClassDefSet &visitedClasses)
65196507
{
65206508
if (cd->getLanguage()==SrcLangExt_VHDL)
@@ -6747,6 +6735,11 @@ void NestingContext::addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bo
67476735
p->addNamespaces(nsDict,rootOnly,addClasses,visitedClasses);
67486736
}
67496737

6738+
void NestingContext::addNamespaces(const NamespaceLinkedRefMap &nsLinkedRefMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses)
6739+
{
6740+
p->addNamespaces(nsLinkedRefMap,rootOnly,addClasses,visitedClasses);
6741+
}
6742+
67506743
void NestingContext::addDirs(const DirSDict &dirs,ClassDefSet &visitedClasses)
67516744
{
67526745
p->addDirs(dirs,visitedClasses);

src/context.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class PageDef;
2828
class GroupDef;
2929
class NamespaceDef;
3030
class NamespaceSDict;
31+
class NamespaceLinkedRefMap;
3132
class FileDef;
3233
class FileList;
3334
class FileNameLinkedMap;
@@ -545,6 +546,7 @@ class NestingContext : public RefCountedContext, public TemplateListIntf
545546
virtual int release() { return RefCountedContext::release(); }
546547

547548
void addNamespaces(const NamespaceSDict &nsDict,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses);
549+
void addNamespaces(const NamespaceLinkedRefMap &nsLinkedMap,bool rootOnly,bool addClasses,ClassDefSet &visitedClasses);
548550
void addClasses(const ClassLinkedRefMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses);
549551
void addClasses(const ClassLinkedMap &clLinkedMap,bool rootOnly,ClassDefSet &visitedClasses);
550552
void addDirs(const DirSDict &,ClassDefSet &visitedClasses);

src/dotgroupcollaboration.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,10 @@ void DotGroupCollaboration::buildGraph(const GroupDef* gd)
120120
}
121121

122122
// Add namespaces
123-
if ( gd->getNamespaces() && gd->getNamespaces()->count() )
123+
for (const auto &def : gd->getNamespaces())
124124
{
125-
NamespaceSDict::Iterator defli(*gd->getNamespaces());
126-
NamespaceDef *def;
127-
for (;(def=defli.current());++defli)
128-
{
129-
tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension;
130-
addCollaborationMember( def, tmp_url, DotGroupCollaboration::tnamespace );
131-
}
125+
tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension;
126+
addCollaborationMember( def, tmp_url, DotGroupCollaboration::tnamespace );
132127
}
133128

134129
// Add files

src/filedef.cpp

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class FileDefImpl : public DefinitionMixin<FileDef>
8686
virtual MemberList *getMemberList(MemberListType lt) const;
8787
virtual const QList<MemberList> &getMemberLists() const { return m_memberLists; }
8888
virtual MemberGroupSDict *getMemberGroupSDict() const { return m_memberGroupSDict; }
89-
virtual NamespaceSDict *getNamespaceSDict() const { return m_namespaceSDict; }
89+
virtual NamespaceLinkedRefMap getNamespaces() const { return m_namespaces; }
9090
virtual ClassLinkedRefMap getClasses() const { return m_classes; }
9191
virtual QCString title() const;
9292
virtual bool hasDetailedDescription() const;
@@ -108,7 +108,7 @@ class FileDefImpl : public DefinitionMixin<FileDef>
108108
virtual void setDiskName(const QCString &name);
109109
virtual void insertMember(MemberDef *md);
110110
virtual void insertClass(const ClassDef *cd);
111-
virtual void insertNamespace(NamespaceDef *nd);
111+
virtual void insertNamespace(const NamespaceDef *nd);
112112
virtual void computeAnchors();
113113
virtual void setPackageDef(PackageDef *pd) { m_package=pd; }
114114
virtual void setDirDef(DirDef *dd) { m_dir=dd; }
@@ -170,7 +170,7 @@ class FileDefImpl : public DefinitionMixin<FileDef>
170170
DirDef *m_dir;
171171
QList<MemberList> m_memberLists;
172172
MemberGroupSDict *m_memberGroupSDict;
173-
NamespaceSDict *m_namespaceSDict;
173+
NamespaceLinkedRefMap m_namespaces;
174174
ClassLinkedRefMap m_classes;
175175
ClassLinkedRefMap m_interfaces;
176176
ClassLinkedRefMap m_structs;
@@ -230,7 +230,6 @@ FileDefImpl::FileDefImpl(const char *p,const char *nm,
230230
m_includeDict = 0;
231231
m_includedByList = 0;
232232
m_includedByDict = 0;
233-
m_namespaceSDict = 0;
234233
m_srcDefDict = 0;
235234
m_srcMemberDict = 0;
236235
m_package = 0;
@@ -254,7 +253,6 @@ FileDefImpl::~FileDefImpl()
254253
delete m_includeList;
255254
delete m_includedByDict;
256255
delete m_includedByList;
257-
delete m_namespaceSDict;
258256
delete m_srcDefDict;
259257
delete m_srcMemberDict;
260258
delete m_memberGroupSDict;
@@ -392,16 +390,11 @@ void FileDefImpl::writeTagFile(FTextStream &tagFile)
392390
break;
393391
case LayoutDocEntry::FileNamespaces:
394392
{
395-
if (m_namespaceSDict)
393+
for (const auto *nd : m_namespaces)
396394
{
397-
SDict<NamespaceDef>::Iterator ni(*m_namespaceSDict);
398-
NamespaceDef *nd;
399-
for (ni.toFirst();(nd=ni.current());++ni)
395+
if (nd->isLinkableInProject())
400396
{
401-
if (nd->isLinkableInProject())
402-
{
403-
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
404-
}
397+
tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
405398
}
406399
}
407400
}
@@ -705,7 +698,7 @@ void FileDefImpl::writeNamespaceDeclarations(OutputList &ol,const QCString &titl
705698
bool const isConstantGroup)
706699
{
707700
// write list of namespaces
708-
if (m_namespaceSDict) m_namespaceSDict->writeDeclaration(ol,title,isConstantGroup);
701+
m_namespaces.writeDeclaration(ol,title,isConstantGroup);
709702
}
710703

711704
void FileDefImpl::writeClassDeclarations(OutputList &ol,const QCString &title,const ClassLinkedRefMap &list)
@@ -825,7 +818,7 @@ void FileDefImpl::writeSummaryLinks(OutputList &ol) const
825818
ol.writeSummaryLink(0,label,ls->title(lang),first);
826819
first=FALSE;
827820
}
828-
else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaceSDict && m_namespaceSDict->declVisible())
821+
else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaces.declVisible())
829822
{
830823
LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
831824
QCString label = "namespaces";
@@ -1389,25 +1382,10 @@ void FileDefImpl::insertClass(const ClassDef *cd)
13891382
}
13901383

13911384
/*! Adds namespace definition \a nd to the list of all compounds of this file */
1392-
void FileDefImpl::insertNamespace(NamespaceDef *nd)
1385+
void FileDefImpl::insertNamespace(const NamespaceDef *nd)
13931386
{
13941387
if (nd->isHidden()) return;
1395-
if (!nd->name().isEmpty() &&
1396-
(m_namespaceSDict==0 || m_namespaceSDict->find(nd->name())==0))
1397-
{
1398-
if (m_namespaceSDict==0)
1399-
{
1400-
m_namespaceSDict = new NamespaceSDict;
1401-
}
1402-
if (Config_getBool(SORT_BRIEF_DOCS))
1403-
{
1404-
m_namespaceSDict->inSort(nd->name(),nd);
1405-
}
1406-
else
1407-
{
1408-
m_namespaceSDict->append(nd->name(),nd);
1409-
}
1410-
}
1388+
m_namespaces.add(nd->name(),nd);
14111389
}
14121390

14131391
QCString FileDefImpl::name() const
@@ -2028,6 +2006,13 @@ void FileDefImpl::sortMemberLists()
20282006
std::sort(m_interfaces.begin(),m_interfaces.end(),classComp);
20292007
std::sort(m_structs.begin(), m_structs.end(), classComp);
20302008
std::sort(m_exceptions.begin(),m_exceptions.end(),classComp);
2009+
2010+
auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
2011+
{
2012+
return qstricmp(n1->name(),n2->name())<0;
2013+
};
2014+
2015+
std::sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
20312016
}
20322017
}
20332018

src/filedef.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class ClassList;
3838
class MemberDef;
3939
class OutputList;
4040
class NamespaceDef;
41-
class NamespaceSDict;
41+
class NamespaceLinkedRefMap;
4242
class MemberGroupSDict;
4343
class PackageDef;
4444
class DirDef;
@@ -133,7 +133,7 @@ class FileDef : public DefinitionMutable, public Definition
133133

134134
/* user defined member groups */
135135
virtual MemberGroupSDict *getMemberGroupSDict() const = 0;
136-
virtual NamespaceSDict *getNamespaceSDict() const = 0;
136+
virtual NamespaceLinkedRefMap getNamespaces() const = 0;
137137
virtual ClassLinkedRefMap getClasses() const = 0;
138138

139139
virtual QCString title() const = 0;
@@ -164,7 +164,7 @@ class FileDef : public DefinitionMutable, public Definition
164164

165165
virtual void insertMember(MemberDef *md) = 0;
166166
virtual void insertClass(const ClassDef *cd) = 0;
167-
virtual void insertNamespace(NamespaceDef *nd) = 0;
167+
virtual void insertNamespace(const NamespaceDef *nd) = 0;
168168
virtual void computeAnchors() = 0;
169169

170170
virtual void setPackageDef(PackageDef *pd) = 0;

0 commit comments

Comments
 (0)