Commit 7b814d4a authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.7-20060810

parent cdd72954
DOXYGEN Version 1.4.7-20060809 DOXYGEN Version 1.4.7-20060810
Please read the installation section of the manual Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions. (http://www.doxygen.org/install.html) for instructions.
-------- --------
Dimitri van Heesch (09 August 2006) Dimitri van Heesch (10 August 2006)
DOXYGEN Version 1.4.7_20060809 DOXYGEN Version 1.4.7_20060810
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (09 August 2006) Dimitri van Heesch (dimitri@stack.nl) (10 August 2006)
...@@ -20,7 +20,7 @@ doxygen_version_minor=4 ...@@ -20,7 +20,7 @@ doxygen_version_minor=4
doxygen_version_revision=7 doxygen_version_revision=7
#NOTE: Setting version_mmn to "NO" will omit mmn info from the package. #NOTE: Setting version_mmn to "NO" will omit mmn info from the package.
doxygen_version_mmn=20060809 doxygen_version_mmn=20060810
bin_dirs=`echo $PATH | sed -e "s/:/ /g"` bin_dirs=`echo $PATH | sed -e "s/:/ /g"`
......
...@@ -39,6 +39,94 @@ ...@@ -39,6 +39,94 @@
#define pclose _pclose #define pclose _pclose
#endif #endif
class DefinitionImpl
{
public:
void init(const char *df,int dl,
const char *n,const char *b,
const char *d,bool isSym)
{
defFileName = df;
int lastDot = defFileName.findRev('.');
if (lastDot!=-1)
{
defFileExt = defFileName.mid(lastDot);
}
defLine = dl;
name=n;
if (name!="<globalScope>")
{
//extractNamespaceName(m_name,m_localName,ns);
localName=stripScope(n);
}
else
{
localName=n;
}
//printf("m_localName=%s\n",m_localName.data());
if (b)
{
brief = new DocInfo;
brief->doc = b;
}
else
{
brief = 0;
}
if (d)
{
details = new DocInfo;
details->doc = d;
}
else
{
details = 0;
}
body = 0;
sourceRefByDict=0;
sourceRefsDict=0;
sectionDict=0,
outerScope=Doxygen::globalScope;
partOfGroups=0;
xrefListItems=0;
isSymbol = isSym;
hidden = FALSE;
}
SectionDict *sectionDict; // dictionary of all sections
MemberSDict *sourceRefByDict;
MemberSDict *sourceRefsDict;
DocInfo *details;
DocInfo *brief;
BodyInfo *body;
QCString name; // name of the definition
QCString localName; // local (unqualified) name of the definition
// in the future m_name should become m_localName
QCString symbolName;
QCString qualifiedName;
QCString ref; // reference to external documentation
QList<ListItemInfo> *xrefListItems;
bool isSymbol;
bool hidden;
Definition *outerScope;
GroupList *partOfGroups;
// where the item was found
QCString defFileName;
int defLine;
QCString defFileExt;
};
//-----------------------------------------------------------------------------------------
static void addToMap(const char *name,Definition *d) static void addToMap(const char *name,Definition *d)
{ {
QCString symbolName = name; QCString symbolName = name;
...@@ -121,69 +209,23 @@ Definition::Definition(const char *df,int dl, ...@@ -121,69 +209,23 @@ Definition::Definition(const char *df,int dl,
const char *name,const char *b, const char *name,const char *b,
const char *d,bool isSymbol) const char *d,bool isSymbol)
{ {
//QCString ns; m_impl = new DefinitionImpl;
//printf("Definition(%s) %p\n",name,this); m_impl->init(df,dl,name,b,d,isSymbol);
m_defFileName = df; if (isSymbol) addToMap(name,this);
int lastDot = m_defFileName.findRev('.');
if (lastDot!=-1)
{
m_defFileExt = m_defFileName.mid(lastDot);
}
m_defLine = dl;
m_name=name;
if (m_name!="<globalScope>")
{
//extractNamespaceName(m_name,m_localName,ns);
m_localName=stripScope(name);
}
else
{
m_localName=name;
}
//printf("m_localName=%s\n",m_localName.data());
if (b)
{
m_brief = new DocInfo;
m_brief->doc = b;
}
else
{
m_brief = 0;
}
if (d)
{
m_details = new DocInfo;
m_details->doc = d;
}
else
{
m_details = 0;
}
m_body = 0;
m_sourceRefByDict=0;
m_sourceRefsDict=0;
m_sectionDict=0,
m_outerScope=Doxygen::globalScope;
m_partOfGroups=0;
m_xrefListItems=0;
m_isSymbol = isSymbol;
m_hidden = FALSE;
if (m_isSymbol) addToMap(name,this);
} }
Definition::~Definition() Definition::~Definition()
{ {
if (m_isSymbol) removeFromMap(this); if (m_impl->isSymbol) removeFromMap(this);
delete m_sectionDict; delete m_impl->sectionDict;
delete m_sourceRefByDict; delete m_impl->sourceRefByDict;
delete m_sourceRefsDict; delete m_impl->sourceRefsDict;
delete m_partOfGroups; delete m_impl->partOfGroups;
delete m_xrefListItems; delete m_impl->xrefListItems;
delete m_brief; delete m_impl->brief;
delete m_details; delete m_impl->details;
delete m_body; delete m_impl->body;
delete m_impl;
} }
void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
...@@ -201,13 +243,13 @@ void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) ...@@ -201,13 +243,13 @@ void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
gsi = new SectionInfo(*si); gsi = new SectionInfo(*si);
Doxygen::sectionDict.insert(si->label,gsi); Doxygen::sectionDict.insert(si->label,gsi);
} }
if (m_sectionDict==0) if (m_impl->sectionDict==0)
{ {
m_sectionDict = new SectionDict(17); m_impl->sectionDict = new SectionDict(17);
} }
if (m_sectionDict->find(gsi->label)==0) if (m_impl->sectionDict->find(gsi->label)==0)
{ {
m_sectionDict->insert(gsi->label,gsi); m_impl->sectionDict->insert(gsi->label,gsi);
gsi->definition = this; gsi->definition = this;
} }
si=anchorList->next(); si=anchorList->next();
...@@ -216,10 +258,10 @@ void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList) ...@@ -216,10 +258,10 @@ void Definition::addSectionsToDefinition(QList<SectionInfo> *anchorList)
void Definition::writeDocAnchorsToTagFile() void Definition::writeDocAnchorsToTagFile()
{ {
if (!Config_getString("GENERATE_TAGFILE").isEmpty() && m_sectionDict) if (!Config_getString("GENERATE_TAGFILE").isEmpty() && m_impl->sectionDict)
{ {
//printf("%s: writeDocAnchorsToTagFile(%d)\n",name().data(),m_sectionDict->count()); //printf("%s: writeDocAnchorsToTagFile(%d)\n",name().data(),m_sectionDict->count());
QDictIterator<SectionInfo> sdi(*m_sectionDict); QDictIterator<SectionInfo> sdi(*m_impl->sectionDict);
SectionInfo *si; SectionInfo *si;
for (;(si=sdi.current());++sdi) for (;(si=sdi.current());++sdi)
{ {
...@@ -272,13 +314,13 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine, ...@@ -272,13 +314,13 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
doc=d; doc=d;
} }
//printf("setting docs for %s: `%s'\n",name().data(),m_doc.data()); //printf("setting docs for %s: `%s'\n",name().data(),m_doc.data());
if (m_details==0) if (m_impl->details==0)
{ {
m_details = new DocInfo; m_impl->details = new DocInfo;
} }
m_details->doc = doc; m_impl->details->doc = doc;
m_details->file = docFile; m_impl->details->file = docFile;
m_details->line = docLine; m_impl->details->line = docLine;
} }
#define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase) #define uni_isupper(c) (QChar(c).category()==QChar::Letter_Uppercase)
...@@ -292,24 +334,24 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri ...@@ -292,24 +334,24 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri
outputLanguage!="Korean"; outputLanguage!="Korean";
//fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine); //fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
if (m_brief==0) if (m_impl->brief==0)
{ {
m_brief = new DocInfo; m_impl->brief = new DocInfo;
} }
m_brief->doc=QCString(b).stripWhiteSpace(); m_impl->brief->doc=QCString(b).stripWhiteSpace();
int bl=m_brief->doc.length(); int bl=m_impl->brief->doc.length();
if (bl>0 && needsDot) // add punctuation if needed if (bl>0 && needsDot) // add punctuation if needed
{ {
switch(m_brief->doc.at(bl-1)) switch(m_impl->brief->doc.at(bl-1))
{ {
case '.': case '!': case '?': break; case '.': case '!': case '?': break;
default: default:
if (uni_isupper(m_brief->doc.at(0))) m_brief->doc+='.'; if (uni_isupper(m_impl->brief->doc.at(0))) m_impl->brief->doc+='.';
break; break;
} }
} }
m_brief->file = briefFile; m_impl->brief->file = briefFile;
m_brief->line = briefLine; m_impl->brief->line = briefLine;
} }
/*! Reads a fragment of code from file \a fileName starting at /*! Reads a fragment of code from file \a fileName starting at
...@@ -435,7 +477,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -435,7 +477,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.pushGeneratorState(); ol.pushGeneratorState();
//printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef); //printf("Definition::writeSourceRef %d %p\n",bodyLine,bodyDef);
if (Config_getBool("SOURCE_BROWSER") && if (Config_getBool("SOURCE_BROWSER") &&
m_body && m_body->startLine!=-1 && m_body->fileDef) m_impl->body && m_impl->body->startLine!=-1 && m_impl->body->fileDef)
{ {
QCString refText = theTranslator->trDefinedAtLineInSourceFile(); QCString refText = theTranslator->trDefinedAtLineInSourceFile();
int lineMarkerPos = refText.find("@0"); int lineMarkerPos = refText.find("@0");
...@@ -443,8 +485,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -443,8 +485,8 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this. if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this.
{ {
QCString lineStr,anchorStr; QCString lineStr,anchorStr;
lineStr.sprintf("%d",m_body->startLine); lineStr.sprintf("%d",m_impl->body->startLine);
anchorStr.sprintf(Htags::useHtags ? "L%d" : "l%05d",m_body->startLine); anchorStr.sprintf(Htags::useHtags ? "L%d" : "l%05d",m_impl->body->startLine);
ol.newParagraph(); ol.newParagraph();
if (lineMarkerPos<fileMarkerPos) // line marker before file marker if (lineMarkerPos<fileMarkerPos) // line marker before file marker
{ {
...@@ -452,7 +494,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -452,7 +494,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.parseText(refText.left(lineMarkerPos)); ol.parseText(refText.left(lineMarkerPos));
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only) // write line link (HTML only)
ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(), ol.writeObjectLink(0,m_impl->body->fileDef->getSourceFileBase(),
anchorStr,lineStr); anchorStr,lineStr);
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
...@@ -466,12 +508,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -466,12 +508,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only) // write file link (HTML only)
ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(), ol.writeObjectLink(0,m_impl->body->fileDef->getSourceFileBase(),
0,m_body->fileDef->name()); 0,m_impl->body->fileDef->name());
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only) // write normal text (Latex/Man only)
ol.docify(m_body->fileDef->name()); ol.docify(m_impl->body->fileDef->name());
ol.enableAll(); ol.enableAll();
// write text right from file marker // write text right from file marker
...@@ -484,12 +526,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -484,12 +526,12 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.parseText(refText.left(fileMarkerPos)); ol.parseText(refText.left(fileMarkerPos));
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write file link (HTML only) // write file link (HTML only)
ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(), ol.writeObjectLink(0,m_impl->body->fileDef->getSourceFileBase(),
0,m_body->fileDef->name()); 0,m_impl->body->fileDef->name());
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
// write normal text (Latex/Man only) // write normal text (Latex/Man only)
ol.docify(m_body->fileDef->name()); ol.docify(m_impl->body->fileDef->name());
ol.enableAll(); ol.enableAll();
// write text between markers // write text between markers
...@@ -498,7 +540,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -498,7 +540,7 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
// write line link (HTML only) // write line link (HTML only)
ol.writeObjectLink(0,m_body->fileDef->getSourceFileBase(), ol.writeObjectLink(0,m_impl->body->fileDef->getSourceFileBase(),
anchorStr,lineStr); anchorStr,lineStr);
ol.enableAll(); ol.enableAll();
ol.disable(OutputGenerator::Html); ol.disable(OutputGenerator::Html);
...@@ -522,15 +564,15 @@ void Definition::writeSourceDef(OutputList &ol,const char *) ...@@ -522,15 +564,15 @@ void Definition::writeSourceDef(OutputList &ol,const char *)
void Definition::setBodySegment(int bls,int ble) void Definition::setBodySegment(int bls,int ble)
{ {
//printf("setBodySegment(%d,%d) for %s\n",bls,ble,name().data()); //printf("setBodySegment(%d,%d) for %s\n",bls,ble,name().data());
if (m_body==0) m_body = new BodyInfo; if (m_impl->body==0) m_impl->body = new BodyInfo;
m_body->startLine=bls; m_impl->body->startLine=bls;
m_body->endLine=ble; m_impl->body->endLine=ble;
} }
void Definition::setBodyDef(FileDef *fd) void Definition::setBodyDef(FileDef *fd)
{ {
if (m_body==0) m_body = new BodyInfo; if (m_impl->body==0) m_impl->body = new BodyInfo;
m_body->fileDef=fd; m_impl->body->fileDef=fd;
} }
/*! Write code of this definition into the documentation */ /*! Write code of this definition into the documentation */
...@@ -540,16 +582,16 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) ...@@ -540,16 +582,16 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
//printf("Source Fragment %s: %d-%d bodyDef=%p\n",name().data(), //printf("Source Fragment %s: %d-%d bodyDef=%p\n",name().data(),
// m_startBodyLine,m_endBodyLine,m_bodyDef); // m_startBodyLine,m_endBodyLine,m_bodyDef);
if (Config_getBool("INLINE_SOURCES") && if (Config_getBool("INLINE_SOURCES") &&
m_body && m_body->startLine!=-1 && m_impl->body && m_impl->body->startLine!=-1 &&
m_body->endLine>=m_body->startLine && m_body->fileDef) m_impl->body->endLine>=m_impl->body->startLine && m_impl->body->fileDef)
{ {
QCString codeFragment; QCString codeFragment;
int actualStart=m_body->startLine,actualEnd=m_body->endLine; int actualStart=m_impl->body->startLine,actualEnd=m_impl->body->endLine;
if (readCodeFragment(m_body->fileDef->absFilePath(), if (readCodeFragment(m_impl->body->fileDef->absFilePath(),
actualStart,actualEnd,codeFragment) actualStart,actualEnd,codeFragment)
) )
{ {
ParserInterface *pIntf = Doxygen::parserManager->getParser(m_defFileExt); ParserInterface *pIntf = Doxygen::parserManager->getParser(m_impl->defFileExt);
pIntf->resetCodeParserState(); pIntf->resetCodeParserState();
//printf("Read:\n`%s'\n\n",codeFragment.data()); //printf("Read:\n`%s'\n\n",codeFragment.data());
MemberDef *thisMd = 0; MemberDef *thisMd = 0;
...@@ -560,7 +602,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) ...@@ -560,7 +602,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
codeFragment, // input codeFragment, // input
FALSE, // isExample FALSE, // isExample
0, // exampleName 0, // exampleName
m_body->fileDef, // fileDef m_impl->body->fileDef, // fileDef
actualStart, // startLine actualStart, // startLine
actualEnd, // endLine actualEnd, // endLine
TRUE, // inlineFragment TRUE, // inlineFragment
...@@ -671,7 +713,7 @@ void Definition::writeSourceReffedBy(OutputList &ol,const char *scopeName) ...@@ -671,7 +713,7 @@ void Definition::writeSourceReffedBy(OutputList &ol,const char *scopeName)
{ {
if (Config_getBool("REFERENCED_BY_RELATION")) if (Config_getBool("REFERENCED_BY_RELATION"))
{ {
writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),m_sourceRefByDict,FALSE); writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),m_impl->sourceRefByDict,FALSE);
} }
} }
...@@ -679,7 +721,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) ...@@ -679,7 +721,7 @@ void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
{ {
if (Config_getBool("REFERENCES_RELATION")) if (Config_getBool("REFERENCES_RELATION"))
{ {
writeSourceRefList(ol,scopeName,theTranslator->trReferences(),m_sourceRefsDict,TRUE); writeSourceRefList(ol,scopeName,theTranslator->trReferences(),m_impl->sourceRefsDict,TRUE);
} }
} }
...@@ -688,19 +730,19 @@ bool Definition::hasDocumentation() const ...@@ -688,19 +730,19 @@ bool Definition::hasDocumentation() const
static bool extractAll = Config_getBool("EXTRACT_ALL"); static bool extractAll = Config_getBool("EXTRACT_ALL");
static bool sourceBrowser = Config_getBool("SOURCE_BROWSER"); static bool sourceBrowser = Config_getBool("SOURCE_BROWSER");
bool hasDocs = bool hasDocs =
(m_details && !m_details->doc.isEmpty()) || // has detailed docs (m_impl->details && !m_impl->details->doc.isEmpty()) || // has detailed docs
(m_brief && !m_brief->doc.isEmpty()) || // has brief description (m_impl->brief && !m_impl->brief->doc.isEmpty()) || // has brief description
extractAll || // extract everything extractAll || // extract everything
(sourceBrowser && m_body && (sourceBrowser && m_impl->body &&
m_body->startLine!=-1 && m_body->fileDef); // link to definition m_impl->body->startLine!=-1 && m_impl->body->fileDef); // link to definition
return hasDocs; return hasDocs;
} }
bool Definition::hasUserDocumentation() const bool Definition::hasUserDocumentation() const
{ {
bool hasDocs = bool hasDocs =
(m_details && !m_details->doc.isEmpty()) || (m_impl->details && !m_impl->details->doc.isEmpty()) ||
(m_brief && !m_brief->doc.isEmpty()); (m_impl->brief && !m_impl->brief->doc.isEmpty());
return hasDocs; return hasDocs;
} }
...@@ -716,13 +758,13 @@ void Definition::addSourceReferencedBy(MemberDef *md) ...@@ -716,13 +758,13 @@ void Definition::addSourceReferencedBy(MemberDef *md)
name.prepend(scope+"::"); name.prepend(scope+"::");
} }
if (m_sourceRefByDict==0) if (m_impl->sourceRefByDict==0)
{ {
m_sourceRefByDict = new MemberSDict; m_impl->sourceRefByDict = new MemberSDict;
} }
if (m_sourceRefByDict->find(name)==0) if (m_impl->sourceRefByDict->find(name)==0)
{ {
m_sourceRefByDict->inSort(name,md); m_impl->sourceRefByDict->inSort(name,md);
} }
} }
} }
...@@ -739,14 +781,14 @@ void Definition::addSourceReferences(MemberDef *md) ...@@ -739,14 +781,14 @@ void Definition::addSourceReferences(MemberDef *md)
name.prepend(scope+"::"); name.prepend(scope+"::");
} }
if (m_sourceRefsDict==0) if (m_impl->sourceRefsDict==0)
{ {
m_sourceRefsDict = new MemberSDict; m_impl->sourceRefsDict = new MemberSDict;
} }
if (m_sourceRefsDict->find(name)==0) if (m_impl->sourceRefsDict->find(name)==0)
{ {
//printf("Adding reference %s->%s\n",md->name().data(),name.data()); //printf("Adding reference %s->%s\n",md->name().data(),name.data());
m_sourceRefsDict->inSort(name,md); m_impl->sourceRefsDict->inSort(name,md);
} }
} }
} }
...@@ -763,45 +805,45 @@ void Definition::addInnerCompound(Definition *) ...@@ -763,45 +805,45 @@ void Definition::addInnerCompound(Definition *)
QCString Definition::qualifiedName() QCString Definition::qualifiedName()
{ {
if (!m_qualifiedName.isEmpty()) return m_qualifiedName; if (!m_impl->qualifiedName.isEmpty()) return m_impl->qualifiedName;
//printf("start Definition::qualifiedName() localName=%s\n",m_localName.data()); //printf("start Definition::qualifiedName() localName=%s\n",m_localName.data());
if (m_outerScope==0) if (m_impl->outerScope==0)
{ {
if (m_localName=="<globalScope>") return ""; if (m_impl->localName=="<globalScope>") return "";
else return m_localName; else return m_impl->localName;
} }
if (m_outerScope->name()=="<globalScope>") if (m_impl->outerScope->name()=="<globalScope>")
{ {
m_qualifiedName = m_localName.copy(); m_impl->qualifiedName = m_impl->localName.copy();
} }
else else
{ {
m_qualifiedName = m_outerScope->qualifiedName()+"::"+m_localName; m_impl->qualifiedName = m_impl->outerScope->qualifiedName()+"::"+m_impl->localName;
} }
//printf("end Definition::qualifiedName()=%s\n",m_qualifiedName.data()); //printf("end Definition::qualifiedName()=%s\n",m_qualifiedName.data());
return m_qualifiedName; return m_impl->qualifiedName;
}; };
void Definition::setOuterScope(Definition *d) void Definition::setOuterScope(Definition *d)
{ {
if (m_outerScope!=d) if (m_impl->outerScope!=d)
{ {
m_qualifiedName.resize(0); // flush cached scope name m_impl->qualifiedName.resize(0); // flush cached scope name
m_outerScope = d; m_impl->outerScope = d;
} }
} }
QCString Definition::localName() const QCString Definition::localName() const
{ {
return m_localName; return m_impl->localName;
} }
void Definition::makePartOfGroup(GroupDef *gd) void Definition::makePartOfGroup(GroupDef *gd)
{ {
if (m_partOfGroups==0) m_partOfGroups = new GroupList; if (m_impl->partOfGroups==0) m_impl->partOfGroups = new GroupList;
m_partOfGroups->append(gd); m_impl->partOfGroups->append(gd);
} }
void Definition::setRefItems(const QList<ListItemInfo> *sli) void Definition::setRefItems(const QList<ListItemInfo> *sli)
...@@ -809,16 +851,16 @@ void Definition::setRefItems(const QList<ListItemInfo> *sli) ...@@ -809,16 +851,16 @@ void Definition::setRefItems(const QList<ListItemInfo> *sli)
if (sli) if (sli)
{ {
// deep copy the list // deep copy the list
if (m_xrefListItems==0) if (m_impl->xrefListItems==0)
{ {
m_xrefListItems=new QList<ListItemInfo>; m_impl->xrefListItems=new QList<ListItemInfo>;
m_xrefListItems->setAutoDelete(TRUE); m_impl->xrefListItems->setAutoDelete(TRUE);
} }
QListIterator<ListItemInfo> slii(*sli); QListIterator<ListItemInfo> slii(*sli);
ListItemInfo *lii; ListItemInfo *lii;
for (slii.toFirst();(lii=slii.current());++slii) for (slii.toFirst();(lii=slii.current());++slii)
{ {
m_xrefListItems->append(new ListItemInfo(*lii)); m_impl->xrefListItems->append(new ListItemInfo(*lii));
} }
} }
} }
...@@ -828,10 +870,10 @@ void Definition::mergeRefItems(Definition *d) ...@@ -828,10 +870,10 @@ void Definition::mergeRefItems(Definition *d)
if (d->xrefListItems()) if (d->xrefListItems())
{ {
// deep copy the list // deep copy the list
if (m_xrefListItems==0) if (m_impl->xrefListItems==0)
{ {
m_xrefListItems=new QList<ListItemInfo>; m_impl->xrefListItems=new QList<ListItemInfo>;
m_xrefListItems->setAutoDelete(TRUE); m_impl->xrefListItems->setAutoDelete(TRUE);
} }
QListIterator<ListItemInfo> slii(*d->xrefListItems()); QListIterator<ListItemInfo> slii(*d->xrefListItems());
ListItemInfo *lii; ListItemInfo *lii;
...@@ -839,7 +881,7 @@ void Definition::mergeRefItems(Definition *d) ...@@ -839,7 +881,7 @@ void Definition::mergeRefItems(Definition *d)
{ {
if (getXRefListId(lii->type)==-1) if (getXRefListId(lii->type)==-1)
{ {
m_xrefListItems->append(new ListItemInfo(*lii)); m_impl->xrefListItems->append(new ListItemInfo(*lii));
} }
} }
} }
...@@ -847,9 +889,9 @@ void Definition::mergeRefItems(Definition *d) ...@@ -847,9 +889,9 @@ void Definition::mergeRefItems(Definition *d)
int Definition::getXRefListId(const char *listName) const int Definition::getXRefListId(const char *listName) const
{ {
if (m_xrefListItems) if (m_impl->xrefListItems)
{ {
QListIterator<ListItemInfo> slii(*m_xrefListItems); QListIterator<ListItemInfo> slii(*m_impl->xrefListItems);
ListItemInfo *lii; ListItemInfo *lii;
for (slii.toFirst();(lii=slii.current());++slii) for (slii.toFirst();(lii=slii.current());++slii)
{ {
...@@ -864,13 +906,13 @@ int Definition::getXRefListId(const char *listName) const ...@@ -864,13 +906,13 @@ int Definition::getXRefListId(const char *listName) const
const QList<ListItemInfo> *Definition::xrefListItems() const const QList<ListItemInfo> *Definition::xrefListItems() const
{ {
return m_xrefListItems; return m_impl->xrefListItems;
} }
QCString Definition::convertNameToFile(const char *name,bool allowDots) const QCString Definition::convertNameToFile(const char *name,bool allowDots) const
{ {
if (!m_ref.isEmpty()) if (!m_impl->ref.isEmpty())
{ {
return name; return name;
} }
...@@ -882,11 +924,11 @@ QCString Definition::convertNameToFile(const char *name,bool allowDots) const ...@@ -882,11 +924,11 @@ QCString Definition::convertNameToFile(const char *name,bool allowDots) const
void Definition::writePathFragment(OutputList &ol) const void Definition::writePathFragment(OutputList &ol) const
{ {
if (m_outerScope && m_outerScope!=Doxygen::globalScope) if (m_impl->outerScope && m_impl->outerScope!=Doxygen::globalScope)
{ {
m_outerScope->writePathFragment(ol); m_impl->outerScope->writePathFragment(ol);
if (m_outerScope->definitionType()==Definition::TypeClass || if (m_impl->outerScope->definitionType()==Definition::TypeClass ||
m_outerScope->definitionType()==Definition::TypeNamespace) m_impl->outerScope->definitionType()==Definition::TypeNamespace)
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
{ {
...@@ -916,13 +958,13 @@ void Definition::writePathFragment(OutputList &ol) const ...@@ -916,13 +958,13 @@ void Definition::writePathFragment(OutputList &ol) const
} }
else else
{ {
ol.writeObjectLink(getReference(),getOutputFileBase(),0,m_localName); ol.writeObjectLink(getReference(),getOutputFileBase(),0,m_impl->localName);
} }
} }
else else
{ {
ol.startBold(); ol.startBold();
ol.docify(m_localName); ol.docify(m_impl->localName);
ol.endBold(); ol.endBold();
} }
} }
...@@ -939,3 +981,144 @@ void Definition::writeNavigationPath(OutputList &ol) const ...@@ -939,3 +981,144 @@ void Definition::writeNavigationPath(OutputList &ol) const
ol.popGeneratorState(); ol.popGeneratorState();
} }
const QCString& Definition::name() const
{
return m_impl->name;
}
QCString Definition::symbolName() const
{
return m_impl->symbolName;
}
QCString Definition::documentation() const
{
return m_impl->details ? m_impl->details->doc : QCString("");
}
int Definition::docLine() const
{
return m_impl->details ? m_impl->details->line : 1;
}
QCString Definition::docFile() const
{
return m_impl->details ? m_impl->details->file : QCString("<"+m_impl->name+">");
}
QCString Definition::briefDescription() const
{
return m_impl->brief ? m_impl->brief->doc : QCString("");
}
int Definition::briefLine() const
{
return m_impl->brief ? m_impl->brief->line : 1;
}
QCString Definition::briefFile() const
{
return m_impl->brief ? m_impl->brief->file : QCString("<"+m_impl->name+">");
}
QCString Definition::getDefFileName() const
{
return m_impl->defFileName;
}
QCString Definition::getDefFileExtension() const
{
return m_impl->defFileExt;
}
int Definition::getDefLine() const
{
return m_impl->defLine;
}
bool Definition::isHidden() const
{
return m_impl->hidden;
}
bool Definition::isVisibleInProject() const
{
return m_impl->hidden || isLinkableInProject();
}
bool Definition::isVisible() const
{
return m_impl->hidden || isLinkable();
}
QCString Definition::getReference() const
{
return m_impl->ref;
}
bool Definition::isReference() const
{
return !m_impl->ref.isEmpty();
}
int Definition::getStartBodyLine() const
{
return m_impl->body ? m_impl->body->startLine : -1;
}
int Definition::getEndBodyLine() const
{
return m_impl->body ? m_impl->body->endLine : -1;
}
FileDef *Definition::getBodyDef()
{
return m_impl->body ? m_impl->body->fileDef : 0;
}
GroupList *Definition::partOfGroups() const
{
return m_impl->partOfGroups;
}
Definition *Definition::getOuterScope() const
{
return m_impl->outerScope;
}
MemberSDict *Definition::getReferencesMembers() const
{
return m_impl->sourceRefsDict;
}
MemberSDict *Definition::getReferencedByMembers() const
{
return m_impl->sourceRefByDict;
}
void Definition::setName(const char *name)
{
m_impl->name=name;
}
void Definition::setReference(const char *r)
{
m_impl->ref=r;
}
void Definition::setSymbolName(const QCString &name)
{
m_impl->symbolName=name;
}
void Definition::setHidden(bool b)
{
m_impl->hidden = b;
}
void Definition::setLocalName(const QCString name)
{
m_impl->localName=name;
}
...@@ -32,6 +32,7 @@ class GroupList; ...@@ -32,6 +32,7 @@ class GroupList;
struct ListItemInfo; struct ListItemInfo;
struct SectionInfo; struct SectionInfo;
class Definition; class Definition;
class DefinitionImpl;
struct ReachableDefinition struct ReachableDefinition
{ {
...@@ -71,7 +72,10 @@ class DefinitionIntf ...@@ -71,7 +72,10 @@ class DefinitionIntf
virtual DefType definitionType() const = 0; virtual DefType definitionType() const = 0;
}; };
/*! The common base class of all entity definitions found in the sources. */ /*! The common base class of all entity definitions found in the sources.
* This can be a class or a member function, or a file, or a namespace, etc.
* Use definitionType() to find which type of definition this is.
*/
class Definition : public DefinitionIntf class Definition : public DefinitionIntf
{ {
public: public:
...@@ -90,19 +94,18 @@ class Definition : public DefinitionIntf ...@@ -90,19 +94,18 @@ class Definition : public DefinitionIntf
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
/*! Returns the name of the definition */ /*! Returns the name of the definition */
const QCString& name() const { return m_name; } const QCString& name() const;
/*! Returns the local name without any scope qualifiers. */ /*! Returns the local name without any scope qualifiers. */
QCString localName() const; QCString localName() const;
/*! Returns the base name of the output file that contains this /*! Returns the fully qualified name of this definition
* definition.
*/ */
virtual QCString qualifiedName(); virtual QCString qualifiedName();
/*! Returns the name of this definition as it appears in the symbol map. /*! Returns the name of this definition as it appears in the symbol map.
*/ */
QCString symbolName() const { return m_symbolName; } QCString symbolName() const;
/*! Returns the base file name (without extension) of this definition. /*! Returns the base file name (without extension) of this definition.
* as it is referenced to/written to disk. * as it is referenced to/written to disk.
...@@ -113,35 +116,35 @@ class Definition : public DefinitionIntf ...@@ -113,35 +116,35 @@ class Definition : public DefinitionIntf
virtual QCString getSourceFileBase() const { ASSERT(0); return "NULL"; } virtual QCString getSourceFileBase() const { ASSERT(0); return "NULL"; }
/*! Returns the detailed description of this definition */ /*! Returns the detailed description of this definition */
QCString documentation() const { return m_details ? m_details->doc : QCString(""); } QCString documentation() const;
/*! Returns the line number at which the detailed documentation was found. */ /*! Returns the line number at which the detailed documentation was found. */
int docLine() const { return m_details ? m_details->line : 1; } int docLine() const;
/*! Returns the file in which the detailed documentation block was found. /*! Returns the file in which the detailed documentation block was found.
* This can differ from getDefFileName(). * This can differ from getDefFileName().
*/ */
QCString docFile() const { return m_details ? m_details->file : QCString("<"+m_name+">"); } QCString docFile() const;
/*! Returns the brief description of this definition */ /*! Returns the brief description of this definition */
QCString briefDescription() const { return m_brief ? m_brief->doc : QCString(""); } QCString briefDescription() const;
/*! Returns the line number at which the brief description was found. */ /*! Returns the line number at which the brief description was found. */
int briefLine() const { return m_brief ? m_brief->line : 1; } int briefLine() const;
/*! Returns the file in which the brief description was found. /*! Returns the file in which the brief description was found.
* This can differ from getDefFileName(). * This can differ from getDefFileName().
*/ */
QCString briefFile() const { return m_brief ? m_brief->file : QCString("<"+m_name+">"); } QCString briefFile() const;
/*! returns the file in which this definition was found */ /*! returns the file in which this definition was found */
QCString getDefFileName() const { return m_defFileName; } QCString getDefFileName() const;
/*! returns the file in which this definition was found */ /*! returns the file in which this definition was found */
QCString getDefFileExtension() const { return m_defFileExt; } QCString getDefFileExtension() const;
/*! returns the line number at which the definition was found */ /*! returns the line number at which the definition was found */
int getDefLine() const { return m_defLine; } int getDefLine() const;
/*! Returns TRUE iff the definition is documented /*! Returns TRUE iff the definition is documented
* (which could be generated documentation) * (which could be generated documentation)
...@@ -165,45 +168,54 @@ class Definition : public DefinitionIntf ...@@ -165,45 +168,54 @@ class Definition : public DefinitionIntf
/*! Returns TRUE iff the name is part of this project and /*! Returns TRUE iff the name is part of this project and
* may appear in the output * may appear in the output
*/ */
virtual bool isVisibleInProject() const virtual bool isVisibleInProject() const;
{ return m_hidden || isLinkableInProject(); }
/*! Returns TRUE iff the name may appear in the output */ /*! Returns TRUE iff the name may appear in the output */
virtual bool isVisible() const virtual bool isVisible() const;
{ return m_hidden || isLinkable(); }
bool isHidden() const { return m_hidden; } bool isHidden() const;
/*! If this definition was imported via a tag file, this function /*! If this definition was imported via a tag file, this function
* returns the tagfile for the external project. This can be * returns the tagfile for the external project. This can be
* translated into an external link target via * translated into an external link target via
* Doxygen::tagDestinationDict * Doxygen::tagDestinationDict
*/ */
virtual QCString getReference() const { return m_ref; } virtual QCString getReference() const;
/*! Returns TRUE if this definition is imported via a tag file. */ /*! Returns TRUE if this definition is imported via a tag file. */
virtual bool isReference() const { return !m_ref.isEmpty(); } virtual bool isReference() const;
/*! Returns the first line of the body of this item (applicable to classes and
* functions).
*/
int getStartBodyLine() const;
/*! Returns the last line of the body of this item (applicable to classes and
* functions).
*/
int getEndBodyLine() const;
int getStartBodyLine() const { return m_body ? m_body->startLine : -1; } /*! Returns the file in which the body of this item is located or 0 if no
int getEndBodyLine() const { return m_body ? m_body->endLine : -1; } * body is available.
FileDef *getBodyDef() { return m_body ? m_body->fileDef : 0; } */
FileDef *getBodyDef();
GroupList *partOfGroups() const { return m_partOfGroups; } GroupList *partOfGroups() const;
const QList<ListItemInfo> *xrefListItems() const; const QList<ListItemInfo> *xrefListItems() const;
virtual Definition *findInnerCompound(const char *name); virtual Definition *findInnerCompound(const char *name);
virtual Definition *getOuterScope() const { return m_outerScope; } virtual Definition *getOuterScope() const;
MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; } MemberSDict *getReferencesMembers() const;
MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; } MemberSDict *getReferencedByMembers() const;
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// ---- setters ----- // ---- setters -----
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
/*! Sets a new \a name for the definition */ /*! Sets a new \a name for the definition */
void setName(const char *name) { m_name=name; } void setName(const char *name);
/*! Sets the documentation of this definition to \a d. */ /*! Sets the documentation of this definition to \a d. */
void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
...@@ -214,11 +226,11 @@ class Definition : public DefinitionIntf ...@@ -214,11 +226,11 @@ class Definition : public DefinitionIntf
void setBriefDescription(const char *b,const char *briefFile,int briefLine); void setBriefDescription(const char *b,const char *briefFile,int briefLine);
/*! Sets the tag file id via which this definition was imported. */ /*! Sets the tag file id via which this definition was imported. */
void setReference(const char *r) { m_ref=r; } void setReference(const char *r);
/*! Sets the name of this definition as it should appear in the symbol map. /*! Sets the name of this definition as it should appear in the symbol map.
*/ */
void setSymbolName(const QCString &name) { m_symbolName=name; } void setSymbolName(const QCString &name);
/*! Add the list of anchors that mark the sections that are found in the /*! Add the list of anchors that mark the sections that are found in the
* documentation. * documentation.
...@@ -236,7 +248,7 @@ class Definition : public DefinitionIntf ...@@ -236,7 +248,7 @@ class Definition : public DefinitionIntf
virtual void addInnerCompound(Definition *d); virtual void addInnerCompound(Definition *d);
virtual void setOuterScope(Definition *d); virtual void setOuterScope(Definition *d);
void setHidden(bool b) { m_hidden = b; } void setHidden(bool b);
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// --- actions ---- // --- actions ----
...@@ -258,46 +270,21 @@ class Definition : public DefinitionIntf ...@@ -258,46 +270,21 @@ class Definition : public DefinitionIntf
void writeDocAnchorsToTagFile(); void writeDocAnchorsToTagFile();
protected: protected:
void setLocalName(const QCString name) { m_localName=name; } void setLocalName(const QCString name);
private:
int getXRefListId(const char *listName) const; int getXRefListId(const char *listName) const;
void writeSourceRefList(OutputList &ol,const char *scopeName, void writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members,bool); const QCString &text,MemberSDict *members,bool);
//----------------------------------------------------------------------------------- virtual void flushToDisk() {}
// --- member variables virtual void loadFromDisk() {}
//----------------------------------------------------------------------------------- virtual void makeResident() { if (m_impl==0) loadFromDisk(); }
virtual bool isResident() const { return m_impl!=0; }
SectionDict *m_sectionDict; // dictionary of all sections
MemberSDict *m_sourceRefByDict;
MemberSDict *m_sourceRefsDict;
DocInfo *m_details;
DocInfo *m_brief;
BodyInfo *m_body;
/*! The class, namespace in which this class is located private:
*/ DefinitionImpl *m_impl; // internal structure holding all private data
QCString m_name; // name of the definition uint64 m_storagePos; // location where the item is stored in file (if impl==0)
QCString m_localName; // local (unqualified) name of the definition
// in the future m_name should become m_localName
QCString m_symbolName;
QCString m_qualifiedName;
QCString m_ref; // reference to external documentation
QList<ListItemInfo> *m_xrefListItems;
bool m_isSymbol;
bool m_hidden;
Definition *m_outerScope;
GroupList *m_partOfGroups;
// where the item was found
QCString m_defFileName;
int m_defLine;
QCString m_defFileExt;
}; };
class DefinitionList : public QList<Definition>, public DefinitionIntf class DefinitionList : public QList<Definition>, public DefinitionIntf
......
...@@ -171,6 +171,12 @@ void NamespaceDef::addMembersToMemberGroup() ...@@ -171,6 +171,12 @@ void NamespaceDef::addMembersToMemberGroup()
void NamespaceDef::insertMember(MemberDef *md) void NamespaceDef::insertMember(MemberDef *md)
{ {
MemberList *allMemberList = getMemberList(MemberList::allMembersList);
if (allMemberList==0)
{
allMemberList = new MemberList(MemberList::allMembersList);
m_memberLists.append(allMemberList);
}
allMemberList->append(md); allMemberList->append(md);
//static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS"); //static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS");
switch(md->memberType()) switch(md->memberType())
...@@ -261,7 +267,8 @@ void NamespaceDef::insertMember(MemberDef *md) ...@@ -261,7 +267,8 @@ void NamespaceDef::insertMember(MemberDef *md)
void NamespaceDef::computeAnchors() void NamespaceDef::computeAnchors()
{ {
setAnchors(0,'a',allMemberList); MemberList *allMemberList = getMemberList(MemberList::allMembersList);
if (allMemberList) setAnchors(0,'a',allMemberList);
} }
void NamespaceDef::writeDetailedDocumentation(OutputList &ol) void NamespaceDef::writeDetailedDocumentation(OutputList &ol)
...@@ -420,7 +427,8 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -420,7 +427,8 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEPARATE_MEMBER_PAGES")) if (Config_getBool("SEPARATE_MEMBER_PAGES"))
{ {
allMemberList->sort(); MemberList *allMemberList = getMemberList(MemberList::allMembersList);
if (allMemberList) allMemberList->sort();
writeMemberPages(ol); writeMemberPages(ol);
} }
} }
...@@ -495,31 +503,35 @@ void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) co ...@@ -495,31 +503,35 @@ void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) co
ol.writeString(" <div class=\"navtab\">\n"); ol.writeString(" <div class=\"navtab\">\n");
ol.writeString(" <table>\n"); ol.writeString(" <table>\n");
MemberListIterator mli(*allMemberList); MemberList *allMemberList = getMemberList(MemberList::allMembersList);
MemberDef *md; if (allMemberList)
for (mli.toFirst();(md=mli.current());++mli)
{ {
if (md->getNamespaceDef()==this && md->isLinkable()) MemberListIterator mli(*allMemberList);
MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli)
{ {
ol.writeString(" <tr><td class=\"navtab\">"); if (md->getNamespaceDef()==this && md->isLinkable())
if (md->isLinkableInProject())
{ {
if (md==currentMd) // selected item => highlight ol.writeString(" <tr><td class=\"navtab\">");
{ if (md->isLinkableInProject())
ol.writeString("<a class=\"qindexHL\" ");
}
else
{ {
ol.writeString("<a class=\"qindex\" "); if (md==currentMd) // selected item => highlight
{
ol.writeString("<a class=\"qindexHL\" ");
}
else
{
ol.writeString("<a class=\"qindex\" ");
}
ol.writeString("href=\"");
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
ol.writeString(md->localName());
ol.writeString("</a>");
} }
ol.writeString("href=\""); ol.writeString("</td></tr>\n");
if (createSubDirs) ol.writeString("../../");
ol.writeString(md->getOutputFileBase()+Doxygen::htmlFileExtension+"#"+md->anchor());
ol.writeString("\">");
ol.writeString(md->localName());
ol.writeString("</a>");
} }
ol.writeString("</td></tr>\n");
} }
} }
...@@ -529,8 +541,9 @@ void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) co ...@@ -529,8 +541,9 @@ void NamespaceDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) co
int NamespaceDef::countMembers() int NamespaceDef::countMembers()
{ {
allMemberList->countDocMembers(); MemberList *allMemberList = getMemberList(MemberList::allMembersList);
return allMemberList->numDocMembers()+classSDict->count(); if (allMemberList) allMemberList->countDocMembers();
return (allMemberList ? allMemberList->numDocMembers() : 0)+classSDict->count();
} }
void NamespaceDef::addUsingDirective(NamespaceDef *nd) void NamespaceDef::addUsingDirective(NamespaceDef *nd)
......
...@@ -101,7 +101,7 @@ class NamespaceDef : public Definition ...@@ -101,7 +101,7 @@ class NamespaceDef : public Definition
SDict<Definition> *usingDeclList; SDict<Definition> *usingDeclList;
SDict<Definition> *m_innerCompounds; SDict<Definition> *m_innerCompounds;
MemberList *allMemberList; //MemberList *allMemberList;
QList<MemberList> m_memberLists; QList<MemberList> m_memberLists;
MemberGroupSDict *memberGroupSDict; MemberGroupSDict *memberGroupSDict;
ClassSDict *classSDict; ClassSDict *classSDict;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment