diff options
-rw-r--r-- | src/classdef.cpp | 25 | ||||
-rw-r--r-- | src/classdef.h | 2 | ||||
-rw-r--r-- | src/context.cpp | 34 | ||||
-rw-r--r-- | src/dirdef.cpp | 65 | ||||
-rw-r--r-- | src/dirdef.h | 4 | ||||
-rw-r--r-- | src/dotgroupcollaboration.cpp | 11 | ||||
-rw-r--r-- | src/filedef.cpp | 7 | ||||
-rw-r--r-- | src/filedef.h | 23 | ||||
-rw-r--r-- | src/groupdef.cpp | 34 | ||||
-rw-r--r-- | src/groupdef.h | 2 | ||||
-rw-r--r-- | src/index.cpp | 44 | ||||
-rw-r--r-- | src/namespacedef.cpp | 8 | ||||
-rw-r--r-- | src/perlmodgen.cpp | 7 | ||||
-rw-r--r-- | src/sqlite3gen.cpp | 17 | ||||
-rw-r--r-- | src/xmlgen.cpp | 13 |
15 files changed, 113 insertions, 183 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index 8af0b1c..625f70f 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -248,7 +248,7 @@ class ClassDefImpl : public DefinitionMixin<ClassDefMutable> virtual void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0); virtual void setIncludeFile(FileDef *fd,const char *incName,bool local,bool force); virtual void insertMember(MemberDef *); - virtual void insertUsedFile(FileDef *); + virtual void insertUsedFile(const FileDef *); virtual bool addExample(const char *anchor,const char *name, const char *file); virtual void mergeCategory(ClassDef *category); virtual void setNamespace(NamespaceDef *nd); @@ -1177,10 +1177,14 @@ void ClassDefImpl::findSectionsInDocumentation() // add a file name to the used files set -void ClassDefImpl::insertUsedFile(FileDef *fd) +void ClassDefImpl::insertUsedFile(const FileDef *fd) { if (fd==0) return; - if (m_impl->files.find(fd)==-1) m_impl->files.append(fd); + auto it = std::find(m_impl->files.begin(),m_impl->files.end(),fd); + if (it==m_impl->files.end()) + { + m_impl->files.push_back(fd); + } for (const auto &ti : m_impl->templateInstances) { ClassDefMutable *cdm = toClassDefMutable(ti.classDef); @@ -1454,29 +1458,30 @@ QCString ClassDefImpl::generatedFromFiles() const { QCString result; SrcLangExt lang = getLanguage(); + size_t numFiles = m_impl->files.size(); if (lang==SrcLangExt_Fortran) { result = theTranslator->trGeneratedFromFilesFortran( getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType, - m_impl->files.count()==1); + numFiles==1); } else if (isJavaEnum()) { - result = theTranslator->trEnumGeneratedFromFiles(m_impl->files.count()==1); + result = theTranslator->trEnumGeneratedFromFiles(numFiles==1); } else if (m_impl->compType==Service) { - result = theTranslator->trServiceGeneratedFromFiles(m_impl->files.count()==1); + result = theTranslator->trServiceGeneratedFromFiles(numFiles==1); } else if (m_impl->compType==Singleton) { - result = theTranslator->trSingletonGeneratedFromFiles(m_impl->files.count()==1); + result = theTranslator->trSingletonGeneratedFromFiles(numFiles==1); } else { result = theTranslator->trGeneratedFromFiles( getLanguage()==SrcLangExt_ObjC && m_impl->compType==Interface ? Class : m_impl->compType, - m_impl->files.count()==1); + numFiles==1); } return result; } @@ -1499,9 +1504,7 @@ void ClassDefImpl::showUsedFiles(OutputList &ol) const ol.enable(OutputGenerator::Docbook); bool first=TRUE; - QListIterator<FileDef> li(m_impl->files); - FileDef *fd; - for (;(fd=li.current());++li) + for (const auto &fd : m_impl->files) { if (first) { diff --git a/src/classdef.h b/src/classdef.h index 95b1b31..ea14675 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -414,7 +414,7 @@ class ClassDefMutable : public DefinitionMutable, public ClassDef virtual void insertBaseClass(ClassDef *,const char *name,Protection p,Specifier s,const char *t=0) = 0; virtual void insertSubClass(ClassDef *,Protection p,Specifier s,const char *t=0) = 0; virtual void insertMember(MemberDef *) = 0; - virtual void insertUsedFile(FileDef *) = 0; + virtual void insertUsedFile(const FileDef *) = 0; virtual void addMembersToTemplateInstance(const ClassDef *cd,const ArgumentList &templateArguments,const char *templSpec) = 0; virtual void addInnerCompound(const Definition *d) = 0; virtual bool addExample(const char *anchor,const char *name, const char *file) = 0; diff --git a/src/context.cpp b/src/context.cpp index fe7bfa6..87887ff 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -3476,16 +3476,10 @@ class DirContext::Private : public DefinitionContext<DirContext::Private> if (!cache.files) { cache.files.reset(TemplateList::alloc()); - FileList *files = m_dirDef->getFiles(); - if (files) + for (const auto &fd : m_dirDef->getFiles()) { - QListIterator<FileDef> it(*files); - const FileDef *fd; - for (it.toFirst();(fd=it.current());++it) - { - FileContext *fc = FileContext::alloc(fd); - cache.files->append(fc); - } + FileContext *fc = FileContext::alloc(fd); + cache.files->append(fc); } } return cache.files.get(); @@ -5401,14 +5395,9 @@ class ModuleContext::Private : public DefinitionContext<ModuleContext::Private> if (!cache.files) { TemplateList *fileList = TemplateList::alloc(); - if (m_groupDef->getFiles()) + for (const auto &fd : m_groupDef->getFiles()) { - QListIterator<FileDef> it(*m_groupDef->getFiles()); - const FileDef *fd; - for (it.toFirst();(fd=it.current());++it) - { - fileList->append(FileContext::alloc(fd)); - } + fileList->append(FileContext::alloc(fd)); } cache.files.reset(fileList); } @@ -6349,10 +6338,7 @@ class NestingNodeContext::Private if (dd) { m_children->addDirs(dd->subDirs(),visitedClasses); - if (dd && dd->getFiles()) - { - m_children->addFiles(*dd->getFiles(),visitedClasses); - } + m_children->addFiles(dd->getFiles(),visitedClasses); } } void addPages(ClassDefSet &visitedClasses) @@ -6528,9 +6514,7 @@ class NestingContext::Private : public GenericNodeListContext } void addFiles(const FileList &fList,ClassDefSet &visitedClasses) { - QListIterator<FileDef> li(fList); - const FileDef *fd; - for (li.toFirst();(fd=li.current());++li) + for (const auto &fd : fList) { append(NestingNodeContext::alloc(m_parent,fd,m_index,m_level,FALSE,FALSE,FALSE,visitedClasses)); m_index++; @@ -7142,9 +7126,7 @@ UsedFilesContext::UsedFilesContext(const ClassDef *cd) : RefCountedContext("Used p = new Private; if (cd) { - QListIterator<FileDef> li(cd->usedFiles()); - const FileDef *fd; - for (li.toFirst();(fd=li.current());++li) + for (const auto &fd : cd->usedFiles()) { p->addFile(fd); } diff --git a/src/dirdef.cpp b/src/dirdef.cpp index 148985b..5e5ca93 100644 --- a/src/dirdef.cpp +++ b/src/dirdef.cpp @@ -49,8 +49,8 @@ class DirDefImpl : public DefinitionMixin<DirDef> virtual QCString displayName(bool=TRUE) const { return m_dispName; } virtual const QCString &shortName() const { return m_shortName; } virtual void addSubDir(DirDef *subdir); - virtual FileList * getFiles() const { return m_fileList; } - virtual void addFile(FileDef *fd); + virtual const FileList &getFiles() const { return m_fileList; } + virtual void addFile(const FileDef *fd); virtual const DirList &subDirs() const { return m_subdirs; } virtual bool isCluster() const { return m_subdirs.size()>0; } virtual int level() const { return m_level; } @@ -91,7 +91,7 @@ class DirDefImpl : public DefinitionMixin<DirDef> QCString m_dispName; QCString m_shortName; QCString m_diskName; - FileList *m_fileList; // list of files in the group + FileList m_fileList; // list of files in the group int m_dirCount; int m_level; DirDef *m_parent; @@ -132,7 +132,6 @@ DirDefImpl::DirDefImpl(const char *path) : DefinitionMixin(path,1,1,path) m_dispName = m_dispName.left(m_dispName.length()-1); } - m_fileList = new FileList; m_dirCount = g_dirCount++; m_level=-1; m_parent=0; @@ -140,7 +139,6 @@ DirDefImpl::DirDefImpl(const char *path) : DefinitionMixin(path,1,1,path) DirDefImpl::~DirDefImpl() { - delete m_fileList; } bool DirDefImpl::isLinkableInProject() const @@ -165,16 +163,16 @@ void DirDefImpl::setParent(DirDef *p) m_parent=p; } -void DirDefImpl::addFile(FileDef *fd) +void DirDefImpl::addFile(const FileDef *fd) { - m_fileList->append(fd); - fd->setDirDef(this); + m_fileList.push_back(fd); + const_cast<FileDef*>(fd)->setDirDef(this); } void DirDefImpl::sort() { std::sort(m_subdirs.begin(), m_subdirs.end(), compareDirDefs); - m_fileList->sort(); + std::sort(m_fileList.begin(), m_fileList.end(), compareFileDefs); } static QCString encodeDirName(const QCString &anchor) @@ -326,7 +324,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol) int numSubdirs = 0; for(const auto dd : m_subdirs) { - if (dd->hasDocumentation() || dd->getFiles()->count()>0) + if (dd->hasDocumentation() || !dd->getFiles().empty()) { numSubdirs++; } @@ -341,7 +339,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol) ol.startMemberList(); for(const auto dd : m_subdirs) { - if (dd->hasDocumentation() || dd->getFiles()->count()==0) + if (dd->hasDocumentation() || dd->getFiles().empty()) { ol.startMemberDeclaration(); ol.startMemberItem(dd->getOutputFileBase(),0); @@ -373,9 +371,7 @@ void DirDefImpl::writeSubDirList(OutputList &ol) void DirDefImpl::writeFileList(OutputList &ol) { int numFiles = 0; - QListIterator<FileDef> it(*m_fileList); - FileDef *fd; - for (it.toFirst();(fd=it.current());++it) + for (const auto &fd : m_fileList) { if (fd->hasDocumentation()) { @@ -390,7 +386,7 @@ void DirDefImpl::writeFileList(OutputList &ol) ol.parseText(theTranslator->trFile(TRUE,FALSE)); ol.endMemberHeader(); ol.startMemberList(); - for (it.toFirst();(fd=it.current());++it) + for (const auto &fd : m_fileList) { if (fd->hasDocumentation()) { @@ -485,14 +481,9 @@ void DirDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::DirFiles: { - if (m_fileList->count()>0) + for (const auto &fd : m_fileList) { - QListIterator<FileDef> it(*m_fileList); - FileDef *fd; - for (;(fd=it.current());++it) - { tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl; - } } } break; @@ -690,29 +681,23 @@ void DirDefImpl::addUsesDependency(const DirDef *dir,const FileDef *srcFd, */ void DirDefImpl::computeDependencies() { - FileList *fl = m_fileList; - if (fl) + for (const auto &fd : m_fileList) { - QListIterator<FileDef> fli(*fl); - FileDef *fd; - for (fli.toFirst();(fd=fli.current());++fli) // foreach file in dir dd + //printf(" File %s\n",fd->name().data()); + //printf("** dir=%s file=%s\n",shortName().data(),fd->name().data()); + for (const auto &ii : fd->includeFileList()) { - //printf(" File %s\n",fd->name().data()); - //printf("** dir=%s file=%s\n",shortName().data(),fd->name().data()); - for (const auto &ii : fd->includeFileList()) + //printf(" > %s\n",ii->includeName.data()); + //printf(" #include %s\n",ii->includeName.data()); + if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file { - //printf(" > %s\n",ii->includeName.data()); - //printf(" #include %s\n",ii->includeName.data()); - if (ii.fileDef && ii.fileDef->isLinkable()) // linkable file + DirDef *usedDir = ii.fileDef->getDirDef(); + if (usedDir) { - DirDef *usedDir = ii.fileDef->getDirDef(); - if (usedDir) - { - // add dependency: thisDir->usedDir - //static int count=0; - //printf(" %d: add dependency %s->%s\n",count++,name().data(),usedDir->name().data()); - addUsesDependency(usedDir,fd,ii.fileDef,FALSE); - } + // add dependency: thisDir->usedDir + //static int count=0; + //printf(" %d: add dependency %s->%s\n",count++,name().data(),usedDir->name().data()); + addUsesDependency(usedDir,fd,ii.fileDef,FALSE); } } } diff --git a/src/dirdef.h b/src/dirdef.h index 35bb4fd..d047a99 100644 --- a/src/dirdef.h +++ b/src/dirdef.h @@ -99,8 +99,8 @@ class DirDef : public DefinitionMutable, public Definition virtual QCString displayName(bool=TRUE) const = 0; virtual const QCString &shortName() const = 0; virtual void addSubDir(DirDef *subdir) = 0; - virtual FileList * getFiles() const = 0; - virtual void addFile(FileDef *fd) = 0; + virtual const FileList &getFiles() const = 0; + virtual void addFile(const FileDef *fd) = 0; virtual const DirList &subDirs() const = 0; virtual bool isCluster() const = 0; virtual int level() const = 0; diff --git a/src/dotgroupcollaboration.cpp b/src/dotgroupcollaboration.cpp index ff81ecc..a2db7d0 100644 --- a/src/dotgroupcollaboration.cpp +++ b/src/dotgroupcollaboration.cpp @@ -116,15 +116,10 @@ void DotGroupCollaboration::buildGraph(const GroupDef* gd) } // Add files - if ( gd->getFiles() && gd->getFiles()->count() ) + for (const auto &def : gd->getFiles()) { - QListIterator<FileDef> defli(*gd->getFiles()); - const FileDef *def; - for (;(def=defli.current());++defli) - { - tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension; - addCollaborationMember( def, tmp_url, DotGroupCollaboration::tfile ); - } + tmp_url = def->getReference()+"$"+def->getOutputFileBase()+Doxygen::htmlFileExtension; + addCollaborationMember( def, tmp_url, DotGroupCollaboration::tfile ); } // Add pages diff --git a/src/filedef.cpp b/src/filedef.cpp index 490b748..a512c40 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -1996,6 +1996,13 @@ int FileDefImpl::numDecMembers() const return ml ? ml->numDecMembers() : 0; } +// ----------------------- + +bool compareFileDefs(const FileDef *fd1, const FileDef *fd2) +{ + return qstricmp(fd1->name(),fd2->name()) < 0; +} + // --- Cast functions FileDef *toFileDef(Definition *d) diff --git a/src/filedef.h b/src/filedef.h index 27ede5f..3228b00 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -59,6 +59,8 @@ class IncludeInfoList : public std::vector<IncludeInfo> { }; +bool compareFileDefs(const FileDef *fd1, const FileDef *fd2); + /** A model of a file symbol. * * An object of this class contains all file information that is gathered. @@ -197,20 +199,15 @@ const FileDef *toFileDef(const Definition *d); // ------------------ -/** Class representing a list of FileDef objects. */ -class FileList : public QList<FileDef> +class FileList : public std::vector<const FileDef *> { - public: - FileList() : m_pathName("tmp") {} - FileList(const char *path) : QList<FileDef>(), m_pathName(path) {} - ~FileList() {} - QCString path() const { return m_pathName; } - private: - int compareValues(const FileDef *md1,const FileDef *md2) const - { - return qstricmp(md1->name(),md2->name()); - } - QCString m_pathName; +}; + +struct FilesInDir +{ + FilesInDir(const QCString &p) : path(p) {} + QCString path; + std::vector<const FileDef *> files; }; /** Class representing an entry (file or sub directory) in a directory */ diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 6e5a074..4b2f623 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -100,7 +100,7 @@ class GroupDefImpl : public DefinitionMixin<GroupDef> /* user defined member groups */ virtual const MemberGroupList &getMemberGroups() const { return m_memberGroups; } - virtual FileList * getFiles() const { return m_fileList; } + virtual const FileList &getFiles() const { return m_fileList; } virtual const ClassLinkedRefMap &getClasses() const { return m_classes; } virtual const NamespaceLinkedRefMap &getNamespaces() const { return m_namespaces; } virtual const GroupList &getSubGroups() const { return m_groups; } @@ -138,7 +138,7 @@ class GroupDefImpl : public DefinitionMixin<GroupDef> QCString m_title; // title of the group bool m_titleSet; // true if title is not the same as the name QCString m_fileName; // base name of the generated file - FileList * m_fileList; // list of files in the group + FileList m_fileList; // list of files in the group ClassLinkedRefMap m_classes; // list of classes in the group NamespaceLinkedRefMap m_namespaces; // list of namespaces in the group GroupList m_groups; // list of sub groups. @@ -167,7 +167,6 @@ GroupDefImpl::GroupDefImpl(const char *df,int dl,const char *na,const char *t, const char *refFileName) : DefinitionMixin(df,dl,1,na), m_allMemberList(MemberListType_allMembersList) { - m_fileList = new FileList; if (refFileName) { m_fileName=stripExtension(refFileName); @@ -185,7 +184,6 @@ GroupDefImpl::GroupDefImpl(const char *df,int dl,const char *na,const char *t, GroupDefImpl::~GroupDefImpl() { - delete m_fileList; } void GroupDefImpl::setGroupTitle( const char *t ) @@ -237,9 +235,12 @@ void GroupDefImpl::addFile(const FileDef *def) if (def->isHidden()) return; updateLanguage(def); if (sortBriefDocs) - m_fileList->inSort(def); + m_fileList.insert( std::upper_bound( m_fileList.begin(), m_fileList.end(), def, + [](const auto &fd1, const auto &fd2) + { return qstricmp(fd1->name(),fd2->name())<0; }), + def); else - m_fileList->append(def); + m_fileList.push_back(def); } bool GroupDefImpl::addClass(const ClassDef *cd) @@ -579,7 +580,7 @@ void GroupDefImpl::countMembers() size_t GroupDefImpl::numDocMembers() const { - return m_fileList->count()+ + return m_fileList.size()+ m_classes.size()+ m_namespaces.size()+ m_groups.size()+ @@ -631,16 +632,11 @@ void GroupDefImpl::writeTagFile(FTextStream &tagFile) break; case LayoutDocEntry::GroupFiles: { - if (m_fileList) + for (const auto &fd : m_fileList) { - QListIterator<FileDef> it(*m_fileList); - FileDef *fd; - for (;(fd=it.current());++it) + if (fd->isLinkableInProject()) { - if (fd->isLinkableInProject()) - { - tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl; - } + tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl; } } } @@ -827,15 +823,13 @@ void GroupDefImpl::writeGroupGraph(OutputList &ol) void GroupDefImpl::writeFiles(OutputList &ol,const QCString &title) { // write list of files - if (m_fileList->count()>0) + if (!m_fileList.empty()) { ol.startMemberHeader("files"); ol.parseText(title); ol.endMemberHeader(); ol.startMemberList(); - QListIterator<FileDef> it(*m_fileList); - FileDef *fd; - for (;(fd=it.current());++it) + for (const auto &fd : m_fileList) { if (!fd->hasDocumentation()) continue; ol.startMemberDeclaration(); @@ -1030,7 +1024,7 @@ void GroupDefImpl::writeSummaryLinks(OutputList &ol) const { if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classes.declVisible()) || (lde->kind()==LayoutDocEntry::GroupNamespaces && m_namespaces.declVisible()) || - (lde->kind()==LayoutDocEntry::GroupFiles && m_fileList->count()>0) || + (lde->kind()==LayoutDocEntry::GroupFiles && !m_fileList.empty()) || (lde->kind()==LayoutDocEntry::GroupNestedGroups && !m_groups.empty()) || (lde->kind()==LayoutDocEntry::GroupDirs && !m_dirList.empty()) ) diff --git a/src/groupdef.h b/src/groupdef.h index c05d524..94214c4 100644 --- a/src/groupdef.h +++ b/src/groupdef.h @@ -95,7 +95,7 @@ class GroupDef : public DefinitionMutable, public Definition /* user defined member groups */ virtual const MemberGroupList &getMemberGroups() const = 0; - virtual FileList * getFiles() const = 0; + virtual const FileList &getFiles() const = 0; virtual const ClassLinkedRefMap &getClasses() const = 0; virtual const NamespaceLinkedRefMap &getNamespaces() const = 0; virtual const GroupList &getSubGroups() const = 0; diff --git a/src/index.cpp b/src/index.cpp index 52f6c5d..4791ed5 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -533,9 +533,7 @@ static bool dirHasVisibleChildren(const DirDef *dd) { if (dd->hasDocumentation()) return TRUE; - QListIterator<FileDef> fli(*dd->getFiles()); - FileDef *fd; - for (fli.toFirst();(fd=fli.current());++fli) + for (const auto &fd : dd->getFiles()) { bool genSourceFile; if (fileVisibleInIndex(fd,genSourceFile)) @@ -576,9 +574,9 @@ static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHel } static bool tocExpand = TRUE; //Config_getBool(TOC_EXPAND); - bool isDir = dd->subDirs().size()>0 || // there are subdirs + bool isDir = !dd->subDirs().empty() || // there are subdirs (tocExpand && // or toc expand and - dd->getFiles() && dd->getFiles()->count()>0 // there are files + !dd->getFiles().empty() // there are files ); //printf("gd='%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count()); if (addToIndex) @@ -615,13 +613,10 @@ static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHel endIndexHierarchy(ol,level+1); } - FileList *fileList=dd->getFiles(); int fileCount=0; - if (fileList && fileList->count()>0) + if (!dd->getFiles().empty()) { - QListIterator<FileDef> it(*fileList); - FileDef *fd; - for (;(fd=it.current());++it) + for (const auto &fd : dd->getFiles()) { //static bool allExternals = Config_getBool(ALLEXTERNALS); //if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject()) @@ -641,7 +636,7 @@ static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHel if (fileCount>0) { startIndexHierarchy(ol,level+1); - for (it.toFirst();(fd=it.current());++it) + for (const auto &fd : dd->getFiles()) { bool doc,src; doc = fileVisibleInIndex(fd,src); @@ -677,9 +672,7 @@ static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHel // write files of this directory if (fileCount>0) { - QListIterator<FileDef> it(*fileList); - FileDef *fd; - for (;(fd=it.current());++it) + for (const auto &fd : dd->getFiles()) { //static bool allExternals = Config_getBool(ALLEXTERNALS); //if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject()) @@ -1407,14 +1400,7 @@ static void writeFileIndex(OutputList &ol) ol.startIndexList(); if (Config_getBool(FULL_PATH_NAMES)) { - struct FilesInDir - { - FilesInDir(const QCString &p) : path(p) {} - QCString path; - std::vector<const FileDef *> files; - }; - - std::unordered_map<std::string,std::vector<FilesInDir>::iterator> pathMap; + std::unordered_map<std::string,size_t> pathMap; std::vector<FilesInDir> outputFiles; // re-sort input files in (dir,file) output order instead of (file,dir) input order @@ -1427,12 +1413,12 @@ static void writeFileIndex(OutputList &ol) auto it = pathMap.find(path.str()); if (it!=pathMap.end()) { - it->second->files.push_back(fd.get()); + outputFiles.at(it->second).files.push_back(fd.get()); } else { + pathMap.insert(std::make_pair(path.str(),outputFiles.size())); outputFiles.emplace_back(path); - pathMap.insert(std::make_pair(path.str(),outputFiles.end()-1)); } } } @@ -1443,9 +1429,7 @@ static void writeFileIndex(OutputList &ol) // sort the files inside the directory by name for (auto &fp : outputFiles) { - std::sort(fp.files.begin(), - fp.files.end(), - [](const auto &fd1,const auto &fd2) { return qstricmp(fd1->name(),fd2->name()); }); + std::sort(fp.files.begin(), fp.files.end(), compareFileDefs); } // write the results for (const auto &fp : outputFiles) @@ -3759,7 +3743,7 @@ static void writeGroupTreeNode(OutputList &ol, const GroupDef *gd, int level, FT } numSubItems += gd->getNamespaces().size(); numSubItems += gd->getClasses().size(); - numSubItems += gd->getFiles()->count(); + numSubItems += gd->getFiles().size(); numSubItems += gd->getDirs().size(); numSubItems += gd->getPages().size(); } @@ -3869,9 +3853,7 @@ static void writeGroupTreeNode(OutputList &ol, const GroupDef *gd, int level, FT } else if (lde->kind()==LayoutDocEntry::GroupFiles && addToIndex) { - QListIterator<FileDef> it(*gd->getFiles()); - FileDef *fd; - for (;(fd=it.current());++it) + for (const auto &fd : gd->getFiles()) { if (fd->isVisible()) { diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index d28f783..7acd463 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -327,12 +327,10 @@ void NamespaceDefImpl::findSectionsInDocumentation() void NamespaceDefImpl::insertUsedFile(FileDef *fd) { if (fd==0) return; - if (files.find(fd)==-1) + auto it = std::find(files.begin(),files.end(),fd); + if (it==files.end()) { - if (Config_getBool(SORT_MEMBER_DOCS)) - files.inSort(fd); - else - files.append(fd); + files.push_back(fd); } } diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index f74a003..95a0679 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -2066,13 +2066,10 @@ void PerlModGenerator::generatePerlModForGroup(const GroupDef *gd) .addFieldQuotedString("name", gd->name()) .addFieldQuotedString("title", gd->groupTitle()); - FileList *fl = gd->getFiles(); - if (fl) + if (!gd->getFiles().empty()) { m_output.openList("files"); - QListIterator<FileDef> fli(*fl); - const FileDef *fd; - for (fli.toFirst();(fd=fli.current());++fli) + for (const auto &fd : gd->getFiles()) m_output.openHash() .addFieldQuotedString("name", fd->name()) .closeHash(); diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index 5cee785..3c021a6 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -1296,20 +1296,15 @@ static void writeInnerGroups(const GroupList &gl, struct Refid outer_refid) } } -static void writeInnerFiles(const FileList *fl, struct Refid outer_refid) +static void writeInnerFiles(const FileList &fl, struct Refid outer_refid) { - if (fl) + for (const auto &fd: fl) { - QListIterator<FileDef> fli(*fl); - const FileDef *fd; - for (fli.toFirst();(fd=fli.current());++fli) - { - struct Refid inner_refid = insertRefid(fd->getOutputFileBase()); + struct Refid inner_refid = insertRefid(fd->getOutputFileBase()); - bindIntParameter(contains_insert,":inner_rowid", inner_refid.rowid); - bindIntParameter(contains_insert,":outer_rowid", outer_refid.rowid); - step(contains_insert); - } + bindIntParameter(contains_insert,":inner_rowid", inner_refid.rowid); + bindIntParameter(contains_insert,":outer_rowid", outer_refid.rowid); + step(contains_insert); } } diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 61fba77..e8bb9e7 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -1153,17 +1153,12 @@ static void writeInnerNamespaces(const NamespaceLinkedRefMap &nl,FTextStream &t) } } -static void writeInnerFiles(const FileList *fl,FTextStream &t) +static void writeInnerFiles(const FileList &fl,FTextStream &t) { - if (fl) + for (const auto &fd : fl) { - QListIterator<FileDef> fli(*fl); - FileDef *fd; - for (fli.toFirst();(fd=fli.current());++fli) - { - t << " <innerfile refid=\"" << fd->getOutputFileBase() - << "\">" << convertToXML(fd->name()) << "</innerfile>" << endl; - } + t << " <innerfile refid=\"" << fd->getOutputFileBase() + << "\">" << convertToXML(fd->name()) << "</innerfile>" << endl; } } |