Skip to content

Commit 0252f61

Browse files
committed
Refactoring: replace MemberSDict by MemberLinkedRefMap
1 parent e9ca9dc commit 0252f61

15 files changed

+49
-120
lines changed

src/classdef.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ struct Argument;
3434
class MemberDef;
3535
class MemberDefMutable;
3636
class MemberList;
37-
class MemberDict;
3837
class ClassLinkedRefMap;
3938
class OutputList;
4039
class FileDef;

src/code.l

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ struct codeYY_state
121121
FileDef * sourceFileDef = 0;
122122
bool lineNumbers = FALSE;
123123
const Definition * currentDefinition = 0;
124-
MemberDef * currentMemberDef = 0;
124+
const MemberDef * currentMemberDef = 0;
125125
bool includeCodeFragment = FALSE;
126126
const char * currentFontClass = 0;
127127
bool searchingForBody = FALSE;
@@ -224,7 +224,7 @@ static bool getLink(yyscan_t yyscanner,const char *className,
224224
bool varOnly=FALSE);
225225
static void generateClassOrGlobalLink(yyscan_t yyscanner,CodeOutputInterface &ol,const char *clName,
226226
bool typeOnly=FALSE,bool varOnly=FALSE);
227-
static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,MemberDef *xmd,const char *memName);
227+
static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const MemberDef *xmd,const char *memName);
228228
static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const Definition *def,const char *memName);
229229
static void generateMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const QCString &varName,
230230
const char *memName);
@@ -2344,7 +2344,7 @@ static void startCodeLine(yyscan_t yyscanner)
23442344
//lineNumber.sprintf("%05d",yyextra->yyLineNr);
23452345
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
23462346

