Skip to content

Commit 57848f4

Browse files
committed
Refactoring: modernize FileList
1 parent 0bef5ef commit 57848f4

15 files changed

+113
-183
lines changed

src/classdef.cpp

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class ClassDefImpl : public DefinitionMixin<ClassDefMutable>
248248
virtual void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0);
249249
virtual void setIncludeFile(FileDef *fd,const char *incName,bool local,bool force);
250250
virtual void insertMember(MemberDef *);
251-
virtual void insertUsedFile(FileDef *);
251+
virtual void insertUsedFile(const FileDef *);
252252
virtual bool addExample(const char *anchor,const char *name, const char *file);
253253
virtual void mergeCategory(ClassDef *category);
254254
virtual void setNamespace(NamespaceDef *nd);
@@ -1177,10 +1177,14 @@ void ClassDefImpl::findSectionsInDocumentation()
11771177

11781178

11791179
// add a file name to the used files set
1180-
void ClassDefImpl::insertUsedFile(FileDef *fd)
1180+
void ClassDefImpl::insertUsedFile(const FileDef *fd)
11811181
{
11821182
if (fd==0) return;
1183-
if (m_impl->files.find(fd)==-1) m_impl->files.append(fd);
1183+
auto it = std::find(m_impl->files.begin(),m_impl->files.end(),fd);
1184+
if (it==m_impl->files.end())
1185+
{
1186+
m_impl->files.push_back(fd);
1187+
}
11841188
for (const auto &ti : m_impl->templateInstances)
11851189
{
11861190
ClassDefMutable *cdm = toClassDefMutable(ti.classDef);
@@ -1454,29 +1458,30 @@ QCString ClassDefImpl::generatedFromFiles() const
14541458
{
14551459
QCString result;
14561460
SrcLangExt lang = getLanguage();
1461+
size_t numFiles = m_impl->files.size();
14571462
if (lang==SrcLangExt_Fortran)
14581463
{
14591464
result = theTranslator->trGeneratedFromFilesFortran(
14601465
getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType,
1461-
m_impl->files.count()==1);
1466+
numFiles==1);
14621467
}
14631468
else if (isJavaEnum())
14641469
{
1465-
result = theTranslator->trEnumGeneratedFromFiles(m_impl->files.count()==1);
1470+
result = theTranslator->trEnumGeneratedFromFiles(numFiles==1);
14661471
}
14671472
else if (m_impl->compType==Service)
14681473
{
1469-
result = theTranslator->trServiceGeneratedFromFiles(m_impl->files.count()==1);
1474+
result = theTranslator->trServiceGeneratedFromFiles(numFiles==1);
14701475
}
14711476
else if (m_impl->compType==Singleton)
14721477
{
1473-
result = theTranslator->trSingletonGeneratedFromFiles(m_impl->files.count()==1);
1478+
result = theTranslator->trSingletonGeneratedFromFiles(numFiles==1);
14741479
}
14751480
else
14761481
{
14771482
result = theTranslator->trGeneratedFromFiles(
14781483
getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType,
1479-
m_impl->files.count()==1);
1484+
numFiles==1);
14801485
}
14811486
return result;
14821487
}
@@ -1499,9 +1504,7 @@ void ClassDefImpl::showUsedFiles(OutputList &ol) const
14991504
ol.enable(OutputGenerator::Docbook);
15001505

