Commit f62ec116 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.3.4-20031005

parent b740d594
DOXYGEN Version 1.3.4 DOXYGEN Version 1.3.4-20031005
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 (22 September 2003) Dimitri van Heesch (05 October 2003)
DOXYGEN Version 1.3.4 DOXYGEN Version 1.3.4_20031005
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) (22 September 2003) Dimitri van Heesch (dimitri@stack.nl) (05 October 2003)
1.3.4 1.3.4-20031005
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.4 Version: 1.3.4_20031005
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -40,6 +40,17 @@ ...@@ -40,6 +40,17 @@
#include "qfile.h" #include "qfile.h"
#include "qfiledefs_p.h" #include "qfiledefs_p.h"
#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_)
# define HAS_TEXT_FILEMODE // has translate/text filemode
#endif
#if defined(O_NONBLOCK)
# define HAS_ASYNC_FILEMODE
# define OPEN_ASYNC O_NONBLOCK
#elif defined(O_NDELAY)
# define HAS_ASYNC_FILEMODE
# define OPEN_ASYNC O_NDELAY
#endif
bool qt_file_access( const QString& fn, int t ) bool qt_file_access( const QString& fn, int t )
{ {
if ( fn.isEmpty() ) if ( fn.isEmpty() )
......
...@@ -23,6 +23,17 @@ ...@@ -23,6 +23,17 @@
#include "qfile.h" #include "qfile.h"
#include "qfiledefs_p.h" #include "qfiledefs_p.h"
#if defined(_OS_MAC_) || defined(_OS_MSDOS_) || defined(_OS_WIN32_) || defined(_OS_OS2_)
# define HAS_TEXT_FILEMODE // has translate/text filemode
#endif
#if defined(O_NONBLOCK)
# define HAS_ASYNC_FILEMODE
# define OPEN_ASYNC O_NONBLOCK
#elif defined(O_NDELAY)
# define HAS_ASYNC_FILEMODE
# define OPEN_ASYNC O_NDELAY
#endif
bool qt_file_access( const QString& fn, int t ) bool qt_file_access( const QString& fn, int t )
{ {
if ( fn.isEmpty() ) if ( fn.isEmpty() )
......
...@@ -853,7 +853,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -853,7 +853,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName().lower());
} }
...@@ -1428,10 +1428,11 @@ void ClassDef::writeMemberList(OutputList &ol) ...@@ -1428,10 +1428,11 @@ void ClassDef::writeMemberList(OutputList &ol)
QCString name=mi->ambiguityResolutionScope+md->name(); QCString name=mi->ambiguityResolutionScope+md->name();
//ol.writeListItem(); //ol.writeListItem();
ol.writeString(" <tr class=\"memlist\"><td>"); ol.writeString(" <tr class=\"memlist\"><td>");
Definition *bd = md->getGroupDef(); //Definition *bd = md->getGroupDef();
if (bd==0) bd=cd; //if (bd==0) bd=cd;
ol.writeObjectLink(bd->getReference(),bd->getOutputFileBase(), ol.writeObjectLink(md->getReference(),
md->anchor(),name); md->getOutputFileBase(),
md->anchor(),name);
if ( md->isFunction() || md->isSignal() || md->isSlot() || if ( md->isFunction() || md->isSignal() || md->isSlot() ||
(md->isFriend() && md->argsString())) (md->isFriend() && md->argsString()))
...@@ -2430,8 +2431,6 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName, ...@@ -2430,8 +2431,6 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName,
Debug::print(Debug::Classes,0," New template instance class %s%s\n",name().data(),templSpec.data()); Debug::print(Debug::Classes,0," New template instance class %s%s\n",name().data(),templSpec.data());
templateClass = new ClassDef( templateClass = new ClassDef(
fileName,startLine,name()+templSpec,ClassDef::Class); fileName,startLine,name()+templSpec,ClassDef::Class);
//templateClass->setBriefDescription(briefDescription());
//templateClass->setDocumentation(documentation());
templateClass->setTemplateMaster(this); templateClass->setTemplateMaster(this);
templateClass->setOuterScope(getOuterScope()); templateClass->setOuterScope(getOuterScope());
m_templateInstances->insert(templSpec,templateClass); m_templateInstances->insert(templSpec,templateClass);
...@@ -2486,6 +2485,7 @@ void ClassDef::addMembersToTemplateInstance(ClassDef *cd,const char *templSpec) ...@@ -2486,6 +2485,7 @@ void ClassDef::addMembersToTemplateInstance(ClassDef *cd,const char *templSpec)
imd->setTemplateMaster(md); imd->setTemplateMaster(md);
imd->setDocumentation(md->documentation(),md->docFile(),md->docLine()); imd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
imd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine()); imd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
imd->setInbodyDocumentation(md->inbodyDocumentation(),md->inbodyFile(),md->inbodyLine());
imd->setMemberSpecifiers(md->getMemberSpecifiers()); imd->setMemberSpecifiers(md->getMemberSpecifiers());
insertMember(imd); insertMember(imd);
//printf("Adding member=%s %s%s to class %s templSpec %s\n", //printf("Adding member=%s %s%s to class %s templSpec %s\n",
......
...@@ -355,15 +355,23 @@ static void startCodeLine() ...@@ -355,15 +355,23 @@ static void startCodeLine()
{ {
g_currentDefinition = d; g_currentDefinition = d;
g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr); g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
QCString anchor;
g_insideBody = FALSE; g_insideBody = FALSE;
g_searchingForBody = TRUE; g_searchingForBody = TRUE;
g_realScope = d->name().copy(); g_realScope = d->name().copy();
//printf("Real scope: `%s'\n",g_realScope.data()); //printf("Real scope: `%s'\n",g_realScope.data());
g_bodyCurlyCount = 0; g_bodyCurlyCount = 0;
if (g_currentMemberDef) anchor=g_currentMemberDef->getBodyAnchor(); if (g_currentMemberDef)
g_code->writeLineNumber(d->getReference(),d->getOutputFileBase(), {
anchor,g_yyLineNr); g_code->writeLineNumber(g_currentMemberDef->getReference(),
g_currentMemberDef->getOutputFileBase(),
g_currentMemberDef->anchor(),g_yyLineNr);
}
else
{
g_code->writeLineNumber(d->getReference(),
d->getOutputFileBase(),
0,g_yyLineNr);
}
} }
else else
{ {
...@@ -702,13 +710,13 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, ...@@ -702,13 +710,13 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
if (md) if (md)
{ {
//printf("is a global md=%p g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>"); //printf("is a global md=%p g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>");
Definition *d = md->getOuterScope()==Doxygen::globalScope ? //Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope(); // md->getBodyDef() : md->getOuterScope();
//printf("definition %s\n",d?d->name().data():"<none>"); //printf("definition %s\n",d?d->name().data():"<none>");
if (md->getGroupDef()) d = md->getGroupDef(); //if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable() && md->isLinkable()) if (md->isLinkable())
{ {
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName); writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName);
if (g_currentMemberDef) if (g_currentMemberDef)
{ {
addDocCrossReference(g_currentMemberDef,md); addDocCrossReference(g_currentMemberDef,md);
...@@ -770,8 +778,10 @@ static bool getLink(const char *className, ...@@ -770,8 +778,10 @@ static bool getLink(const char *className,
} }
//printf("d->getReference()=`%s' d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data()); //printf("d->getReference()=`%s' d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getReference().data(),d->getOutputFileBase().data(),d->name().data(),md->name().data());
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(), writeMultiLineCodeLink(ol,md->getReference(),
md->getBodyAnchor(),text ? text : memberName); md->getOutputFileBase(),
md->anchor(),
text ? text : memberName);
return TRUE; return TRUE;
} }
} }
...@@ -822,8 +832,8 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const ...@@ -822,8 +832,8 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const
} }
// write the actual link // write the actual link
writeMultiLineCodeLink(ol,xd->getReference(), writeMultiLineCodeLink(ol,xmd->getReference(),
xd->getOutputFileBase(),xmd->getBodyAnchor(),memName); xmd->getOutputFileBase(),xmd->anchor(),memName);
return TRUE; return TRUE;
} }
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="id" /> <xsd:attribute name="id" />
<xsd:attribute name="kind" type="DoxCompoundKind" /> <xsd:attribute name="kind" type="DoxCompoundKind" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="listofallmembersType"> <xsd:complexType name="listofallmembersType">
...@@ -104,6 +105,7 @@ ...@@ -104,6 +105,7 @@
<xsd:element name="exceptions" type="linkedTextType" minOccurs="0" /> <xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
<xsd:element name="briefdescription" type="descriptionType" minOccurs="0" /> <xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
<xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" /> <xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
<xsd:element name="inbodydescription" type="descriptionType" minOccurs="0" />
<xsd:element name="location" type="locationType" /> <xsd:element name="location" type="locationType" />
<xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
" </xsd:sequence>\n" " </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n" " <xsd:attribute name=\"id\" />\n"
" <xsd:attribute name=\"kind\" type=\"DoxCompoundKind\" />\n" " <xsd:attribute name=\"kind\" type=\"DoxCompoundKind\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" </xsd:complexType>\n" " </xsd:complexType>\n"
"\n" "\n"
" <xsd:complexType name=\"listofallmembersType\">\n" " <xsd:complexType name=\"listofallmembersType\">\n"
...@@ -104,6 +105,7 @@ ...@@ -104,6 +105,7 @@
" <xsd:element name=\"exceptions\" type=\"linkedTextType\" minOccurs=\"0\" />\n" " <xsd:element name=\"exceptions\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n" " <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n" " <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"inbodydescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"location\" type=\"locationType\" />\n" " <xsd:element name=\"location\" type=\"locationType\" />\n"
" <xsd:element name=\"references\" type=\"referenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"references\" type=\"referenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"referencedby\" type=\"referenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n" " <xsd:element name=\"referencedby\" type=\"referenceType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
......
...@@ -1841,7 +1841,9 @@ void Config::create() ...@@ -1841,7 +1841,9 @@ void Config::create()
cb = addBool( cb = addBool(
"SOURCE_BROWSER", "SOURCE_BROWSER",
"If the SOURCE_BROWSER tag is set to YES then a list of source files will \n" "If the SOURCE_BROWSER tag is set to YES then a list of source files will \n"
"be generated. Documented entities will be cross-referenced with these sources. \n", "be generated. Documented entities will be cross-referenced with these sources. \n"
"Note: To get rid of all source code in the generated output, make sure also \n"
"VERBATIM_HEADERS is set to NO. \n",
FALSE FALSE
); );
cb = addBool( cb = addBool(
......
...@@ -103,7 +103,7 @@ void generateDEFForMember(MemberDef *md, ...@@ -103,7 +103,7 @@ void generateDEFForMember(MemberDef *md,
t << memPrefix << "kind = '" << memType << "';" << endl; t << memPrefix << "kind = '" << memType << "';" << endl;
t << memPrefix << "id = '" t << memPrefix << "id = '"
<< def->getOutputFileBase() << "_1" << md->anchor() << md->getOutputFileBase() << "_1" << md->anchor()
<< "';" << endl; << "';" << endl;
t << memPrefix << "virt = "; t << memPrefix << "virt = ";
......
...@@ -51,12 +51,13 @@ static void addToMap(const char *name,Definition *d) ...@@ -51,12 +51,13 @@ static void addToMap(const char *name,Definition *d)
} }
//printf("******* adding symbol `%s'\n",symbolName.data()); //printf("******* adding symbol `%s'\n",symbolName.data());
dl->append(d); dl->append(d);
d->setSymbolName(symbolName);
} }
} }
static void removeFromMap(Definition *d) static void removeFromMap(Definition *d)
{ {
QCString symbolName = d->name(); QCString symbolName = d->symbolName();
int index=symbolName.findRev("::"); int index=symbolName.findRev("::");
if (index!=-1) symbolName=symbolName.mid(index+2); if (index!=-1) symbolName=symbolName.mid(index+2);
if (!symbolName.isEmpty()) if (!symbolName.isEmpty())
...@@ -510,8 +511,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -510,8 +511,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
if (md->isFunction() || md->isSlot() || if (md->isFunction() || md->isSlot() ||
md->isPrototype() || md->isSignal() md->isPrototype() || md->isSignal()
) name+="()"; ) name+="()";
Definition *d = md->getOuterScope(); //Definition *d = md->getOutputFileBase();
if (d==Doxygen::globalScope) d=md->getBodyDef(); //if (d==Doxygen::globalScope) d=md->getBodyDef();
if (md->getStartBodyLine()!=-1 && md->getBodyDef()) if (md->getStartBodyLine()!=-1 && md->getBodyDef())
{ {
//printf("md->getBodyDef()=%p global=%p\n",md->getBodyDef(),Doxygen::globalScope); //printf("md->getBodyDef()=%p global=%p\n",md->getBodyDef(),Doxygen::globalScope);
...@@ -530,12 +531,13 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -530,12 +531,13 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
ol.docify(name); ol.docify(name);
ol.popGeneratorState(); ol.popGeneratorState();
} }
else if (md->isLinkable() && d && d->isLinkable()) else if (md->isLinkable() /*&& d && d->isLinkable()*/)
{ {
// for HTML write a real link // for HTML write a real link
ol.pushGeneratorState(); ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(), ol.writeObjectLink(md->getReference(),
md->getOutputFileBase(),
md->anchor(),name); md->anchor(),name);
ol.popGeneratorState(); ol.popGeneratorState();
......
...@@ -84,6 +84,10 @@ class Definition ...@@ -84,6 +84,10 @@ class Definition
virtual bool isLinkable() const = 0; virtual bool isLinkable() const = 0;
virtual QCString getReference() const { return m_ref; } virtual QCString getReference() const { return m_ref; }
// symbols
QCString symbolName() const { return m_symbolName; }
void setSymbolName(const QCString &name) { m_symbolName=name; }
virtual bool isReference() const { return !m_ref.isEmpty(); } virtual bool isReference() const { return !m_ref.isEmpty(); }
void setReference(const char *r) { m_ref=r; } void setReference(const char *r) { m_ref=r; }
...@@ -174,6 +178,7 @@ class Definition ...@@ -174,6 +178,7 @@ class Definition
int m_briefLine; int m_briefLine;
QCString m_briefFile; QCString m_briefFile;
QList<ListItemInfo> *m_xrefListItems; QList<ListItemInfo> *m_xrefListItems;
QCString m_symbolName;
}; };
class DefinitionList : public QList<Definition> class DefinitionList : public QList<Definition>
......
...@@ -705,8 +705,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children) ...@@ -705,8 +705,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
{ {
children.append(new children.append(new
DocLinkedWord(parent,name, DocLinkedWord(parent,name,
compound->getReference(), member->getReference(),
compound->getOutputFileBase(), member->getOutputFileBase(),
member->anchor() member->anchor()
) )
); );
......
...@@ -1886,25 +1886,10 @@ DotCallGraph::DotCallGraph(MemberDef *md,int maxRecursionDepth) ...@@ -1886,25 +1886,10 @@ DotCallGraph::DotCallGraph(MemberDef *md,int maxRecursionDepth)
{ {
m_maxDistance = 0; m_maxDistance = 0;
m_recDepth = maxRecursionDepth; m_recDepth = maxRecursionDepth;
if (md->getGroupDef()) m_diskName = md->getOutputFileBase()+"_"+md->anchor();
{
m_diskName = md->getGroupDef()->getOutputFileBase()+"_"+md->getBodyAnchor();
}
else
{
m_diskName = md->getOutputFileBase()+"_"+md->anchor();
}
QCString uniqueId; QCString uniqueId;
if (md->getGroupDef()) // member is in a group uniqueId = md->getReference()+"$"+
{ md->getOutputFileBase()+"#"+md->anchor();
uniqueId = md->getReference()+"$"+
md->getGroupDef()->getOutputFileBase()+"#"+md->getBodyAnchor();
}
else // ungrouped member
{
uniqueId = md->getReference()+"$"+
md->getOutputFileBase()+"#"+md->anchor();
}
m_startNode = new DotNode(m_curNodeNumber++, m_startNode = new DotNode(m_curNodeNumber++,
md->qualifiedName(), md->qualifiedName(),
uniqueId.data(), uniqueId.data(),
...@@ -2049,16 +2034,8 @@ void DotCallGraph::buildGraph(DotNode *n,MemberDef *md,int distance) ...@@ -2049,16 +2034,8 @@ void DotCallGraph::buildGraph(DotNode *n,MemberDef *md,int distance)
if (rmd->isFunction()) if (rmd->isFunction())
{ {
QCString uniqueId; QCString uniqueId;
if (rmd->getGroupDef()) // member is in a group uniqueId=rmd->getReference()+"$"+
{ rmd->getOutputFileBase()+"#"+rmd->anchor();
uniqueId = rmd->getReference()+"$"+
rmd->getGroupDef()->getOutputFileBase()+"#"+rmd->getBodyAnchor();
}
else // ungrouped member
{
uniqueId=rmd->getReference()+"$"+
rmd->getOutputFileBase()+"#"+rmd->anchor();
}
DotNode *bn = m_usedNodes->find(uniqueId); DotNode *bn = m_usedNodes->find(uniqueId);
if (bn) // file is already a node in the graph if (bn) // file is already a node in the graph
{ {
......
This diff is collapsed.
...@@ -74,6 +74,9 @@ Entry::Entry(const Entry &e) ...@@ -74,6 +74,9 @@ Entry::Entry(const Entry &e)
brief = e.brief.copy(); brief = e.brief.copy();
briefLine = e.briefLine; briefLine = e.briefLine;
briefFile = e.briefFile.copy(); briefFile = e.briefFile.copy();
inbodyDocs = e.inbodyDocs.copy();
inbodyLine = e.inbodyLine;
inbodyFile = e.inbodyFile.copy();
inside = e.inside.copy(); inside = e.inside.copy();
fileName = e.fileName.copy(); fileName = e.fileName.copy();
startLine = e.startLine; startLine = e.startLine;
...@@ -233,6 +236,9 @@ void Entry::reset() ...@@ -233,6 +236,9 @@ void Entry::reset()
brief.resize(0); brief.resize(0);
briefFile.resize(0); briefFile.resize(0);
briefLine=-1; briefLine=-1;
inbodyDocs.resize(0);
inbodyFile.resize(0);
inbodyLine=-1;
inside.resize(0); inside.resize(0);
fileName.resize(0); fileName.resize(0);
//scopeSpec.resize(0); //scopeSpec.resize(0);
...@@ -285,6 +291,8 @@ int Entry::getSize() ...@@ -285,6 +291,8 @@ int Entry::getSize()
size+=relates.length()+1; size+=relates.length()+1;
size+=brief.length()+1; size+=brief.length()+1;
size+=briefFile.length()+1; size+=briefFile.length()+1;
size+=inbodyDocs.length()+1;
size+=inbodyFile.length()+1;
size+=inside.length()+1; size+=inside.length()+1;
size+=fileName.length()+1; size+=fileName.length()+1;
size+=initializer.length()+1; size+=initializer.length()+1;
......
...@@ -274,6 +274,9 @@ class Entry ...@@ -274,6 +274,9 @@ class Entry
QCString brief; //!< brief description (doc block) QCString brief; //!< brief description (doc block)
int briefLine; //!< line number at which the brief desc. was found int briefLine; //!< line number at which the brief desc. was found
QCString briefFile; //!< file in which the brief desc. was found QCString briefFile; //!< file in which the brief desc. was found
QCString inbodyDocs; //!< documentation inside the body of a function
int inbodyLine; //!< line number at which the body doc was found
QCString inbodyFile; //!< file in which the body doc was found
QCString relates; //!< related class (doc block) QCString relates; //!< related class (doc block)
bool relatesDup; //!< keep duplicate doc in original file also bool relatesDup; //!< keep duplicate doc in original file also
QCString inside; //!< name of the class in which documents are found QCString inside; //!< name of the class in which documents are found
......
...@@ -223,7 +223,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -223,7 +223,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName().lower());
} }
......
...@@ -208,6 +208,7 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly) ...@@ -208,6 +208,7 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
sameScope sameScope
) )
{ {
md->setGroupAlias(srcMd);
return FALSE; // member already added return FALSE; // member already added
} }
} }
...@@ -364,9 +365,10 @@ int GroupDef::countMembers() const ...@@ -364,9 +365,10 @@ int GroupDef::countMembers() const
exampleDict->count(); exampleDict->count();
} }
/*! Compute the HTML anchor names for all members in the class */ /*! Compute the HTML anchor names for all members in the group */
void GroupDef::computeAnchors() void GroupDef::computeAnchors()
{ {
//printf("GroupDef::computeAnchors()\n");
setAnchors(0,'a',allMemberList); setAnchors(0,'a',allMemberList);
} }
...@@ -416,7 +418,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -416,7 +418,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName().lower());
} }
......
...@@ -1407,7 +1407,10 @@ void HtmlGenerator::writeSearchPage() ...@@ -1407,7 +1407,10 @@ void HtmlGenerator::writeSearchPage()
} }
t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen " t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl; << versionString << " -->" << endl;
writeDefaultQuickLinks(t,TRUE,HLI_Search); if (!Config_getBool("DISABLE_INDEX"))
{
writeDefaultQuickLinks(t,TRUE,HLI_Search);
}
t << "<?php \n\n"; t << "<?php \n\n";
t << "function search_results()\n"; t << "function search_results()\n";
......
...@@ -1678,15 +1678,15 @@ void writeMemberList(OutputList &ol,bool useSections,ClassMemberHighlight filter ...@@ -1678,15 +1678,15 @@ void writeMemberList(OutputList &ol,bool useSections,ClassMemberHighlight filter
ClassDef *cd=md->getClassDef(); ClassDef *cd=md->getClassDef();
if ( if (
md->isLinkableInProject() && md->isLinkableInProject() &&
prevName!=cd->displayName() && prevName!=cd->displayName() &&
cd->isLinkableInProject() && cd->templateMaster()==0 cd->templateMaster()==0
) )
{ {
if (count==0) if (count==0)
ol.docify(": "); ol.docify(": ");
else else
ol.docify(", "); ol.docify(", ");
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),md->anchor(), ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
cd->displayName()); cd->displayName());
count++; count++;
prevName=cd->displayName(); prevName=cd->displayName();
...@@ -1965,9 +1965,7 @@ static void writeFileMemberList(OutputList &ol, ...@@ -1965,9 +1965,7 @@ static void writeFileMemberList(OutputList &ol,
while (md) while (md)
{ {
FileDef *fd=md->getFileDef(); FileDef *fd=md->getFileDef();
bool hasDocs = md->getFileDef() && if (fd && fd->isLinkableInProject() &&
md->getFileDef()->isLinkableInProject();
if (fd && hasDocs &&
md->isLinkableInProject() && md->isLinkableInProject() &&
prevName!=fd->name()) prevName!=fd->name())
{ {
...@@ -1975,9 +1973,9 @@ static void writeFileMemberList(OutputList &ol, ...@@ -1975,9 +1973,9 @@ static void writeFileMemberList(OutputList &ol,
ol.docify(": "); ol.docify(": ");
else else
ol.docify(", "); ol.docify(", ");
QCString baseName=fd->name().copy(); QCString baseName=fd->name();
ol.writeObjectLink(fd->getReference(), ol.writeObjectLink(md->getReference(),
fd->getOutputFileBase(),md->anchor(), baseName); md->getOutputFileBase(),md->anchor(), baseName);
count++; count++;
prevName=fd->name(); prevName=fd->name();
} }
...@@ -2064,7 +2062,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections, ...@@ -2064,7 +2062,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections,
ol.docify(": "); ol.docify(": ");
else else
ol.docify(", "); ol.docify(", ");
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(), ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),
md->anchor(),nd->name()); md->anchor(),nd->name());
count++; count++;
prevName=nd->name(); prevName=nd->name();
...@@ -2734,14 +2732,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level) ...@@ -2734,14 +2732,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
ftvHelp->incContentsDepth(); ftvHelp->incContentsDepth();
} }
} }
GroupDef *gd=md->getGroupDef();
if(htmlHelp) if(htmlHelp)
{ {
htmlHelp->addContentsItem(FALSE,md->name(),gd->getOutputFileBase(),md->anchor()); htmlHelp->addContentsItem(FALSE,md->name(),md->getOutputFileBase(),md->anchor());
} }
if(ftvHelp) if(ftvHelp)
{ {
ftvHelp->addContentsItem(FALSE,gd->getReference(),gd->getOutputFileBase(),md->anchor(),md->name()); ftvHelp->addContentsItem(FALSE,md->getReference(),md->getOutputFileBase(),md->anchor(),md->name());
} }
} }
md=members->next(); md=members->next();
......
This diff is collapsed.
...@@ -74,13 +74,14 @@ class MemberDef : public Definition ...@@ -74,13 +74,14 @@ class MemberDef : public Definition
DefType definitionType() { return TypeMember; } DefType definitionType() { return TypeMember; }
QCString getOutputFileBase() const; QCString getOutputFileBase() const;
QCString getReference() const;
QCString anchor() const;
const char *declaration() const { return decl; } const char *declaration() const { return decl; }
const char *definition() const { return def; } const char *definition() const { return def; }
const char *typeString() const { return type; } const char *typeString() const { return type; }
const char *argsString() const { return args; } const char *argsString() const { return args; }
const char *excpString() const { return exception; } const char *excpString() const { return exception; }
const char *bitfieldString() const { return bitfields; } const char *bitfieldString() const { return bitfields; }
QCString anchor() const;
const QCString &initializer() const { return init; } const QCString &initializer() const { return init; }
int initializerLines() const { return initLines; } int initializerLines() const { return initLines; }
int getMemberSpecifiers() const { return memSpec; } int getMemberSpecifiers() const { return memSpec; }
...@@ -175,6 +176,12 @@ class MemberDef : public Definition ...@@ -175,6 +176,12 @@ class MemberDef : public Definition
MemberDef *reimplements() const; MemberDef *reimplements() const;
MemberList *reimplementedBy() const; MemberList *reimplementedBy() const;
// in-body documentation
void setInbodyDocumentation(const char *docs,const char *file,int line);
int inbodyLine() const { return m_inbodyLine; }
QCString inbodyFile() const { return m_inbodyFile; }
const QCString &inbodyDocumentation() const { return m_inbodyDocs; }
// For function documentation that can also be found in a class's related func section. // For function documentation that can also be found in a class's related func section.
void setRelatedAlso(ClassDef *cd) { m_relatedAlso=cd; } void setRelatedAlso(ClassDef *cd) { m_relatedAlso=cd; }
ClassDef *relatedAlso() const { return m_relatedAlso; } ClassDef *relatedAlso() const { return m_relatedAlso; }
...@@ -245,12 +252,13 @@ class MemberDef : public Definition ...@@ -245,12 +252,13 @@ class MemberDef : public Definition
void setTemplateMaster(MemberDef *mt) { m_templateMaster=mt; } void setTemplateMaster(MemberDef *mt) { m_templateMaster=mt; }
void addListReference(Definition *d); void addListReference(Definition *d);
QCString getBodyAnchor() const //QCString getBodyAnchor() const
{ //{
return bodyMemb ? bodyMemb->anchor() : anchor(); // return bodyMemb ? bodyMemb->anchor() : anchor();
} //}
void setBodyMember(MemberDef *md) { bodyMemb = md; } //void setBodyMember(MemberDef *md) { bodyMemb = md; }
void setDocsForDefinition(bool b) { docsForDefinition = b; } void setDocsForDefinition(bool b) { docsForDefinition = b; }
void setGroupAlias(MemberDef *md) { groupAlias = md; }
// cached typedef functions // cached typedef functions
bool isTypedefValCached() const { return m_isTypedefValCached; } bool isTypedefValCached() const { return m_isTypedefValCached; }
...@@ -295,7 +303,7 @@ class MemberDef : public Definition ...@@ -295,7 +303,7 @@ class MemberDef : public Definition
QCString decl; // member declaration in class QCString decl; // member declaration in class
QCString def; // member definition in code (fully qualified name) QCString def; // member definition in code (fully qualified name)
QCString anc; // HTML anchor name QCString anc; // HTML anchor name
MemberDef *bodyMemb; // Member containing the definition MemberDef *groupAlias; // Member containing the definition
Specifier virt; // normal/virtual/pure virtual Specifier virt; // normal/virtual/pure virtual
Protection prot; // protection type [Public/Protected/Private] Protection prot; // protection type [Public/Protected/Private]
bool related; // is this a member that is only related to a class bool related; // is this a member that is only related to a class
...@@ -345,7 +353,11 @@ class MemberDef : public Definition ...@@ -345,7 +353,11 @@ class MemberDef : public Definition
bool m_isTypedefValCached; bool m_isTypedefValCached;
ClassDef *m_cachedTypedefValue; ClassDef *m_cachedTypedefValue;
// inbody documentation
int m_inbodyLine;
QCString m_inbodyFile;
QCString m_inbodyDocs;
}; };
#endif #endif
...@@ -138,17 +138,22 @@ void MemberGroup::distributeMemberGroupDocumentation() ...@@ -138,17 +138,22 @@ void MemberGroup::distributeMemberGroupDocumentation()
{ {
//printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data()); //printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data());
MemberDef *md=memberList->first(); MemberDef *md=memberList->first();
if (md && !(md->documentation().isEmpty() && md->briefDescription().isEmpty())) if (md && !(md->documentation().isEmpty() &&
md->briefDescription().isEmpty() &&
md->inbodyDocumentation().isEmpty()
)
)
{ {
//printf("First member %s has documentation!\n",md->name().data()); //printf("First member %s has documentation!\n",md->name().data());
MemberDef *omd=memberList->next(); MemberDef *omd=memberList->next();
while (omd) while (omd)
{ {
if (omd->documentation().isEmpty() && omd->briefDescription().isEmpty()) if (omd->documentation().isEmpty() && omd->briefDescription().isEmpty() && omd->inbodyDocumentation().isEmpty())
{ {
//printf("Copying documentation to member %s\n",omd->name().data()); //printf("Copying documentation to member %s\n",omd->name().data());
omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine()); omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
omd->setDocumentation(md->documentation(),md->docFile(),md->docLine()); omd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
omd->setInbodyDocumentation(md->inbodyDocumentation(),md->inbodyFile(),md->inbodyLine());
} }
omd=memberList->next(); omd=memberList->next();
} }
......
...@@ -247,8 +247,8 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -247,8 +247,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.docify(" "); ol.docify(" ");
if (md->getGroupDef()!=0 && gd==0) // forward link to group if (md->getGroupDef()!=0 && gd==0) // forward link to group
{ {
ol.startTextLink(md->getGroupDef()->getOutputFileBase(), ol.startTextLink(md->getOutputFileBase(),
md->anchor()); md->anchor());
} }
else else
{ {
......
...@@ -263,7 +263,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -263,7 +263,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE")) if (Config_getBool("SEARCHENGINE"))
{ {
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()); Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower()); Doxygen::searchIndex->addWord(localName().lower());
} }
......
...@@ -2740,7 +2740,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -2740,7 +2740,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{ {
// copy documentation found inside the body // copy documentation found inside the body
// to the previous item // to the previous item
previous->doc += current->doc; if (previous->inbodyLine==-1)
{
previous->inbodyLine = current->docLine;
previous->inbodyFile = current->docFile;
}
previous->inbodyDocs += current->doc;
current->doc.resize(0); current->doc.resize(0);
} }
if (current->sli) // copy special list items if (current->sli) // copy special list items
...@@ -3159,6 +3164,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3159,6 +3164,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases>("//"{B}*)?"/**"/[^/*] { <FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator,ClassVar,SkipInits,Bases>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/'); removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START; lastDocContext = YY_START;
printf("Found comment block at %s:%d\n",yyFileName,yyLineNr);
if (current_root->section & Entry::SCOPE_MASK) if (current_root->section & Entry::SCOPE_MASK)
{ {
current->inside = current_root->name+"::"; current->inside = current_root->name+"::";
...@@ -3169,6 +3175,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3169,6 +3175,8 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
if (!Config_getBool("JAVADOC_AUTOBRIEF")) // use the Qt style if (!Config_getBool("JAVADOC_AUTOBRIEF")) // use the Qt style
{ {
current->docLine = yyLineNr;
current->docFile = yyFileName;
tmpDocType=-1; tmpDocType=-1;
if (!Config_getBool("HIDE_IN_BODY_DOCS") && if (!Config_getBool("HIDE_IN_BODY_DOCS") &&
YY_START==SkipCurly) // inside body YY_START==SkipCurly) // inside body
...@@ -3178,13 +3186,15 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3178,13 +3186,15 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
else else
{ {
current->doc.resize(0); current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
} }
BEGIN( Doc ); BEGIN( Doc );
} }
else // Use the javadoc style else // Use the javadoc style
{ {
current->docLine = yyLineNr;
current->docFile = yyFileName;
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
if (!Config_getBool("HIDE_IN_BODY_DOCS") && if (!Config_getBool("HIDE_IN_BODY_DOCS") &&
YY_START==SkipCurly) // inside body YY_START==SkipCurly) // inside body
{ {
...@@ -3198,10 +3208,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -3198,10 +3208,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
tmpDocType=Doc; tmpDocType=Doc;
current->doc.resize(0); current->doc.resize(0);
current->brief.resize(0); current->brief.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN( JavaDoc ); BEGIN( JavaDoc );
} }
} }
......
...@@ -79,7 +79,11 @@ ...@@ -79,7 +79,11 @@
// //
// 2003/09/11 Jens Seidel (jensseidel@users.sourceforge.net) // 2003/09/11 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated for "new since 1.3.1" version // - Updated for "new since 1.3.1" version
// //
// 2003/09/24 Jens Seidel (jensseidel@users.sourceforge.net)
// - Updated a few strings which changed in CVS revision 1.22
// ("compound" vs. "class")
//
// Todo: // Todo:
// - see FIXME // - see FIXME
...@@ -213,7 +217,7 @@ class TranslatorGerman : public Translator ...@@ -213,7 +217,7 @@ class TranslatorGerman : public Translator
} }
else else
{ {
return "Übersicht"; return "Auflistung der Klassen";
} }
} }
...@@ -223,7 +227,7 @@ class TranslatorGerman : public Translator ...@@ -223,7 +227,7 @@ class TranslatorGerman : public Translator
/*! This is put above each page as a link to the list of all verbatim headers */ /*! This is put above each page as a link to the list of all verbatim headers */
virtual QCString trHeaderFiles() virtual QCString trHeaderFiles()
{ return "Auflistung der Header-Dateien"; } { return "Header-Dateien"; }
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
virtual QCString trCompoundMembers() virtual QCString trCompoundMembers()
...@@ -234,7 +238,7 @@ class TranslatorGerman : public Translator ...@@ -234,7 +238,7 @@ class TranslatorGerman : public Translator
} }
else else
{ {
return "Datenstruktur-Elemente"; return "Klassen-Elemente";
} }
} }
...@@ -392,9 +396,11 @@ class TranslatorGerman : public Translator ...@@ -392,9 +396,11 @@ class TranslatorGerman : public Translator
* annotated compound index. * annotated compound index.
*/ */
virtual QCString trCompoundIndex() virtual QCString trCompoundIndex()
/* No difference if "OPTIMIZE_OUTPUT_FOR_C" is set! */
{ {
return "Datenstruktur-Verzeichnis"; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
return "Datenstruktur-Verzeichnis";
else
return "Klassen-Verzeichnis";
} }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
...@@ -541,7 +547,7 @@ class TranslatorGerman : public Translator ...@@ -541,7 +547,7 @@ class TranslatorGerman : public Translator
} }
else else
{ {
return "Übersicht"; return "Klassen";
} }
} }
......
This diff is collapsed.
...@@ -1554,6 +1554,7 @@ class TranslatorRussian : public Translator ...@@ -1554,6 +1554,7 @@ class TranslatorRussian : public Translator
return decode( ":" ); return decode( ":" );
} }
private:
QCString as_documents( int num ) QCString as_documents( int num )
{ {
if( num % 10 == 1 ) return ""; if( num % 10 == 1 ) return "";
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized // Translator class (by the local maintainer) when the localized
// translator is made up-to-date again. // translator is made up-to-date again.
class TranslatorChinesetraditional : public TranslatorAdapter_1_3_3 class TranslatorChinesetraditional : public Translator
{ {
public: public:
...@@ -1472,6 +1472,57 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_3_3 ...@@ -1472,6 +1472,57 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_3_3
return "這是此函數的引用函數圖:"; return "這是此函數的引用函數圖:";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual QCString trSearchForIndex()
{
return "搜尋索引";
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual QCString trSearchResultsTitle()
{
return "搜尋結果";
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual QCString trSearchResults(int numDocuments)
{
if (numDocuments==0)
{
return "找不到符合的資料.";
}
else if (numDocuments==1)
{
return "找到 <b>1</b> 筆符合的資料.";
}
else
{
return "找到 <b>$num</b> 筆符合的資料. "
"越符合的結果顯示在越前面.";
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual QCString trSearchMatches()
{
return "符合:";
}
}; };
#endif #endif
...@@ -1030,7 +1030,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) ...@@ -1030,7 +1030,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result+=' '; result+=' ';
result+=s.at(i); result+=s.at(i);
} }
else if (c=='t' && csp==5 && !isId(s.at(i+1))) // prevent const ::A from being converted to const::A else if (c=='t' && csp==5 && !(isId(s.at(i+1)) || s.at(i+1)==' ')) // prevent const ::A from being converted to const::A
{ {
result+="t "; result+="t ";
csp=0; csp=0;
...@@ -1208,14 +1208,12 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco ...@@ -1208,14 +1208,12 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco
(external ? md->isLinkable() : md->isLinkableInProject()) (external ? md->isLinkable() : md->isLinkableInProject())
) )
{ {
Definition *d=0;
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
//printf("Found ref scope=%s\n",d?d->name().data():"<global>"); //printf("Found ref scope=%s\n",d?d->name().data():"<global>");
if (d && (external ? d->isLinkable() : d->isLinkableInProject())) if ((external ? md->isLinkable() : md->isLinkableInProject()))
{ {
//ol.writeObjectLink(d->getReference(),d->getOutputFileBase(), //ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),
// md->anchor(),word); // md->anchor(),word);
out.writeLink(d->getReference(),d->getOutputFileBase(), out.writeLink(md->getReference(),md->getOutputFileBase(),
md->anchor(),word); md->anchor(),word);
found=TRUE; found=TRUE;
} }
...@@ -1356,8 +1354,9 @@ void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId) ...@@ -1356,8 +1354,9 @@ void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId)
else else
anchor.sprintf("%c%d_%d",id,groupId,count++); anchor.sprintf("%c%d_%d",id,groupId,count++);
if (cd) anchor.prepend(escapeCharsInString(cd->name(),FALSE)); if (cd) anchor.prepend(escapeCharsInString(cd->name(),FALSE));
//printf("Member %s anchor %s\n",md->name().data(),anchor.data());
md->setAnchor(anchor); md->setAnchor(anchor);
//printf("setAnchors(): Member %s outputFileBase=%s anchor %s result %s\n",
// md->name().data(),md->getOutputFileBase().data(),anchor.data(),md->anchor().data());
} }
} }
} }
...@@ -2881,8 +2880,8 @@ bool resolveRef(/* in */ const char *scName, ...@@ -2881,8 +2880,8 @@ bool resolveRef(/* in */ const char *scName,
) )
{ {
//printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd); //printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd);
*resMember=md; if (md) { *resMember=md; *resContext=md; }
if (cd) *resContext=cd; else if (cd) *resContext=cd;
else if (nd) *resContext=nd; else if (nd) *resContext=nd;
else if (fd) *resContext=fd; else if (fd) *resContext=fd;
else if (gd) *resContext=gd; else if (gd) *resContext=gd;
...@@ -2966,14 +2965,13 @@ bool generateRef(OutputDocInterface &od,const char *scName, ...@@ -2966,14 +2965,13 @@ bool generateRef(OutputDocInterface &od,const char *scName,
{ {
if (md) // link to member if (md) // link to member
{ {
od.writeObjectLink(compound->getReference(), od.writeObjectLink(md->getReference(),
compound->getOutputFileBase(), md->getOutputFileBase(),
md->anchor(),linkText); md->anchor(),linkText);
// generate the page reference (for LaTeX) // generate the page reference (for LaTeX)
if (!compound->isReference() && !md->anchor().isEmpty() && if (md->isLinkableInProject())
md->isLinkableInProject())
{ {
writePageRef(od,compound->getOutputFileBase(),md->anchor()); writePageRef(od,md->getOutputFileBase(),md->anchor());
} }
} }
else // link to compound else // link to compound
...@@ -3007,12 +3005,10 @@ bool resolveLink(/* in */ const char *scName, ...@@ -3007,12 +3005,10 @@ bool resolveLink(/* in */ const char *scName,
/* in */ const char *lr, /* in */ const char *lr,
/* in */ bool inSeeBlock, /* in */ bool inSeeBlock,
/* out */ Definition **resContext, /* out */ Definition **resContext,
/* out PageInfo **resPageInfo,*/
/* out */ QCString &resAnchor /* out */ QCString &resAnchor
) )
{ {
*resContext=0; *resContext=0;
//*resPageInfo=0;
QCString linkRef=lr; QCString linkRef=lr;
FileDef *fd; FileDef *fd;
...@@ -3094,16 +3090,6 @@ bool generateLink(OutputDocInterface &od,const char *clName, ...@@ -3094,16 +3090,6 @@ bool generateLink(OutputDocInterface &od,const char *clName,
//printf("generateLink linkText=%s\n",linkText.data()); //printf("generateLink linkText=%s\n",linkText.data());
if (resolveLink(clName,lr,inSeeBlock,&compound,anchor)) if (resolveLink(clName,lr,inSeeBlock,&compound,anchor))
{ {
//if (pageInfo) // link to page
//{
// od.writeObjectLink(pageInfo->getReference(),
// pageInfo->getOutputFileBase(),anchor,linkText);
// if (!pageInfo->isReference())
// {
// writePageRef(od,pageInfo->getOutputFileBase(),anchor);
// }
//}
//else
if (compound) // link to compound if (compound) // link to compound
{ {
if (lt==0 && anchor.isEmpty() && /* compound link */ if (lt==0 && anchor.isEmpty() && /* compound link */
...@@ -4022,9 +4008,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle, ...@@ -4022,9 +4008,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
pageName=pd->name(); pageName=pd->name();
else else
pageName=pd->name().lower(); pageName=pd->name().lower();
//setFileNameForSections(anchors,pageName,pi);
pd->setFileName(pageName); pd->setFileName(pageName);
//pi->addSections(anchors);
//printf("Appending page `%s'\n",baseName.data()); //printf("Appending page `%s'\n",baseName.data());
Doxygen::pageSDict->append(baseName,pd); Doxygen::pageSDict->append(baseName,pd);
......
...@@ -736,6 +736,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -736,6 +736,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->docFile(),md->docLine(),md->getOuterScope(),md,md->documentation()); writeXMLDocBlock(t,md->docFile(),md->docLine(),md->getOuterScope(),md,md->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " <inbodydescription>" << endl;
writeXMLDocBlock(t,md->docFile(),md->inbodyLine(),md->getOuterScope(),md,md->inbodyDocumentation());
t << " </inbodydescription>" << endl;
if (md->getDefLine()!=-1) if (md->getDefLine()!=-1)
{ {
t << " <location file=\"" t << " <location file=\""
...@@ -803,12 +806,9 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t) ...@@ -803,12 +806,9 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
for (mii.toFirst();(mi=mii.current());++mii) for (mii.toFirst();(mi=mii.current());++mii)
{ {
MemberDef *md=mi->memberDef; MemberDef *md=mi->memberDef;
ClassDef *cd=md->getClassDef();
Definition *d=md->getGroupDef();
if (d==0) d = cd;
Protection prot = mi->prot; Protection prot = mi->prot;
Specifier virt=md->virtualness(); Specifier virt=md->virtualness();
t << " <member refid=\"" << d->getOutputFileBase() << "_1" << t << " <member refid=\"" << md->getOutputFileBase() << "_1" <<
md->anchor() << "\" prot=\""; md->anchor() << "\" prot=\"";
switch (prot) switch (prot)
{ {
...@@ -876,7 +876,15 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -876,7 +876,15 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
writeXMLHeader(t); writeXMLHeader(t);
t << " <compounddef id=\"" t << " <compounddef id=\""
<< cd->getOutputFileBase() << "\" kind=\"" << cd->getOutputFileBase() << "\" kind=\""
<< cd->compoundTypeString() << "\">" << endl; << cd->compoundTypeString() << "\" prot=\"";
switch (cd->protection())
{
case Public: t << "public"; break;
case Protected: t << "protected"; break;
case Private: t << "private"; break;
case Package: t << "package"; break;
}
t << "\">" << endl;
t << " <compoundname>"; t << " <compoundname>";
writeXMLString(t,cd->name()); writeXMLString(t,cd->name());
t << "</compoundname>" << endl; t << "</compoundname>" << endl;
......
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