2347-
Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
2347+
const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
23482348
//printf("%s:startCodeLine(%d)=%p\n",yyextra->sourceFileDef->name().data(),yyextra->yyLineNr,d);
23492349
if (!yyextra->includeCodeFragment && d)
23502350
{
@@ -2613,7 +2613,7 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
26132613
const NamespaceDef *mnd = getResolvedNamespace(scope);
26142614
if (mnd && !locName.isEmpty())
26152615
{
2616-
MemberDef *md=mnd->getMemberByName(locName);
2616+
const MemberDef *md=mnd->getMemberByName(locName);
26172617
if (md)
26182618
{
26192619
//printf("name=%s scope=%s\n",locName.data(),scope.data());
@@ -2981,7 +2981,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
29812981

29822982
static bool generateClassMemberLink(yyscan_t yyscanner,
29832983
CodeOutputInterface &ol,
2984-
MemberDef *xmd,
2984+
const MemberDef *xmd,
29852985
const char *memName)
29862986
{
29872987
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
@@ -3050,7 +3050,7 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
30503050
if (def && def->definitionType()==Definition::TypeClass)
30513051
{
30523052
const ClassDef *cd = toClassDef(def);
3053-
MemberDef *xmd = cd->getMemberByName(memName);
3053+
const MemberDef *xmd = cd->getMemberByName(memName);
30543054
//printf("generateClassMemberLink(class=%s,member=%s)=%p\n",def->name().data(),memName,xmd);
30553055
if (xmd)
30563056
{

src/context.cpp

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8532,24 +8532,6 @@ MemberListContext::MemberListContext(const MemberList *list) : RefCountedContext
85328532
}
85338533
}
85348534

8535-
MemberListContext::MemberListContext(MemberSDict *list,bool doSort) : RefCountedContext("MemberListContext")
8536-
{
8537-
p = new Private;
8538-
if (list)
8539-
{
8540-
if (doSort)
8541-
{
8542-
list->sort();
8543-
}
8544-
MemberSDict::Iterator it(*list);
8545-
MemberDef *md;
8546-
for (it.toFirst();(md=it.current());++it)
8547-
{
8548-
p->addMember(md);
8549-
}
8550-
}
8551-
}
8552-
85538535
MemberListContext::MemberListContext(std::vector<const MemberDef *> &&ml) : RefCountedContext("MemberListContext")
85548536
{
85558537
p = new Private;

src/context.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class FileDef;
5050
class FileList;
5151
struct IncludeInfo;
5252
class MemberList;
53-
class MemberSDict;
5453
class MemberDef;
5554
struct Argument;
5655
class ArgumentList;
@@ -962,8 +961,6 @@ class MemberListContext : public RefCountedContext, public TemplateListIntf
962961
{ return new MemberListContext; }
963962
static MemberListContext *alloc(const MemberList *ml)
964963
{ return new MemberListContext(ml); }
965-
static MemberListContext *alloc(MemberSDict *ml,bool doSort)
966-
{ return new MemberListContext(ml,doSort); }
967964
static MemberListContext *alloc(std::vector<const MemberDef *> &&ml)
968965
{ return new MemberListContext(std::move(ml)); }
969966

@@ -977,7 +974,6 @@ class MemberListContext : public RefCountedContext, public TemplateListIntf
977974
private:
978975
MemberListContext();
979976
MemberListContext(const MemberList *ml);
980-
MemberListContext(MemberSDict *ml,bool doSort);
981977
MemberListContext(std::vector<const MemberDef *> &&ml);
982978
~MemberListContext();
983979
class Private;

src/definition.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
class FileDef;
3535
class OutputList;
3636
class SectionRefs;
37-
class MemberSDict;
3837
class MemberDef;
3938
class GroupDef;
4039
class GroupList;

src/filedef.cpp

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@
4848

4949
//---------------------------------------------------------------------------
5050

51+
using DefinitionLineMap = std::unordered_map<int,const Definition *>;
52+
using MemberDefLineMap = std::unordered_map<int,const MemberDef *>;
53+
5154
class FileDefImpl : public DefinitionMixin<FileDef>
5255
{
5356
public:
@@ -69,8 +72,8 @@ class FileDefImpl : public DefinitionMixin<FileDef>
6972
virtual const QCString &docName() const { return m_docname; }
7073
virtual bool isSource() const { return m_isSource; }
7174
virtual bool isDocumentationFile() const;
72-
virtual Definition *getSourceDefinition(int lineNr) const;
73-
virtual MemberDef *getSourceMember(int lineNr) const;
75+
virtual const Definition *getSourceDefinition(int lineNr) const;
76+
virtual const MemberDef *getSourceMember(int lineNr) const;
7477
virtual QCString getPath() const { return m_path; }
7578
virtual QCString getVersion() const { return m_fileVersion; }
7679
virtual bool isLinkableInProject() const;
@@ -95,7 +98,7 @@ class FileDefImpl : public DefinitionMixin<FileDef>
9598
virtual void countMembers();
9699
virtual int numDocMembers() const;
97100
virtual int numDecMembers() const;
98-
virtual void addSourceRef(int line,Definition *d,MemberDef *md);
101+
virtual void addSourceRef(int line,const Definition *d,const MemberDef *md);
99102
virtual void writeDocumentation(OutputList &ol);
100103
virtual void writeMemberPages(OutputList &ol);
101104
virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
@@ -162,8 +165,8 @@ class FileDefImpl : public DefinitionMixin<FileDef>
162165
QCString m_outputDiskName;
163166
QCString m_fileName;
164167
QCString m_docname;
165-
QIntDict<Definition> *m_srcDefDict;
166-
QIntDict<MemberDef> *m_srcMemberDict;
168+
DefinitionLineMap m_srcDefMap;
169+
MemberDefLineMap m_srcMemberMap;
167170
bool m_isSource;
168171
QCString m_fileVersion;
169172
PackageDef *m_package;
@@ -230,8 +233,6 @@ FileDefImpl::FileDefImpl(const char *p,const char *nm,
230233
m_includeDict = 0;
231234
m_includedByList = 0;
232235
m_includedByDict = 0;
233-
m_srcDefDict = 0;
234-
m_srcMemberDict = 0;
235236
m_package = 0;
236237
m_isSource = guessSection(nm)==Entry::SOURCE_SEC;
237238
m_docname = nm;
@@ -252,8 +253,6 @@ FileDefImpl::~FileDefImpl()
252253
delete m_includeList;
253254
delete m_includedByDict;
254255
delete m_includedByList;
255-
delete m_srcDefDict;
256-
delete m_srcMemberDict;
257256
}
258257

259258
void FileDefImpl::setDiskName(const QCString &name)
@@ -1368,40 +1367,30 @@ QCString FileDefImpl::name() const
13681367
return DefinitionMixin::name();
13691368
}
13701369

1371-
void FileDefImpl::addSourceRef(int line,Definition *d,MemberDef *md)
1370+
void FileDefImpl::addSourceRef(int line,const Definition *d,const MemberDef *md)
13721371
{
13731372
//printf("FileDefImpl::addSourceDef(%d,%p,%p)\n",line,d,md);
13741373
if (d)
13751374
{
1376-
if (m_srcDefDict==0) m_srcDefDict = new QIntDict<Definition>(257);
1377-
if (m_srcMemberDict==0) m_srcMemberDict = new QIntDict<MemberDef>(257);
1378-
m_srcDefDict->insert(line,d);
1379-
if (md) m_srcMemberDict->insert(line,md);
1375+
m_srcDefMap.insert(std::make_pair(line,d));
1376+
if (md) m_srcMemberMap.insert(std::make_pair(line,md));
13801377
//printf("Adding member %s with anchor %s at line %d to file %s\n",
13811378
// md?md->name().data():"<none>",md?md->anchor().data():"<none>",line,name().data());
13821379
}
13831380
}
13841381

1385-
Definition *FileDefImpl::getSourceDefinition(int lineNr) const
1382+
const Definition *FileDefImpl::getSourceDefinition(int lineNr) const
13861383
{
1387-
Definition *result=0;
1388-
if (m_srcDefDict)
1389-
{
1390-
result = m_srcDefDict->find(lineNr);
1391-
}
1392-
//printf("%s::getSourceDefinition(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
1393-
return result;
1384+
auto it = m_srcDefMap.find(lineNr);
1385+
//printf("%s::getSourceDefinition(%d)=%s\n",name().data(),lineNr,it!=m_srcDefMap.end()?it->second->name().data():"none");
1386+
return it!=m_srcDefMap.end() ? it->second : 0;
13941387
}
13951388

1396-
MemberDef *FileDefImpl::getSourceMember(int lineNr) const
1389+
const MemberDef *FileDefImpl::getSourceMember(int lineNr) const
13971390
{
1398-
MemberDef *result=0;
1399-
if (m_srcMemberDict)
1400-
{
1401-
result = m_srcMemberDict->find(lineNr);
1402-
}
1403-
//printf("%s::getSourceMember(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
1404-
return result;
1391+
auto it = m_srcMemberMap.find(lineNr);
1392+
//printf("%s::getSourceMember(%d)=%s\n",name().data(),lineNr,it!=m_srcMemberMap.end()?it->second->name().data():"none");
1393+
return it!=m_srcMemberMap.end() ? it->second : 0;
14051394
}
14061395

14071396

src/filedef.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ class FileDef : public DefinitionMutable, public Definition
104104

105105
virtual bool isDocumentationFile() const = 0;
106106

107-
virtual Definition *getSourceDefinition(int lineNr) const = 0;
108-
virtual MemberDef *getSourceMember(int lineNr) const = 0;
107+
virtual const Definition *getSourceDefinition(int lineNr) const = 0;
108+
virtual const MemberDef *getSourceMember(int lineNr) const = 0;
109109

110110
/*! Returns the absolute path of this file. */
111111
virtual QCString getPath() const = 0;
@@ -146,7 +146,7 @@ class FileDef : public DefinitionMutable, public Definition
146146

147147
//---------------------------------
148148

149-
virtual void addSourceRef(int line,Definition *d,MemberDef *md) = 0;
149+
virtual void addSourceRef(int line,const Definition *d,const MemberDef *md) = 0;
150150

151151
virtual void writeDocumentation(OutputList &ol) = 0;
152152
virtual void writeMemberPages(OutputList &ol) = 0;

src/fortrancode.l

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ struct fortrancodeYY_state
159159
QCString exampleFile;
160160

161161
FileDef * sourceFileDef = 0;
162-
Definition * currentDefinition = 0;
163-
MemberDef * currentMemberDef = 0;
162+
const Definition * currentDefinition = 0;
163+
const MemberDef * currentMemberDef = 0;
164164
bool includeCodeFragment = false;
165165

166166
char stringStartSymbol = '\0'; // single or double quote
@@ -923,7 +923,7 @@ static void startCodeLine(yyscan_t yyscanner)
923923
//lineNumber.sprintf("%05d",yyextra->yyLineNr);
924924
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
925925

926-
Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
926+
const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
927927
//printf("startCodeLine %d d=%s\n", yyextra->yyLineNr,d ? d->name().data() : "<null>");
928928
if (!yyextra->includeCodeFragment && d)
929929
{

src/memberlist.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,13 +1099,3 @@ void MemberList::setAnchors()
10991099
}
11001100
}
11011101

1102-
1103-
1104-
//--------------------------------------------------------------------------
1105-
1106-
int MemberSDict::compareValues(const MemberDef *c1, const MemberDef *c2) const
1107-
{
1108-
return genericCompareMembers(c1,c2);
1109-
}
1110-
1111-

src/memberlist.h

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#include <qlist.h>
2222
#include "memberdef.h"
23-
#include "sortdict.h"
23+
#include "linkedmap.h"
2424
#include "types.h"
2525
#include "membergroup.h"
2626

@@ -127,22 +127,8 @@ class MemberListIterator : public QListIterator<MemberDef>
127127
virtual ~MemberListIterator() {}
128128
};
129129

130-
/** An unsorted dictionary of MemberDef objects. */
131-
class MemberDict : public QDict<MemberDef>
130+
class MemberLinkedRefMap : public LinkedRefMap<const MemberDef>
132131
{
133-
public:
134-
MemberDict(uint size) : QDict<MemberDef>(size) {}
135-
virtual ~MemberDict() {}
136-
};
137-
138-
/** A sorted dictionary of MemberDef objects. */
139-
class MemberSDict : public SDict<MemberDef>
140-
{
141-
public:
142-
MemberSDict(uint size=17) : SDict<MemberDef>(size) {}
143-
virtual ~MemberSDict() {}
144-
private:
145-
int compareValues(const MemberDef *item1,const MemberDef *item2) const;
146132
};
147133

148134
int genericCompareMembers(const MemberDef *c1,const MemberDef *c2);

0 commit comments

Comments
 (0)