15011506
bool first=TRUE;
1502-
QListIterator<FileDef> li(m_impl->files);
1503-
FileDef *fd;
1504-
for (;(fd=li.current());++li)
1507+
for (const auto &fd : m_impl->files)
15051508
{
15061509
if (first)
15071510
{

src/classdef.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ class ClassDefMutable : public DefinitionMutable, public ClassDef
414414
virtual void insertBaseClass(ClassDef *,const char *name,Protection p,Specifier s,const char *t=0) = 0;
415415
virtual void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0) = 0;
416416
virtual void insertMember(MemberDef *) = 0;
417-
virtual void insertUsedFile(FileDef *) = 0;
417+
virtual void insertUsedFile(const FileDef *) = 0;
418418
virtual void addMembersToTemplateInstance(const ClassDef *cd,const ArgumentList &templateArguments,const char *templSpec) = 0;
419419
virtual void addInnerCompound(const Definition *d) = 0;
420420
virtual bool addExample(const char *anchor,const char *name, const char *file) = 0;

src/context.cpp

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3476,16 +3476,10 @@ class DirContext::Private : public DefinitionContext<DirContext::Private>
34763476
if (!cache.files)
34773477
{
34783478
cache.files.reset(TemplateList::alloc());
3479-
FileList *files = m_dirDef->getFiles();
3480-
if (files)
3479+
for (const auto &fd : m_dirDef->getFiles())
34813480
{
3482-
QListIterator<FileDef> it(*files);
3483-
const FileDef *fd;
3484-
for (it.toFirst();(fd=it.current());++it)
3485-
{
3486-
FileContext *fc = FileContext::alloc(fd);
3487-
cache.files->append(fc);
3488-
}
3481+
FileContext *fc = FileContext::alloc(fd);
3482+
cache.files->append(fc);
34893483
}
34903484
}
34913485
return cache.files.get();
@@ -5401,14 +5395,9 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private>
54015395
if (!cache.files)
54025396
{
54035397
TemplateList *fileList = TemplateList::alloc();
5404-
if (m_groupDef->getFiles())
5398+
for (const auto &fd : m_groupDef->getFiles())
54055399
{
5406-
QListIterator<FileDef> it(*m_groupDef->getFiles());
5407-
const FileDef *fd;
5408-
for (it.toFirst();(fd=it.current());++it)
5409-
{
5410-
fileList->append(FileContext::alloc(fd));
5411-
}
5400+
fileList->append(FileContext::alloc(fd));
54125401
}
54135402
cache.files.reset(fileList);
54145403
}
@@ -6349,10 +6338,7 @@ class NestingNodeContext::Private
63496338
if (dd)
63506339
{
63516340
m_children->addDirs(dd->subDirs(),visitedClasses);
6352-
if (dd && dd->getFiles())
6353-
{
6354-
m_children->addFiles(*dd->getFiles(),visitedClasses);
6355-
}
6341+
m_children->addFiles(dd->getFiles(),visitedClasses);
63566342
}
63576343
}
63586344
void addPages(ClassDefSet &visitedClasses)
@@ -6528,9 +6514,7 @@ class NestingContext::Private : public GenericNodeListContext
65286514
}
65296515
void addFiles(const FileList &fList,ClassDefSet &visitedClasses)
65306516
{
6531-
QListIterator<FileDef> li(fList);
6532-
const FileDef *fd;
6533-
for (li.toFirst();(fd=li.current());++li)
6517+
for (const auto &fd : fList)
65346518
{
65356519
append(NestingNodeContext::alloc(m_parent,fd,m_index,m_level,FALSE,FALSE,FALSE,visitedClasses));
65366520
m_index++;
@@ -7142,9 +7126,7 @@ UsedFilesContext::UsedFilesContext(const ClassDef *cd) : RefCountedContext("Used
71427126
p = new Private;
71437127
if (cd)
71447128
{
7145-
QListIterator<FileDef> li(cd->usedFiles());
7146-
const FileDef *fd;
7147-
for (li.toFirst();(fd=li.current());++li)
7129+
for (const auto &fd : cd->usedFiles())
71487130
{
71497131
p->addFile(fd);
71507132
}

src/dirdef.cpp

Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class DirDefImpl : public DefinitionMixin<DirDef>
4949
virtual QCString displayName(bool=TRUE) const { return m_dispName; }
5050
virtual const QCString &shortName() const { return m_shortName; }
5151
virtual void addSubDir(DirDef *subdir);
52-
virtual FileList * getFiles() const { return m_fileList; }
53-
virtual void addFile(FileDef *fd);
52+
virtual const FileList &getFiles() const { return m_fileList; }
53+
virtual void addFile(const FileDef *fd);
5454
virtual const DirList &subDirs() const { return m_subdirs; }
5555
virtual bool isCluster() const { return m_subdirs.size()>0; }
5656
virtual int level() const { return m_level; }
@@ -91,7 +91,7 @@ class DirDefImpl : public DefinitionMixin<DirDef>
9191
QCString m_dispName;
9292
QCString m_shortName;
9393
QCString m_diskName;
94-
FileList *m_fileList; // list of files in the group
94+
FileList m_fileList; // list of files in the group
9595
int m_dirCount;
9696
int m_level;
9797
DirDef *m_parent;
@@ -132,15 +132,13 @@ DirDefImpl::DirDefImpl(const char *path) : DefinitionMixin(path,1,1,path)
132132
m_dispName = m_dispName.left(m_dispName.length()-1);
133133
}
134134

135-
m_fileList = new FileList;
136135
m_dirCount = g_dirCount++;
137136
m_level=-1;
138137
m_parent=0;
139138
}
140139

141140
DirDefImpl::~DirDefImpl()
142141
{
143-
delete m_fileList;
144142
}
145143

146144
bool DirDefImpl::isLinkableInProject() const
@@ -165,16 +163,16 @@ void DirDefImpl::setParent(DirDef *p)
165163
m_parent=p;
166164
}
167165

168-
void DirDefImpl::addFile(FileDef *fd)
166+
void DirDefImpl::addFile(const FileDef *fd)
169167
{
170-
m_fileList->append(fd);
171-
fd->setDirDef(this);
168+
m_fileList.push_back(fd);
169+
const_cast<FileDef*>(fd)->setDirDef(this);
172170
}
173171

174172
void DirDefImpl::sort()
175173
{
176174
std::sort(m_subdirs.begin(), m_subdirs.end(), compareDirDefs);
177-
m_fileList->sort();
175+
std::sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
178176
}
179177

180178
static QCString encodeDirName(const QCString &anchor)
@@ -326,7 +324,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
326324
int numSubdirs = 0;
327325
for(const auto dd : m_subdirs)
328326
{
329-
if (dd->hasDocumentation() || dd->getFiles()->count()>0)
327+
if (dd->hasDocumentation() || !dd->getFiles().empty())
330328
{
331329
numSubdirs++;
332330
}
@@ -341,7 +339,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
341339
ol.startMemberList();
342340
for(const auto dd : m_subdirs)
343341
{
344-
if (dd->hasDocumentation() || dd->getFiles()->count()==0)
342+
if (dd->hasDocumentation() || dd->getFiles().empty())
345343
{
346344
ol.startMemberDeclaration();
347345
ol.startMemberItem(dd->getOutputFileBase(),0);
@@ -373,9 +371,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol)
373371
void DirDefImpl::writeFileList(OutputList &ol)
374372
{
375373
int numFiles = 0;
376-
QListIterator<FileDef> it(*m_fileList);
377-
FileDef *fd;
378-
for (it.toFirst();(fd=it.current());++it)
374+
for (const auto &fd : m_fileList)
379375
{
380376
if (fd->hasDocumentation())
381377
{
@@ -390,7 +386,7 @@ void DirDefImpl::writeFileList(OutputList &ol)
390386
ol.parseText(theTranslator->trFile(TRUE,FALSE));
391387
ol.endMemberHeader();
392388
ol.startMemberList();
393-
for (it.toFirst();(fd=it.current());++it)
389+
for (const auto &fd : m_fileList)
394390
{
395391
if (fd->hasDocumentation())
396392
{
@@ -485,14 +481,9 @@ void DirDefImpl::writeTagFile(FTextStream &tagFile)
485481
break;
486482
case LayoutDocEntry::DirFiles:
487483
{
488-
if (m_fileList->count()>0)
484+
for (const auto &fd : m_fileList)
489485
{
490-
QListIterator<FileDef> it(*m_fileList);
491-
FileDef *fd;
492-
for (;(fd=it.current());++it)
493-
{
494486
tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
495-
}
496487
}
497488
}
498489
break;
@@ -690,29 +681,23 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd,
690681
*/
691682
void DirDefImpl::computeDependencies()
692683
{
693-
FileList *fl = m_fileList;
694-
if (fl)
684+
for (const auto &fd : m_fileList)
695685
{
696-
QListIterator<FileDef> fli(*fl);
697-
FileDef *fd;
698-
for (fli.toFirst();(fd=fli.current());++fli) // foreach file in dir dd
686+
//printf(" File %s\n",fd->name().data());
687+
//printf("** dir=%s file=%s\n",shortName().data(),fd->name().data());
688+
for (const auto &ii : fd->includeFileList())
699689
{
700-
//printf(" File %s\n",fd->name().data());
701-
//printf("** dir=%s file=%s\n",shortName().data(),fd->name().data());
702-
for (const auto &ii : fd->includeFileList())
690+
//printf(" > %s\n",ii->includeName.data());
691+
//printf(" #include %s\n",ii->includeName.data());
692+
if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
703693
{
704-
//printf(" > %s\n",ii->includeName.data());
705-
//printf(" #include %s\n",ii->includeName.data());
706-
if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file
694+
DirDef *usedDir = ii.fileDef->getDirDef();
695+
if (usedDir)
707696
{
708-
DirDef *usedDir = ii.fileDef->getDirDef();
709-
if (usedDir)
710-
{
711-
// add dependency: thisDir->usedDir
712-
//static int count=0;
713-
//printf(" %d: add dependency %s->%s\n",count++,name().data(),usedDir->name().data());
714-
addUsesDependency(usedDir,fd,ii.fileDef,FALSE);
715-
}
697+
// add dependency: thisDir->usedDir
698+
//static int count=0;
699+
//printf(" %d: add dependency %s->%s\n",count++,name().data(),usedDir->name().data());
700+
addUsesDependency(usedDir,fd,ii.fileDef,FALSE);
716701
}
717702
}
718703
}

src/dirdef.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ class DirDef : public DefinitionMutable, public Definition
9999
virtual QCString displayName(bool=TRUE) const = 0;
100100
virtual const QCString &shortName() const = 0;
101101
virtual void addSubDir(DirDef *subdir) = 0;
102-
virtual FileList * getFiles() const = 0;
103-
virtual void addFile(FileDef *fd) = 0;
102+
virtual const FileList &getFiles() const = 0;
103+
virtual void addFile(const FileDef *fd) = 0;
104104
virtual const DirList &subDirs() const = 0;
105105
virtual bool isCluster() const = 0;
106106
virtual int level() const = 0;

src/dotgroupcollaboration.cpp

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

118118
// Add files
119-
if ( gd->getFiles() && gd->getFiles()->count() )
119+
for (const auto &def : gd->getFiles())
120120
{
121-
QListIterator<FileDef> defli(*gd->getFiles());
122-
const FileDef *def;
123-
for (;(def=defli.current());++defli)
124-
{
125-
tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension;
126-
addCollaborationMember( def, tmp_url, DotGroupCollaboration::tfile );
127-
}
121+
tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension;
122+
addCollaborationMember( def, tmp_url, DotGroupCollaboration::tfile );
128123
}
129124

130125
// Add pages

src/filedef.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1996,6 +1996,13 @@ int FileDefImpl::numDecMembers() const
19961996
return ml ? ml->numDecMembers() : 0;
19971997
}
19981998

1999+
// -----------------------
2000+
2001+
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
2002+
{
2003+
return qstricmp(fd1->name(),fd2->name()) < 0;
2004+
}
2005+
19992006
// --- Cast functions
20002007

20012008
FileDef *toFileDef(Definition *d)

src/filedef.h

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ class IncludeInfoList : public std::vector<IncludeInfo>
5959
{
6060
};
6161

62+
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2);
63+
6264
/** A model of a file symbol.
6365
*
6466
* An object of this class contains all file information that is gathered.
@@ -197,20 +199,15 @@ const FileDef *toFileDef(const Definition *d);
197199

198200
// ------------------
199201

200-
/** Class representing a list of FileDef objects. */
201-
class FileList : public QList<FileDef>
202+
class FileList : public std::vector<const FileDef *>
202203
{
203-
public:
204-
FileList() : m_pathName("tmp") {}
205-
FileList(const char *path) : QList<FileDef>(), m_pathName(path) {}
206-
~FileList() {}
207-
QCString path() const { return m_pathName; }
208-
private:
209-
int compareValues(const FileDef *md1,const FileDef *md2) const
210-
{
211-
return qstricmp(md1->name(),md2->name());
212-
}
213-
QCString m_pathName;
204+
};
205+
206+
struct FilesInDir
207+
{
208+
FilesInDir(const QCString &p) : path(p) {}
209+
QCString path;
210+
std::vector<const FileDef *> files;
214211
};
215212

216213
/** Class representing an entry (file or sub directory) in a directory */

0 commit comments

Comments
 (0)