Skip to content

Commit 47c7998

Browse files
committed
Refactoring: replace FilePairDict by FilePairLinkedMap
1 parent b70b63f commit 47c7998

File tree

3 files changed

+27
-33
lines changed

3 files changed

+27
-33
lines changed

src/dirdef.cpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -657,8 +657,7 @@ void DirDefImpl::addUsesDependency(DirDef *dir,FileDef *srcFd,
657657
UsedDir *usedDir = m_usedDirs.find(dir->getOutputFileBase());
658658
if (usedDir) // dir dependency already present
659659
{
660-
const FilePair *usedPair = usedDir->findFilePair(
661-
srcFd->getOutputFileBase()+dstFd->getOutputFileBase());
660+
const FilePair *usedPair = usedDir->findFilePair(FilePair::key(srcFd,dstFd));
662661
if (usedPair==0) // new file dependency
663662
{
664663
//printf(" => new file\n");
@@ -756,44 +755,39 @@ bool DirDefImpl::depGraphIsTrivial() const
756755
return m_usedDirs.empty();
757756
}
758757

759-
//----------------------------------------------------------------------
760-
761-
int FilePairDict::compareValues(const FilePair *left,const FilePair *right) const
762-
{
763-
int orderHi = qstricmp(left->source()->name(),right->source()->name());
764-
if (orderHi!=0) return orderHi;
765-
int orderLo = qstricmp(left->destination()->name(),right->destination()->name());
766-
return orderLo;
767-
}
768758

769759
//----------------------------------------------------------------------
770760

771761
UsedDir::UsedDir(const DirDef *dir,bool inherited) :
772-
m_dir(dir), m_filePairs(7), m_inherited(inherited)
762+
m_dir(dir), m_inherited(inherited)
773763
{
774-
m_filePairs.setAutoDelete(TRUE);
775764
}
776765

777766
UsedDir::~UsedDir()
778767
{
779768
}
780769

781-
782770
void UsedDir::addFileDep(FileDef *srcFd,FileDef *dstFd)
783771
{
784-
m_filePairs.append(srcFd->getOutputFileBase()+dstFd->getOutputFileBase(),
785-
new FilePair(srcFd,dstFd));
772+
m_filePairs.add(FilePair::key(srcFd,dstFd),std::make_unique<FilePair>(srcFd,dstFd));
786773
}
787774

788775
void UsedDir::sort()
789776
{
790-
m_filePairs.sort();
777+
std::sort(m_filePairs.begin(),
778+
m_filePairs.end(),
779+
[](const auto &left,const auto &right)
780+
{
781+
int orderHi = qstricmp(left->source()->name(),right->source()->name());
782+
if (orderHi!=0) return orderHi<0;
783+
int orderLo = qstricmp(left->destination()->name(),right->destination()->name());
784+
return orderLo<0;
785+
});
791786
}
792787

793788
FilePair *UsedDir::findFilePair(const char *name)
794789
{
795-
QCString n=name;
796-
return n.isEmpty() ? 0 : m_filePairs.find(n);
790+
return m_filePairs.find(name);
797791
}
798792

799793
DirDef *DirDefImpl::createNewDir(const char *path)
@@ -846,6 +840,13 @@ DirDef *DirDefImpl::mergeDirectoryInTree(const QCString &path)
846840

847841
//----------------------------------------------------------------------
848842

843+
QCString FilePair::key(const FileDef *srcFd,const FileDef *dstFd)
844+
{
845+
return srcFd->getOutputFileBase()+";"+dstFd->getOutputFileBase();
846+
}
847+
848+
//----------------------------------------------------------------------
849+
849850
static void writePartialDirPath(OutputList &ol,const DirDef *root,const DirDef *target)
850851
{
851852
if (target->parent()!=root)
@@ -909,9 +910,7 @@ void DirRelation::writeDocumentation(OutputList &ol)
909910
ol.writeString("</th>");
910911
ol.writeString("</tr>");
911912

912-
SDict<FilePair>::Iterator fpi(m_dst->filePairs());
913-
FilePair *fp;
914-
for (fpi.toFirst();(fp=fpi.current());++fpi)
913+
for (const auto &fp : m_dst->filePairs())
915914
{
916915
ol.writeString("<tr class=\"dirtab\">");
917916
ol.writeString("<td class=\"dirtab\">");

src/dirdef.h

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717
#define DIRDEF_H
1818

1919
#include "linkedmap.h"
20-
#include "sortdict.h"
2120
#include "definition.h"
2221

2322
#include <vector>
2423
#include <map>
2524
#include <qglobal.h>
2625
#include <qcstring.h>
2726

28-
2927
class FileList;
3028
class QStrList;
3129
class FileDef;
@@ -48,20 +46,17 @@ class FilePair
4846
FilePair(FileDef *src,FileDef *dst) : m_src(src), m_dst(dst) {}
4947
const FileDef *source() const { return m_src; }
5048
const FileDef *destination() const { return m_dst; }
49+
static QCString key(const FileDef *srcFd,const FileDef *dstFd);
5150
private:
5251
FileDef *m_src;
5352
FileDef *m_dst;
5453
};
5554

5655
// ------------------
5756

58-
/** A sorted dictionary of FilePair objects. */
59-
class FilePairDict : public SDict<FilePair>
57+
/** A linked map of file pairs */
58+
class FilePairLinkedMap : public LinkedMap<FilePair>
6059
{
61-
public:
62-
FilePairDict(uint size) : SDict<FilePair>(size) {}
63-
private:
64-
int compareValues(const FilePair *item1,const FilePair *item2) const;
6560
};
6661

6762
// ------------------
@@ -74,14 +69,14 @@ class UsedDir
7469
virtual ~UsedDir();
7570
void addFileDep(FileDef *srcFd,FileDef *dstFd);
7671
FilePair *findFilePair(const char *name);
77-
const FilePairDict &filePairs() const { return m_filePairs; }
72+
const FilePairLinkedMap &filePairs() const { return m_filePairs; }
7873
const DirDef *dir() const { return m_dir; }
7974
bool inherited() const { return m_inherited; }
8075
void sort();
8176

8277
private:
8378
const DirDef *m_dir;
84-
FilePairDict m_filePairs;
79+
FilePairLinkedMap m_filePairs;
8580
bool m_inherited;
8681
};
8782

src/dotdirdeps.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void writeDotDirDepGraph(FTextStream &t,const DirDef *dd,bool linkRelations)
165165
Doxygen::dirRelations.add(relationName,
166166
std::make_unique<DirRelation>(
167167
relationName,dir,udir.get()));
168-
int nrefs = udir->filePairs().count();
168+
size_t nrefs = udir->filePairs().size();
169169
t << " " << dir->getOutputFileBase() << "->"
170170
<< usedDir->getOutputFileBase();
171171
t << " [headlabel=\"" << nrefs << "\", labeldistance=1.5";

0 commit comments

Comments
 (0)