summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2021-01-04 11:04:45 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2021-01-04 11:04:45 (GMT)
commit0252f61004cada8f9e10644b850dd6ba47d61438 (patch)
tree37e017e9e08a7e876bcd32d9fc13aeb6257aabd1 /src
parente9ca9dcd2b4606dedfde0e6f9084c654f09becc8 (diff)
downloadDoxygen-0252f61004cada8f9e10644b850dd6ba47d61438.zip
Doxygen-0252f61004cada8f9e10644b850dd6ba47d61438.tar.gz
Doxygen-0252f61004cada8f9e10644b850dd6ba47d61438.tar.bz2
Refactoring: replace MemberSDict by MemberLinkedRefMap
Diffstat (limited to 'src')
-rw-r--r--src/classdef.h1
-rw-r--r--src/code.l12
-rw-r--r--src/context.cpp18
-rw-r--r--src/context.h4
-rw-r--r--src/definition.h1
-rw-r--r--src/filedef.cpp49
-rw-r--r--src/filedef.h6
-rw-r--r--src/fortrancode.l6
-rw-r--r--src/memberlist.cpp10
-rw-r--r--src/memberlist.h18
-rw-r--r--src/namespacedef.cpp24
-rw-r--r--src/namespacedef.h2
-rw-r--r--src/pycode.l14
-rw-r--r--src/vhdlcode.l2
-rw-r--r--src/xmlcode.l2
15 files changed, 49 insertions, 120 deletions
diff --git a/src/classdef.h b/src/classdef.h
index b0ce4b1..2a96d22 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -34,7 +34,6 @@ struct Argument;
class MemberDef;
class MemberDefMutable;
class MemberList;
-class MemberDict;
class ClassLinkedRefMap;
class OutputList;
class FileDef;
diff --git a/src/code.l b/src/code.l
index 94a7bcd..a2dd6e2 100644
--- a/src/code.l
+++ b/src/code.l
@@ -121,7 +121,7 @@ struct codeYY_state
FileDef * sourceFileDef = 0;
bool lineNumbers = FALSE;
const Definition * currentDefinition = 0;
- MemberDef * currentMemberDef = 0;
+ const MemberDef * currentMemberDef = 0;
bool includeCodeFragment = FALSE;
const char * currentFontClass = 0;
bool searchingForBody = FALSE;
@@ -224,7 +224,7 @@ static bool getLink(yyscan_t yyscanner,const char *className,
bool varOnly=FALSE);
static void generateClassOrGlobalLink(yyscan_t yyscanner,CodeOutputInterface &ol,const char *clName,
bool typeOnly=FALSE,bool varOnly=FALSE);
-static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,MemberDef *xmd,const char *memName);
+static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const MemberDef *xmd,const char *memName);
static bool generateClassMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const Definition *def,const char *memName);
static void generateMemberLink(yyscan_t yyscanner,CodeOutputInterface &ol,const QCString &varName,
const char *memName);
@@ -2344,7 +2344,7 @@ static void startCodeLine(yyscan_t yyscanner)
//lineNumber.sprintf("%05d",yyextra->yyLineNr);
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
- Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
+ const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
//printf("%s:startCodeLine(%d)=%p\n",yyextra->sourceFileDef->name().data(),yyextra->yyLineNr,d);
if (!yyextra->includeCodeFragment && d)
{
@@ -2613,7 +2613,7 @@ static const MemberDef *setCallContextForVar(yyscan_t yyscanner,const QCString &
const NamespaceDef *mnd = getResolvedNamespace(scope);
if (mnd && !locName.isEmpty())
{
- MemberDef *md=mnd->getMemberByName(locName);
+ const MemberDef *md=mnd->getMemberByName(locName);
if (md)
{
//printf("name=%s scope=%s\n",locName.data(),scope.data());
@@ -2981,7 +2981,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
static bool generateClassMemberLink(yyscan_t yyscanner,
CodeOutputInterface &ol,
- MemberDef *xmd,
+ const MemberDef *xmd,
const char *memName)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
@@ -3050,7 +3050,7 @@ static bool generateClassMemberLink(yyscan_t yyscanner,
if (def && def->definitionType()==Definition::TypeClass)
{
const ClassDef *cd = toClassDef(def);
- MemberDef *xmd = cd->getMemberByName(memName);
+ const MemberDef *xmd = cd->getMemberByName(memName);
//printf("generateClassMemberLink(class=%s,member=%s)=%p\n",def->name().data(),memName,xmd);
if (xmd)
{
diff --git a/src/context.cpp b/src/context.cpp
index 9b4100c..95fb82d 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -8532,24 +8532,6 @@ MemberListContext::MemberListContext(const MemberList *list) : RefCountedContext
}
}
-MemberListContext::MemberListContext(MemberSDict *list,bool doSort) : RefCountedContext("MemberListContext")
-{
- p = new Private;
- if (list)
- {
- if (doSort)
- {
- list->sort();
- }
- MemberSDict::Iterator it(*list);
- MemberDef *md;
- for (it.toFirst();(md=it.current());++it)
- {
- p->addMember(md);
- }
- }
-}
-
MemberListContext::MemberListContext(std::vector<const MemberDef *> &&ml) : RefCountedContext("MemberListContext")
{
p = new Private;
diff --git a/src/context.h b/src/context.h
index c6bf1ac..a975d3d 100644
--- a/src/context.h
+++ b/src/context.h
@@ -50,7 +50,6 @@ class FileDef;
class FileList;
struct IncludeInfo;
class MemberList;
-class MemberSDict;
class MemberDef;
struct Argument;
class ArgumentList;
@@ -962,8 +961,6 @@ class MemberListContext : public RefCountedContext, public TemplateListIntf
{ return new MemberListContext; }
static MemberListContext *alloc(const MemberList *ml)
{ return new MemberListContext(ml); }
- static MemberListContext *alloc(MemberSDict *ml,bool doSort)
- { return new MemberListContext(ml,doSort); }
static MemberListContext *alloc(std::vector<const MemberDef *> &&ml)
{ return new MemberListContext(std::move(ml)); }
@@ -977,7 +974,6 @@ class MemberListContext : public RefCountedContext, public TemplateListIntf
private:
MemberListContext();
MemberListContext(const MemberList *ml);
- MemberListContext(MemberSDict *ml,bool doSort);
MemberListContext(std::vector<const MemberDef *> &&ml);
~MemberListContext();
class Private;
diff --git a/src/definition.h b/src/definition.h
index eb4c42a..444b188 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -34,7 +34,6 @@
class FileDef;
class OutputList;
class SectionRefs;
-class MemberSDict;
class MemberDef;
class GroupDef;
class GroupList;
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 3fd542f..6c31940 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -48,6 +48,9 @@
//---------------------------------------------------------------------------
+using DefinitionLineMap = std::unordered_map<int,const Definition *>;
+using MemberDefLineMap = std::unordered_map<int,const MemberDef *>;
+
class FileDefImpl : public DefinitionMixin<FileDef>
{
public:
@@ -69,8 +72,8 @@ class FileDefImpl : public DefinitionMixin<FileDef>
virtual const QCString &docName() const { return m_docname; }
virtual bool isSource() const { return m_isSource; }
virtual bool isDocumentationFile() const;
- virtual Definition *getSourceDefinition(int lineNr) const;
- virtual MemberDef *getSourceMember(int lineNr) const;
+ virtual const Definition *getSourceDefinition(int lineNr) const;
+ virtual const MemberDef *getSourceMember(int lineNr) const;
virtual QCString getPath() const { return m_path; }
virtual QCString getVersion() const { return m_fileVersion; }
virtual bool isLinkableInProject() const;
@@ -95,7 +98,7 @@ class FileDefImpl : public DefinitionMixin<FileDef>
virtual void countMembers();
virtual int numDocMembers() const;
virtual int numDecMembers() const;
- virtual void addSourceRef(int line,Definition *d,MemberDef *md);
+ virtual void addSourceRef(int line,const Definition *d,const MemberDef *md);
virtual void writeDocumentation(OutputList &ol);
virtual void writeMemberPages(OutputList &ol);
virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
@@ -162,8 +165,8 @@ class FileDefImpl : public DefinitionMixin<FileDef>
QCString m_outputDiskName;
QCString m_fileName;
QCString m_docname;
- QIntDict<Definition> *m_srcDefDict;
- QIntDict<MemberDef> *m_srcMemberDict;
+ DefinitionLineMap m_srcDefMap;
+ MemberDefLineMap m_srcMemberMap;
bool m_isSource;
QCString m_fileVersion;
PackageDef *m_package;
@@ -230,8 +233,6 @@ FileDefImpl::FileDefImpl(const char *p,const char *nm,
m_includeDict = 0;
m_includedByList = 0;
m_includedByDict = 0;
- m_srcDefDict = 0;
- m_srcMemberDict = 0;
m_package = 0;
m_isSource = guessSection(nm)==Entry::SOURCE_SEC;
m_docname = nm;
@@ -252,8 +253,6 @@ FileDefImpl::~FileDefImpl()
delete m_includeList;
delete m_includedByDict;
delete m_includedByList;
- delete m_srcDefDict;
- delete m_srcMemberDict;
}
void FileDefImpl::setDiskName(const QCString &name)
@@ -1368,40 +1367,30 @@ QCString FileDefImpl::name() const
return DefinitionMixin::name();
}
-void FileDefImpl::addSourceRef(int line,Definition *d,MemberDef *md)
+void FileDefImpl::addSourceRef(int line,const Definition *d,const MemberDef *md)
{
//printf("FileDefImpl::addSourceDef(%d,%p,%p)\n",line,d,md);
if (d)
{
- if (m_srcDefDict==0) m_srcDefDict = new QIntDict<Definition>(257);
- if (m_srcMemberDict==0) m_srcMemberDict = new QIntDict<MemberDef>(257);
- m_srcDefDict->insert(line,d);
- if (md) m_srcMemberDict->insert(line,md);
+ m_srcDefMap.insert(std::make_pair(line,d));
+ if (md) m_srcMemberMap.insert(std::make_pair(line,md));
//printf("Adding member %s with anchor %s at line %d to file %s\n",
// md?md->name().data():"<none>",md?md->anchor().data():"<none>",line,name().data());
}
}
-Definition *FileDefImpl::getSourceDefinition(int lineNr) const
+const Definition *FileDefImpl::getSourceDefinition(int lineNr) const
{
- Definition *result=0;
- if (m_srcDefDict)
- {
- result = m_srcDefDict->find(lineNr);
- }
- //printf("%s::getSourceDefinition(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
- return result;
+ auto it = m_srcDefMap.find(lineNr);
+ //printf("%s::getSourceDefinition(%d)=%s\n",name().data(),lineNr,it!=m_srcDefMap.end()?it->second->name().data():"none");
+ return it!=m_srcDefMap.end() ? it->second : 0;
}
-MemberDef *FileDefImpl::getSourceMember(int lineNr) const
+const MemberDef *FileDefImpl::getSourceMember(int lineNr) const
{
- MemberDef *result=0;
- if (m_srcMemberDict)
- {
- result = m_srcMemberDict->find(lineNr);
- }
- //printf("%s::getSourceMember(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
- return result;
+ auto it = m_srcMemberMap.find(lineNr);
+ //printf("%s::getSourceMember(%d)=%s\n",name().data(),lineNr,it!=m_srcMemberMap.end()?it->second->name().data():"none");
+ return it!=m_srcMemberMap.end() ? it->second : 0;
}
diff --git a/src/filedef.h b/src/filedef.h
index e08002b..f27ff6d 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -104,8 +104,8 @@ class FileDef : public DefinitionMutable, public Definition
virtual bool isDocumentationFile() const = 0;
- virtual Definition *getSourceDefinition(int lineNr) const = 0;
- virtual MemberDef *getSourceMember(int lineNr) const = 0;
+ virtual const Definition *getSourceDefinition(int lineNr) const = 0;
+ virtual const MemberDef *getSourceMember(int lineNr) const = 0;
/*! Returns the absolute path of this file. */
virtual QCString getPath() const = 0;
@@ -146,7 +146,7 @@ class FileDef : public DefinitionMutable, public Definition
//---------------------------------
- virtual void addSourceRef(int line,Definition *d,MemberDef *md) = 0;
+ virtual void addSourceRef(int line,const Definition *d,const MemberDef *md) = 0;
virtual void writeDocumentation(OutputList &ol) = 0;
virtual void writeMemberPages(OutputList &ol) = 0;
diff --git a/src/fortrancode.l b/src/fortrancode.l
index 0ddddd1..df6acf4 100644
--- a/src/fortrancode.l
+++ b/src/fortrancode.l
@@ -159,8 +159,8 @@ struct fortrancodeYY_state
QCString exampleFile;
FileDef * sourceFileDef = 0;
- Definition * currentDefinition = 0;
- MemberDef * currentMemberDef = 0;
+ const Definition * currentDefinition = 0;
+ const MemberDef * currentMemberDef = 0;
bool includeCodeFragment = false;
char stringStartSymbol = '\0'; // single or double quote
@@ -923,7 +923,7 @@ static void startCodeLine(yyscan_t yyscanner)
//lineNumber.sprintf("%05d",yyextra->yyLineNr);
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
- Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
+ const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
//printf("startCodeLine %d d=%s\n", yyextra->yyLineNr,d ? d->name().data() : "<null>");
if (!yyextra->includeCodeFragment && d)
{
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 4daedb5..c71390c 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -1099,13 +1099,3 @@ void MemberList::setAnchors()
}
}
-
-
-//--------------------------------------------------------------------------
-
-int MemberSDict::compareValues(const MemberDef *c1, const MemberDef *c2) const
-{
- return genericCompareMembers(c1,c2);
-}
-
-
diff --git a/src/memberlist.h b/src/memberlist.h
index 2c2d5ee..200767d 100644
--- a/src/memberlist.h
+++ b/src/memberlist.h
@@ -20,7 +20,7 @@
#include <qlist.h>
#include "memberdef.h"
-#include "sortdict.h"
+#include "linkedmap.h"
#include "types.h"
#include "membergroup.h"
@@ -127,22 +127,8 @@ class MemberListIterator : public QListIterator<MemberDef>
virtual ~MemberListIterator() {}
};
-/** An unsorted dictionary of MemberDef objects. */
-class MemberDict : public QDict<MemberDef>
+class MemberLinkedRefMap : public LinkedRefMap<const MemberDef>
{
- public:
- MemberDict(uint size) : QDict<MemberDef>(size) {}
- virtual ~MemberDict() {}
-};
-
-/** A sorted dictionary of MemberDef objects. */
-class MemberSDict : public SDict<MemberDef>
-{
- public:
- MemberSDict(uint size=17) : SDict<MemberDef>(size) {}
- virtual ~MemberSDict() {}
- private:
- int compareValues(const MemberDef *item1,const MemberDef *item2) const;
};
int genericCompareMembers(const MemberDef *c1,const MemberDef *c2);
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 0651fdf..1108653 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -96,7 +96,7 @@ class NamespaceDefImpl : public DefinitionMixin<NamespaceDefMutable>
virtual bool subGrouping() const { return m_subGrouping; }
virtual MemberList *getMemberList(MemberListType lt) const;
virtual const QList<MemberList> &getMemberLists() const { return m_memberLists; }
- virtual MemberDef *getMemberByName(const QCString &) const;
+ virtual const MemberDef *getMemberByName(const QCString &) const;
virtual const MemberGroupList &getMemberGroups() const { return m_memberGroups; }
virtual ClassLinkedRefMap getClasses() const { return classes; }
virtual ClassLinkedRefMap getInterfaces() const { return interfaces; }
@@ -138,7 +138,7 @@ class NamespaceDefImpl : public DefinitionMixin<NamespaceDefMutable>
LinkedRefMap<const ClassDef> m_usingDeclList;
SDict<Definition> *m_innerCompounds = 0;
- MemberSDict *m_allMembersDict = 0;
+ MemberLinkedRefMap m_allMembers;
QList<MemberList> m_memberLists;
MemberGroupList m_memberGroups;
ClassLinkedRefMap classes;
@@ -210,7 +210,7 @@ class NamespaceDefAliasImpl : public DefinitionAliasMixin<NamespaceDef>
{ return getNSAlias()->getMemberList(lt); }
virtual const QList<MemberList> &getMemberLists() const
{ return getNSAlias()->getMemberLists(); }
- virtual MemberDef *getMemberByName(const QCString &name) const
+ virtual const MemberDef *getMemberByName(const QCString &name) const
{ return getNSAlias()->getMemberByName(name); }
virtual const MemberGroupList &getMemberGroups() const
{ return getNSAlias()->getMemberGroups(); }
@@ -264,7 +264,6 @@ NamespaceDefImpl::NamespaceDefImpl(const char *df,int dl,int dc,
setFileName(name);
}
m_innerCompounds = new SDict<Definition>(17);
- m_allMembersDict = 0;
setReference(lref);
m_inline=FALSE;
m_subGrouping=Config_getBool(SUBGROUPING);
@@ -289,7 +288,6 @@ NamespaceDefImpl::NamespaceDefImpl(const char *df,int dl,int dc,
NamespaceDefImpl::~NamespaceDefImpl()
{
delete m_innerCompounds;
- delete m_allMembersDict;
}
void NamespaceDefImpl::setFileName(const QCString &fn)
@@ -455,12 +453,8 @@ void NamespaceDefImpl::insertMember(MemberDef *md)
m_memberLists.append(allMemberList);
}
allMemberList->append(md);
- if (m_allMembersDict==0)
- {
- m_allMembersDict = new MemberSDict;
- }
//printf("%s::m_allMembersDict->append(%s)\n",name().data(),md->localName().data());
- m_allMembersDict->append(md->localName(),md);
+ m_allMembers.add(md->localName(),md);
//::addNamespaceMemberNameToIndex(md);
//static bool sortBriefDocs=Config_getBool(SORT_BRIEF_DOCS);
switch(md->memberType())
@@ -1465,15 +1459,9 @@ bool NamespaceDefImpl::isLinkable() const
return isLinkableInProject() || isReference();
}
-MemberDef * NamespaceDefImpl::getMemberByName(const QCString &n) const
+const MemberDef * NamespaceDefImpl::getMemberByName(const QCString &n) const
{
- MemberDef *md = 0;
- if (m_allMembersDict && !n.isEmpty())
- {
- md = m_allMembersDict->find(n);
- //printf("%s::m_allMembersDict->find(%s)=%p\n",name().data(),n.data(),md);
- }
- return md;
+ return m_allMembers.find(n);
}
QCString NamespaceDefImpl::title() const
diff --git a/src/namespacedef.h b/src/namespacedef.h
index fb6a0d5..6838157 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -76,7 +76,7 @@ class NamespaceDef : public Definition
virtual bool subGrouping() const = 0;
virtual MemberList *getMemberList(MemberListType lt) const = 0;
virtual const QList<MemberList> &getMemberLists() const = 0;
- virtual MemberDef *getMemberByName(const QCString &) const = 0;
+ virtual const MemberDef *getMemberByName(const QCString &) const = 0;
/*! Returns the user defined member groups */
virtual const MemberGroupList &getMemberGroups() const = 0;
diff --git a/src/pycode.l b/src/pycode.l
index b7f3b66..65788cc 100644
--- a/src/pycode.l
+++ b/src/pycode.l
@@ -81,8 +81,8 @@ struct pycodeYY_state
int inputLines = 0; //!< number of line in the code fragment
int yyLineNr = 0; //!< current line number
FileDef * sourceFileDef = 0;
- Definition * currentDefinition = 0;
- MemberDef * currentMemberDef = 0;
+ const Definition * currentDefinition = 0;
+ const MemberDef * currentMemberDef = 0;
bool includeCodeFragment = FALSE;
QCString realScope;
int bodyCurlyCount = 0;
@@ -1010,7 +1010,7 @@ static void startCodeLine(yyscan_t yyscanner)
//lineNumber.sprintf("%05d",yyextra->yyLineNr);
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
- Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
+ const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
//printf("startCodeLine %d d=%p\n",yyextra->yyLineNr,d);
//yyextra->code->startLineNumber();
@@ -1291,7 +1291,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
if ((lcd=yyextra->theVarContext.findVariable(className))==0) // not a local variable
{
- Definition *d = yyextra->currentDefinition;
+ const Definition *d = yyextra->currentDefinition;
QCString scope = substitute(className,".","::");
cd = yyextra->symbolResolver.resolveClass(d,substitute(className,".","::"));
@@ -1378,7 +1378,7 @@ static void generateClassOrGlobalLink(yyscan_t yyscanner,
const NamespaceDef *mnd = getResolvedNamespace(scope);
if (mnd)
{
- MemberDef *mmd=mnd->getMemberByName(locName);
+ const MemberDef *mmd=mnd->getMemberByName(locName);
if (mmd)
{
//printf("name=%s scope=%s\n",locName.data(),scope.data());
@@ -1472,8 +1472,8 @@ static bool findMemberLink(yyscan_t yyscanner,
sym->getOuterScope()->definitionType()==Definition::TypeClass &&
yyextra->currentDefinition->definitionType()==Definition::TypeClass)
{
- ClassDef *cd = toClassDef(sym->getOuterScope());
- ClassDef *thisCd = toClassDef(yyextra->currentDefinition);
+ const ClassDef *cd = toClassDef(sym->getOuterScope());
+ const ClassDef *thisCd = toClassDef(yyextra->currentDefinition);
if (sym->definitionType()==Definition::TypeMember)
{
if (yyextra->currentMemberDef && yyextra->collectXRefs)
diff --git a/src/vhdlcode.l b/src/vhdlcode.l
index efb367b..1139d29 100644
--- a/src/vhdlcode.l
+++ b/src/vhdlcode.l
@@ -1014,7 +1014,7 @@ static void startCodeLine(yyscan_t yyscanner)
//lineAnchor.sprintf("l%05d",yyextra->yyLineNr);
// if ((yyextra->yyLineNr % 500) == 0)
// fprintf(stderr,"\n starting Line %d:",yyextra->yyLineNr);
- Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
+ const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
//printf("startCodeLine %d d=%s\n", yyextra->yyLineNr,d ? d->name().data() : "<null>");
if (!yyextra->includeCodeFragment && d)
{
diff --git a/src/xmlcode.l b/src/xmlcode.l
index c7322cb..41f5504 100644
--- a/src/xmlcode.l
+++ b/src/xmlcode.l
@@ -239,7 +239,7 @@ static void startCodeLine(yyscan_t yyscanner)
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
if (yyextra->sourceFileDef)
{
- Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
+ const Definition *d = yyextra->sourceFileDef->getSourceDefinition(yyextra->yyLineNr);
if (!yyextra->includeCodeFragment && d && d->isLinkableInProject())
{