Commit aaf87cb6 authored by dimitri's avatar dimitri

Release-1.3.4-20031005

parent 7cdb9679
DOXYGEN Version 1.3.4
DOXYGEN Version 1.3.4-20031005
Please read the installation section of the manual
(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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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++.
Name: doxygen
Version: 1.3.4
Version: 1.3.4_20031005
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -40,6 +40,17 @@
#include "qfile.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 )
{
if ( fn.isEmpty() )
......
......@@ -23,6 +23,17 @@
#include "qfile.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 )
{
if ( fn.isEmpty() )
......
......@@ -853,7 +853,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower());
}
......@@ -1428,10 +1428,11 @@ void ClassDef::writeMemberList(OutputList &ol)
QCString name=mi->ambiguityResolutionScope+md->name();
//ol.writeListItem();
ol.writeString(" <tr class=\"memlist\"><td>");
Definition *bd = md->getGroupDef();
if (bd==0) bd=cd;
ol.writeObjectLink(bd->getReference(),bd->getOutputFileBase(),
md->anchor(),name);
//Definition *bd = md->getGroupDef();
//if (bd==0) bd=cd;
ol.writeObjectLink(md->getReference(),
md->getOutputFileBase(),
md->anchor(),name);
if ( md->isFunction() || md->isSignal() || md->isSlot() ||
(md->isFriend() && md->argsString()))
......@@ -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());
templateClass = new ClassDef(
fileName,startLine,name()+templSpec,ClassDef::Class);
//templateClass->setBriefDescription(briefDescription());
//templateClass->setDocumentation(documentation());
templateClass->setTemplateMaster(this);
templateClass->setOuterScope(getOuterScope());
m_templateInstances->insert(templSpec,templateClass);
......@@ -2486,6 +2485,7 @@ void ClassDef::addMembersToTemplateInstance(ClassDef *cd,const char *templSpec)
imd->setTemplateMaster(md);
imd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
imd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
imd->setInbodyDocumentation(md->inbodyDocumentation(),md->inbodyFile(),md->inbodyLine());
imd->setMemberSpecifiers(md->getMemberSpecifiers());
insertMember(imd);
//printf("Adding member=%s %s%s to class %s templSpec %s\n",
......
......@@ -355,15 +355,23 @@ static void startCodeLine()
{
g_currentDefinition = d;
g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
QCString anchor;
g_insideBody = FALSE;
g_searchingForBody = TRUE;
g_realScope = d->name().copy();
//printf("Real scope: `%s'\n",g_realScope.data());
g_bodyCurlyCount = 0;
if (g_currentMemberDef) anchor=g_currentMemberDef->getBodyAnchor();
g_code->writeLineNumber(d->getReference(),d->getOutputFileBase(),
anchor,g_yyLineNr);
if (g_currentMemberDef)
{
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
{
......@@ -702,13 +710,13 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName,
if (md)
{
//printf("is a global md=%p g_currentDefinition=%s\n",md,g_currentDefinition?g_currentDefinition->name().data():"<none>");
Definition *d = md->getOuterScope()==Doxygen::globalScope ?
md->getBodyDef() : md->getOuterScope();
//Definition *d = md->getOuterScope()==Doxygen::globalScope ?
// md->getBodyDef() : md->getOuterScope();
//printf("definition %s\n",d?d->name().data():"<none>");
if (md->getGroupDef()) d = md->getGroupDef();
if (d && d->isLinkable() && md->isLinkable())
//if (md->getGroupDef()) d = md->getGroupDef();
if (md->isLinkable())
{
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName);
writeMultiLineCodeLink(ol,md->getReference(),md->getOutputFileBase(),md->anchor(),clName);
if (g_currentMemberDef)
{
addDocCrossReference(g_currentMemberDef,md);
......@@ -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());
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),
md->getBodyAnchor(),text ? text : memberName);
writeMultiLineCodeLink(ol,md->getReference(),
md->getOutputFileBase(),
md->anchor(),
text ? text : memberName);
return TRUE;
}
}
......@@ -822,8 +832,8 @@ static bool generateClassMemberLink(BaseCodeDocInterface &ol,ClassDef *mcd,const
}
// write the actual link
writeMultiLineCodeLink(ol,xd->getReference(),
xd->getOutputFileBase(),xmd->getBodyAnchor(),memName);
writeMultiLineCodeLink(ol,xmd->getReference(),
xmd->getOutputFileBase(),xmd->anchor(),memName);
return TRUE;
}
......
......@@ -38,6 +38,7 @@
</xsd:sequence>
<xsd:attribute name="id" />
<xsd:attribute name="kind" type="DoxCompoundKind" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
</xsd:complexType>
<xsd:complexType name="listofallmembersType">
......@@ -104,6 +105,7 @@
<xsd:element name="exceptions" type="linkedTextType" minOccurs="0" />
<xsd:element name="briefdescription" 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="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
......
......@@ -38,6 +38,7 @@
" </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n"
" <xsd:attribute name=\"kind\" type=\"DoxCompoundKind\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"listofallmembersType\">\n"
......@@ -104,6 +105,7 @@
" <xsd:element name=\"exceptions\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"briefdescription\" 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=\"references\" 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()
cb = addBool(
"SOURCE_BROWSER",
"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
);
cb = addBool(
......
......@@ -103,7 +103,7 @@ void generateDEFForMember(MemberDef *md,
t << memPrefix << "kind = '" << memType << "';" << endl;
t << memPrefix << "id = '"
<< def->getOutputFileBase() << "_1" << md->anchor()
<< md->getOutputFileBase() << "_1" << md->anchor()
<< "';" << endl;
t << memPrefix << "virt = ";
......
......@@ -51,12 +51,13 @@ static void addToMap(const char *name,Definition *d)
}
//printf("******* adding symbol `%s'\n",symbolName.data());
dl->append(d);
d->setSymbolName(symbolName);
}
}
static void removeFromMap(Definition *d)
{
QCString symbolName = d->name();
QCString symbolName = d->symbolName();
int index=symbolName.findRev("::");
if (index!=-1) symbolName=symbolName.mid(index+2);
if (!symbolName.isEmpty())
......@@ -510,8 +511,8 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
if (md->isFunction() || md->isSlot() ||
md->isPrototype() || md->isSignal()
) name+="()";
Definition *d = md->getOuterScope();
if (d==Doxygen::globalScope) d=md->getBodyDef();
//Definition *d = md->getOutputFileBase();
//if (d==Doxygen::globalScope) d=md->getBodyDef();
if (md->getStartBodyLine()!=-1 && md->getBodyDef())
{
//printf("md->getBodyDef()=%p global=%p\n",md->getBodyDef(),Doxygen::globalScope);
......@@ -530,12 +531,13 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
ol.docify(name);
ol.popGeneratorState();
}
else if (md->isLinkable() && d && d->isLinkable())
else if (md->isLinkable() /*&& d && d->isLinkable()*/)
{
// for HTML write a real link
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),
ol.writeObjectLink(md->getReference(),
md->getOutputFileBase(),
md->anchor(),name);
ol.popGeneratorState();
......
......@@ -84,6 +84,10 @@ class Definition
virtual bool isLinkable() const = 0;
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(); }
void setReference(const char *r) { m_ref=r; }
......@@ -174,6 +178,7 @@ class Definition
int m_briefLine;
QCString m_briefFile;
QList<ListItemInfo> *m_xrefListItems;
QCString m_symbolName;
};
class DefinitionList : public QList<Definition>
......
......@@ -705,8 +705,8 @@ static void handleLinkedWord(DocNode *parent,QList<DocNode> &children)
{
children.append(new
DocLinkedWord(parent,name,
compound->getReference(),
compound->getOutputFileBase(),
member->getReference(),
member->getOutputFileBase(),
member->anchor()
)
);
......
......@@ -1886,25 +1886,10 @@ DotCallGraph::DotCallGraph(MemberDef *md,int maxRecursionDepth)
{
m_maxDistance = 0;
m_recDepth = maxRecursionDepth;
if (md->getGroupDef())
{
m_diskName = md->getGroupDef()->getOutputFileBase()+"_"+md->getBodyAnchor();
}
else
{
m_diskName = md->getOutputFileBase()+"_"+md->anchor();
}
m_diskName = md->getOutputFileBase()+"_"+md->anchor();
QCString uniqueId;
if (md->getGroupDef()) // member is in a group
{
uniqueId = md->getReference()+"$"+
md->getGroupDef()->getOutputFileBase()+"#"+md->getBodyAnchor();
}
else // ungrouped member
{
uniqueId = md->getReference()+"$"+
md->getOutputFileBase()+"#"+md->anchor();
}
uniqueId = md->getReference()+"$"+
md->getOutputFileBase()+"#"+md->anchor();
m_startNode = new DotNode(m_curNodeNumber++,
md->qualifiedName(),
uniqueId.data(),
......@@ -2049,16 +2034,8 @@ void DotCallGraph::buildGraph(DotNode *n,MemberDef *md,int distance)
if (rmd->isFunction())
{
QCString uniqueId;
if (rmd->getGroupDef()) // member is in a group
{
uniqueId = rmd->getReference()+"$"+
rmd->getGroupDef()->getOutputFileBase()+"#"+rmd->getBodyAnchor();
}
else // ungrouped member
{
uniqueId=rmd->getReference()+"$"+
rmd->getOutputFileBase()+"#"+rmd->anchor();
}
uniqueId=rmd->getReference()+"$"+
rmd->getOutputFileBase()+"#"+rmd->anchor();
DotNode *bn = m_usedNodes->find(uniqueId);
if (bn) // file is already a node in the graph
{
......
This diff is collapsed.
......@@ -74,6 +74,9 @@ Entry::Entry(const Entry &e)
brief = e.brief.copy();
briefLine = e.briefLine;
briefFile = e.briefFile.copy();
inbodyDocs = e.inbodyDocs.copy();
inbodyLine = e.inbodyLine;
inbodyFile = e.inbodyFile.copy();
inside = e.inside.copy();
fileName = e.fileName.copy();
startLine = e.startLine;
......@@ -233,6 +236,9 @@ void Entry::reset()
brief.resize(0);
briefFile.resize(0);
briefLine=-1;
inbodyDocs.resize(0);
inbodyFile.resize(0);
inbodyLine=-1;
inside.resize(0);
fileName.resize(0);
//scopeSpec.resize(0);
......@@ -285,6 +291,8 @@ int Entry::getSize()
size+=relates.length()+1;
size+=brief.length()+1;
size+=briefFile.length()+1;
size+=inbodyDocs.length()+1;
size+=inbodyFile.length()+1;
size+=inside.length()+1;
size+=fileName.length()+1;
size+=initializer.length()+1;
......
......@@ -274,6 +274,9 @@ class Entry
QCString brief; //!< brief description (doc block)
int briefLine; //!< line number at 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)
bool relatesDup; //!< keep duplicate doc in original file also
QCString inside; //!< name of the class in which documents are found
......
......@@ -223,7 +223,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower());
}
......
......@@ -208,6 +208,7 @@ bool GroupDef::insertMember(MemberDef *md,bool docOnly)
sameScope
)
{
md->setGroupAlias(srcMd);
return FALSE; // member already added
}
}
......@@ -364,9 +365,10 @@ int GroupDef::countMembers() const
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()
{
//printf("GroupDef::computeAnchors()\n");
setAnchors(0,'a',allMemberList);
}
......@@ -416,7 +418,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase());
Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower());
}
......
......@@ -1407,7 +1407,10 @@ void HtmlGenerator::writeSearchPage()
}
t << "<!-- " << theTranslator->trGeneratedBy() << " Doxygen "
<< versionString << " -->" << endl;
writeDefaultQuickLinks(t,TRUE,HLI_Search);
if (!Config_getBool("DISABLE_INDEX"))
{
writeDefaultQuickLinks(t,TRUE,HLI_Search);
}
t << "<?php \n\n";
t << "function search_results()\n";
......
......@@ -1678,15 +1678,15 @@ void writeMemberList(OutputList &ol,bool useSections,ClassMemberHighlight filter
ClassDef *cd=md->getClassDef();
if (
md->isLinkableInProject() &&
prevName!=cd->displayName() &&
cd->isLinkableInProject() && cd->templateMaster()==0
prevName!=cd->displayName() &&
cd->templateMaster()==0
)
{
if (count==0)
ol.docify(": ");
else
ol.docify(", ");
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),md->anchor(),
ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),md->anchor(),
cd->displayName());
count++;
prevName=cd->displayName();
......@@ -1965,9 +1965,7 @@ static void writeFileMemberList(OutputList &ol,
while (md)
{
FileDef *fd=md->getFileDef();
bool hasDocs = md->getFileDef() &&
md->getFileDef()->isLinkableInProject();
if (fd && hasDocs &&
if (fd && fd->isLinkableInProject() &&
md->isLinkableInProject() &&
prevName!=fd->name())
{
......@@ -1975,9 +1973,9 @@ static void writeFileMemberList(OutputList &ol,
ol.docify(": ");
else
ol.docify(", ");
QCString baseName=fd->name().copy();
ol.writeObjectLink(fd->getReference(),
fd->getOutputFileBase(),md->anchor(), baseName);
QCString baseName=fd->name();
ol.writeObjectLink(md->getReference(),
md->getOutputFileBase(),md->anchor(), baseName);
count++;
prevName=fd->name();
}
......@@ -2064,7 +2062,7 @@ void writeNamespaceMemberList(OutputList &ol,bool useSections,
ol.docify(": ");
else
ol.docify(", ");
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),
ol.writeObjectLink(md->getReference(),md->getOutputFileBase(),
md->anchor(),nd->name());
count++;
prevName=nd->name();
......@@ -2734,14 +2732,13 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
ftvHelp->incContentsDepth();
}
}
GroupDef *gd=md->getGroupDef();
if(htmlHelp)
{
htmlHelp->addContentsItem(FALSE,md->name(),gd->getOutputFileBase(),md->anchor());
htmlHelp->addContentsItem(FALSE,md->name(),md->getOutputFileBase(),md->anchor());
}
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();
......
This diff is collapsed.
......@@ -74,13 +74,14 @@ class MemberDef : public Definition
DefType definitionType() { return TypeMember; }
QCString getOutputFileBase() const;
QCString getReference() const;
QCString anchor() const;
const char *declaration() const { return decl; }
const char *definition() const { return def; }
const char *typeString() const { return type; }
const char *argsString() const { return args; }
const char *excpString() const { return exception; }
const char *bitfieldString() const { return bitfields; }
QCString anchor() const;
const QCString &initializer() const { return init; }
int initializerLines() const { return initLines; }
int getMemberSpecifiers() const { return memSpec; }
......@@ -175,6 +176,12 @@ class MemberDef : public Definition
MemberDef *reimplements() 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.
void setRelatedAlso(ClassDef *cd) { m_relatedAlso=cd; }
ClassDef *relatedAlso() const { return m_relatedAlso; }
......@@ -245,12 +252,13 @@ class MemberDef : public Definition
void setTemplateMaster(MemberDef *mt) { m_templateMaster=mt; }
void addListReference(Definition *d);
QCString getBodyAnchor() const
{
return bodyMemb ? bodyMemb->anchor() : anchor();
}
void setBodyMember(MemberDef *md) { bodyMemb = md; }
//QCString getBodyAnchor() const
//{
// return bodyMemb ? bodyMemb->anchor() : anchor();
//}
//void setBodyMember(MemberDef *md) { bodyMemb = md; }
void setDocsForDefinition(bool b) { docsForDefinition = b; }
void setGroupAlias(MemberDef *md) { groupAlias = md; }
// cached typedef functions
bool isTypedefValCached() const { return m_isTypedefValCached; }
......@@ -295,7 +303,7 @@ class MemberDef : public Definition
QCString decl; // member declaration in class
QCString def; // member definition in code (fully qualified name)
QCString anc; // HTML anchor name
MemberDef *bodyMemb; // Member containing the definition
MemberDef *groupAlias; // Member containing the definition
Specifier virt; // normal/virtual/pure virtual
Protection prot; // protection type [Public/Protected/Private]
bool related; // is this a member that is only related to a class
......@@ -345,7 +353,11 @@ class MemberDef : public Definition
bool m_isTypedefValCached;
ClassDef *m_cachedTypedefValue;
// inbody documentation
int m_inbodyLine;
QCString m_inbodyFile;
QCString m_inbodyDocs;
};
#endif
......@@ -138,17 +138,22 @@ void MemberGroup::distributeMemberGroupDocumentation()
{
//printf("MemberGroup::distributeMemberGroupDocumentation() %s\n",grpHeader.data());
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());
MemberDef *omd=memberList->next();
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());
omd->setBriefDescription(md->briefDescription(),md->briefFile(),md->briefLine());
omd->setDocumentation(md->documentation(),md->docFile(),md->docLine());
omd->setInbodyDocumentation(md->inbodyDocumentation(),md->inbodyFile(),md->inbodyLine());
}
omd=memberList->next();
}
......
......@@ -247,8 +247,8 @@ void MemberList::writePlainDeclarations(OutputList &ol,
ol.docify(" ");
if (md->getGroupDef()!=0 && gd==0) // forward link to group
{
ol.startTextLink(md->getGroupDef()->getOutputFileBase(),
md->anchor());
ol.startTextLink(md->getOutputFileBase(),
md->anchor());
}
else
{
......
......@@ -263,7 +263,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config_getBool("SEARCHENGINE"))
{
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase()+Config_getString("HTML_FILE_EXTENSION"));
Doxygen::searchIndex->addWord(localName().lower());
}
......
......@@ -2740,7 +2740,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
{
// copy documentation found inside the body
// 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);
}
if (current->sli) // copy special list items
......@@ -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}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/');
lastDocContext = YY_START;
printf("Found comment block at %s:%d\n",yyFileName,yyLineNr);
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
......@@ -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
{
current->docLine = yyLineNr;
current->docFile = yyFileName;
tmpDocType=-1;
if (!Config_getBool("HIDE_IN_BODY_DOCS") &&
YY_START==SkipCurly) // inside body
......@@ -3178,13 +3186,15 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
else
{
current->doc.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
}
BEGIN( Doc );
}
else // Use the javadoc style
{
current->docLine = yyLineNr;
current->docFile = yyFileName;
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
if (!Config_getBool("HIDE_IN_BODY_DOCS") &&
YY_START==SkipCurly) // inside body
{
......@@ -3198,10 +3208,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
tmpDocType=Doc;
current->doc.resize(0);
current->brief.resize(0);
current->docLine = yyLineNr;
current->docFile = yyFileName;
current->briefLine = yyLineNr;
current->briefFile = yyFileName;
BEGIN( JavaDoc );
}
}
......
......@@ -79,7 +79,11 @@
//
// 2003/09/11 Jens Seidel (jensseidel@users.sourceforge.net)
// - 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:
// - see FIXME
......@@ -213,7 +217,7 @@ class TranslatorGerman : public Translator
}
else
{
return "Übersicht";
return "Auflistung der Klassen";
}
}
......@@ -223,7 +227,7 @@ class TranslatorGerman : public Translator
/*! This is put above each page as a link to the list of all verbatim headers */
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. */
virtual QCString trCompoundMembers()
......@@ -234,7 +238,7 @@ class TranslatorGerman : public Translator
}
else
{
return "Datenstruktur-Elemente";
return "Klassen-Elemente";
}
}
......@@ -392,9 +396,11 @@ class TranslatorGerman : public Translator
* annotated compound index.
*/
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
......@@ -541,7 +547,7 @@ class TranslatorGerman : public Translator
}
else
{
return "Übersicht";
return "Klassen";
}
}
......
This diff is collapsed.
......@@ -1554,6 +1554,7 @@ class TranslatorRussian : public Translator
return decode( ":" );
}
private:
QCString as_documents( int num )
{
if( num % 10 == 1 ) return "";
......
......@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
class TranslatorChinesetraditional : public TranslatorAdapter_1_3_3
class TranslatorChinesetraditional : public Translator
{
public:
......@@ -1472,6 +1472,57 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_3_3
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
......@@ -1030,7 +1030,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result+=' ';
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 ";
csp=0;
......@@ -1208,14 +1208,12 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,FileDef *fileSco
(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>");
if (d && (external ? d->isLinkable() : d->isLinkableInProject()))
if ((external ? md->isLinkable() : md->isLinkableInProject()))
{
//ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),
// md->anchor(),word);
out.writeLink(d->getReference(),d->getOutputFileBase(),
out.writeLink(md->getReference(),md->getOutputFileBase(),
md->anchor(),word);
found=TRUE;
}
......@@ -1356,8 +1354,9 @@ void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId)
else
anchor.sprintf("%c%d_%d",id,groupId,count++);
if (cd) anchor.prepend(escapeCharsInString(cd->name(),FALSE));
//printf("Member %s anchor %s\n",md->name().data(),anchor.data());
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,
)
{
//printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd);
*resMember=md;
if (cd) *resContext=cd;
if (md) { *resMember=md; *resContext=md; }
else if (cd) *resContext=cd;
else if (nd) *resContext=nd;
else if (fd) *resContext=fd;
else if (gd) *resContext=gd;
......@@ -2966,14 +2965,13 @@ bool generateRef(OutputDocInterface &od,const char *scName,
{
if (md) // link to member
{
od.writeObjectLink(compound->getReference(),
compound->getOutputFileBase(),
od.writeObjectLink(md->getReference(),
md->getOutputFileBase(),
md->anchor(),linkText);
// generate the page reference (for LaTeX)
if (!compound->isReference() && !md->anchor().isEmpty() &&
md->isLinkableInProject())
if (md->isLinkableInProject())
{
writePageRef(od,compound->getOutputFileBase(),md->anchor());
writePageRef(od,md->getOutputFileBase(),md->anchor());
}
}
else // link to compound
......@@ -3007,12 +3005,10 @@ bool resolveLink(/* in */ const char *scName,
/* in */ const char *lr,
/* in */ bool inSeeBlock,
/* out */ Definition **resContext,
/* out PageInfo **resPageInfo,*/
/* out */ QCString &resAnchor
)
{
*resContext=0;
//*resPageInfo=0;
QCString linkRef=lr;
FileDef *fd;
......@@ -3094,16 +3090,6 @@ bool generateLink(OutputDocInterface &od,const char *clName,
//printf("generateLink linkText=%s\n",linkText.data());
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 (lt==0 && anchor.isEmpty() && /* compound link */
......@@ -4022,9 +4008,7 @@ PageDef *addRelatedPage(const char *name,const QCString &ptitle,
pageName=pd->name();
else
pageName=pd->name().lower();
//setFileNameForSections(anchors,pageName,pi);
pd->setFileName(pageName);
//pi->addSections(anchors);
//printf("Appending page `%s'\n",baseName.data());
Doxygen::pageSDict->append(baseName,pd);
......
......@@ -736,6 +736,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->docFile(),md->docLine(),md->getOuterScope(),md,md->documentation());
t << " </detaileddescription>" << endl;
t << " <inbodydescription>" << endl;
writeXMLDocBlock(t,md->docFile(),md->inbodyLine(),md->getOuterScope(),md,md->inbodyDocumentation());
t << " </inbodydescription>" << endl;
if (md->getDefLine()!=-1)
{
t << " <location file=\""
......@@ -803,12 +806,9 @@ static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
for (mii.toFirst();(mi=mii.current());++mii)
{
MemberDef *md=mi->memberDef;
ClassDef *cd=md->getClassDef();
Definition *d=md->getGroupDef();
if (d==0) d = cd;
Protection prot = mi->prot;
Specifier virt=md->virtualness();
t << " <member refid=\"" << d->getOutputFileBase() << "_1" <<
t << " <member refid=\"" << md->getOutputFileBase() << "_1" <<
md->anchor() << "\" prot=\"";
switch (prot)
{
......@@ -876,7 +876,15 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
writeXMLHeader(t);
t << " <compounddef id=\""
<< 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>";
writeXMLString(t,cd->name());
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