Commit 655c12fb authored by dimitri's avatar dimitri

Release-1.3.2-20030717

parent aca0b889
...@@ -169,7 +169,7 @@ PERL_PATH = /usr/bin/perl ...@@ -169,7 +169,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HAVE_DOT = YES HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
......
DOXYGEN Version 1.3.2-20030708 DOXYGEN Version 1.3.2-20030717
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 (08 July 2003) Dimitri van Heesch (17 July 2003)
DOXYGEN Version 1.3.2_20030708 DOXYGEN Version 1.3.2_20030717
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) (08 July 2003) Dimitri van Heesch (dimitri@stack.nl) (17 July 2003)
1.3.2-20030708 1.3.2-20030717
...@@ -12,6 +12,7 @@ Wei Liu: liuwei@asiainfo.com ...@@ -12,6 +12,7 @@ Wei Liu: liuwei@asiainfo.com
Wang Weihan: wangweihan@capinfo.com.cn Wang Weihan: wangweihan@capinfo.com.cn
ChineseTraditional ChineseTraditional
Daniel YC Lin: daniel@twpda.com
Gary Lee: garylee@ecosine.com.tw Gary Lee: garylee@ecosine.com.tw
Croatian Croatian
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.3.2_20030708 Version: 1.3.2_20030717
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
......
...@@ -26,12 +26,15 @@ ...@@ -26,12 +26,15 @@
#include "debug.h" #include "debug.h"
#include "message.h" #include "message.h"
#include "config.h" #include "config.h"
#include "doxygen.h"
static BufStr *g_inBuf; static BufStr *g_inBuf;
static BufStr *g_outBuf; static BufStr *g_outBuf;
static int g_inBufPos; static int g_inBufPos;
static int g_col; static int g_col;
static int g_blockHeadCol; static int g_blockHeadCol;
static bool g_mlBrief;
static int g_readLineCtx;
static void replaceCommentMarker(const char *s,int len) static void replaceCommentMarker(const char *s,int len)
{ {
...@@ -105,18 +108,7 @@ static int yyread(char *buf,int max_size) ...@@ -105,18 +108,7 @@ static int yyread(char *buf,int max_size)
return bytesToCopy; return bytesToCopy;
} }
#define replaceComment(offset) \ void replaceComment(int offset);
int i=computeIndent(&yytext[offset]); \
if (i==g_blockHeadCol) \
{ \
replaceCommentMarker(yytext,yyleng); \
} \
else \
{ \
copyToOutput(" */",3); \
int i;for (i=yyleng-1;i>=0;i--) unput(yytext[i]); \
BEGIN(Scan); \
} \
%} %}
...@@ -127,6 +119,7 @@ static int yyread(char *buf,int max_size) ...@@ -127,6 +119,7 @@ static int yyread(char *buf,int max_size)
%x SComment %x SComment
%x CComment %x CComment
%x Verbatim %x Verbatim
%x ReadLine
%% %%
...@@ -141,6 +134,7 @@ static int yyread(char *buf,int max_size) ...@@ -141,6 +134,7 @@ static int yyread(char *buf,int max_size)
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<Scan>("//!"|"///").*/\n[ \t]*"//"[\/!][^\/] { /* start C++ style special comment block */ <Scan>("//!"|"///").*/\n[ \t]*"//"[\/!][^\/] { /* start C++ style special comment block */
if (g_mlBrief) REJECT; // bail out if we do not need to convert
int i=3; int i=3;
if (yytext[2]=='/') if (yytext[2]=='/')
{ {
...@@ -152,14 +146,17 @@ static int yyread(char *buf,int max_size) ...@@ -152,14 +146,17 @@ static int yyread(char *buf,int max_size)
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */ <Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */
if (g_mlBrief) REJECT;
int i=17; //=strlen("//##Documentation"); int i=17; //=strlen("//##Documentation");
g_blockHeadCol=g_col; g_blockHeadCol=g_col;
copyToOutput("/**",3); copyToOutput("/**",3);
copyToOutput(yytext+i,yyleng-i); copyToOutput(yytext+i,yyleng-i);
BEGIN(SComment); BEGIN(SComment);
} }
<Scan>"//".*\n { /* one line C++ comment */ <Scan>"//"/.*\n { /* one line C++ comment */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<Scan>"/*" { /* start of a C comment */ <Scan>"/*" { /* start of a C comment */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
...@@ -198,7 +195,7 @@ static int yyread(char *buf,int max_size) ...@@ -198,7 +195,7 @@ static int yyread(char *buf,int max_size)
<SkipString>\n { /* new line inside string (illegal for some compilers) */ <SkipString>\n { /* new line inside string (illegal for some compilers) */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<CComment>[^*\n]* { /* anything that is not a '*' */ <CComment>[^\\@*\n]* { /* anything that is not a '*' */
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
} }
<CComment>"*"+[^*/\n]* { /* stars without slashes */ <CComment>"*"+[^*/\n]* { /* stars without slashes */
...@@ -211,44 +208,116 @@ static int yyread(char *buf,int max_size) ...@@ -211,44 +208,116 @@ static int yyread(char *buf,int max_size)
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
BEGIN(Scan); BEGIN(Scan);
} }
<CComment>[\\@][a-z_A-Z][a-z_A-Z0-9]* { // expand alias
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
copyToOutput(pValue->data(),pValue->length());
}
else
{
copyToOutput(yytext,yyleng);
}
}
<CComment>. {
copyToOutput(yytext,yyleng);
}
<SComment>^[ \t]*"///"[\/]*/\n { <SComment>^[ \t]*"///"[\/]*/\n {
replaceComment(0); replaceComment(0);
} }
<SComment>\n[ \t]*"///"[\/]*/\n { <SComment>\n[ \t]*"///"[\/]*/\n {
replaceComment(1); replaceComment(1);
} }
<SComment>^[ \t]*"///"[^\/\n].*/\n { <SComment>^[ \t]*"///"[^\/\n]/.*\n {
replaceComment(0); replaceComment(0);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>\n[ \t]*"///"[^\/\n].*/\n { <SComment>\n[ \t]*"///"[^\/\n]/.*\n {
replaceComment(1); replaceComment(1);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>^[ \t]*"//!".*/\n { <SComment>^[ \t]*"//!"/.*\n {
replaceComment(0); replaceComment(0);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>\n[ \t]*"//!".*/\n { <SComment>\n[ \t]*"//!"/.*\n {
replaceComment(1); replaceComment(1);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>^[ \t]*"//##".*/\n { <SComment>^[ \t]*"//##"/.*\n {
replaceComment(0); replaceComment(0);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>\n[ \t]*"//##".*/\n { <SComment>\n[ \t]*"//##"/.*\n {
replaceComment(1); replaceComment(1);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
} }
<SComment>\n { /* end of special comment */ <SComment>\n { /* end of special comment */
copyToOutput(" */",3); copyToOutput(" */",3);
copyToOutput(yytext,yyleng); copyToOutput(yytext,yyleng);
BEGIN(Scan); BEGIN(Scan);
} }
<ReadLine>[^\\@\n]*/\n {
copyToOutput(yytext,yyleng);
BEGIN(g_readLineCtx);
}
<ReadLine>[\\@][a-z_A-Z][a-z_A-Z0-9]* { // expand alias
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
copyToOutput(pValue->data(),pValue->length());
}
else
{
copyToOutput(yytext,yyleng);
}
}
<ReadLine>. {
copyToOutput(yytext,yyleng);
}
%% %%
void replaceComment(int offset)
{
if (g_mlBrief)
{
copyToOutput(yytext,yyleng);
}
else
{
int i=computeIndent(&yytext[offset]);
if (i==g_blockHeadCol)
{
replaceCommentMarker(yytext,yyleng);
}
else
{
copyToOutput(" */",3);
int i;for (i=yyleng-1;i>=0;i--) unput(yytext[i]);
BEGIN(Scan);
}
}
}
/*! This function does two things:
* -# It converts multi-line C++ style comment blocks (that are aligned)
* to C style comment blocks (if MULTILINE_CPP_IS_BRIEF is set to NO).
* -# It replaces aliases with their definition (see ALIASES)
*/
void convertCppComments(BufStr *inBuf,BufStr *outBuf) void convertCppComments(BufStr *inBuf,BufStr *outBuf)
{ {
g_inBuf = inBuf; g_inBuf = inBuf;
g_outBuf = outBuf; g_outBuf = outBuf;
g_inBufPos = 0; g_inBufPos = 0;
g_col = 0; g_col = 0;
g_mlBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF");
BEGIN(Scan); BEGIN(Scan);
yylex(); yylex();
if (Debug::isFlagSet(Debug::CommentCnv)) if (Debug::isFlagSet(Debug::CommentCnv))
......
<?xml version='1.0' encoding='utf-8' ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="doxygen" type="DoxygenType"/> <xsd:element name="doxygen" type="DoxygenType"/>
<!-- Complex types -->
<xsd:complexType name="DoxygenType"> <xsd:complexType name="DoxygenType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="compounddef" type="compounddefType" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="version" type="DoxVersionNumber" use="required" />
</xsd:complexType>
<xsd:complexType name="compounddefType">
<xsd:sequence>
<xsd:element name="compoundname" type="xsd:string"/>
<xsd:element name="title" type="xsd:string" minOccurs="0" />
<xsd:element name="basecompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="derivedcompoundref" type="compoundRefType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="includes" type="incType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="includedby" type="incType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="incdepgraph" type="graphType" minOccurs="0" />
<xsd:element name="invincdepgraph" type="graphType" minOccurs="0" />
<xsd:element name="innerfile" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innerclass" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innernamespace" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innerpage" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="innergroup" type="refType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="templateparamlist" type="templateparamlistType" minOccurs="0" />
<xsd:element name="sectiondef" type="sectiondefType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
<xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
<xsd:element name="inheritancegraph" type="graphType" minOccurs="0" />
<xsd:element name="collaborationgraph" type="graphType" minOccurs="0" />
<xsd:element name="programlisting" type="listingType" minOccurs="0" />
<xsd:element name="location" type="locationType" minOccurs="0" />
<xsd:element name="listofallmembers" type="listofallmembersType" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="id" />
<xsd:attribute name="kind" type="DoxCompoundKind" />
</xsd:complexType>
<xsd:complexType name="listofallmembersType">
<xsd:sequence>
<xsd:element name="member" type="memberRefType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="memberRefType">
<xsd:sequence>
<xsd:element name="scope" />
<xsd:element name="name" />
</xsd:sequence>
<xsd:attribute name="refid" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
<xsd:attribute name="virt" type="DoxVirtualKind" />
<xsd:attribute name="ambiguityscope" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="compoundRefType" mixed="true">
<xsd:attribute name="refid" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
<xsd:attribute name="virt" type="DoxVirtualKind" />
</xsd:complexType>
<xsd:complexType name="reimplementType" mixed="true">
<xsd:attribute name="refid" />
</xsd:complexType>
<xsd:complexType name="incType" mixed="true">
<xsd:attribute name="refid" />
<xsd:attribute name="local" type="DoxBool" />
</xsd:complexType>
<xsd:complexType name="refType" mixed="true">
<xsd:attribute name="refid" />
</xsd:complexType>
<xsd:complexType name="refTextType" mixed="true">
<xsd:attribute name="refid" />
<xsd:attribute name="kindref" />
<xsd:attribute name="external" />
</xsd:complexType>
<xsd:complexType name="sectiondefType">
<xsd:sequence>
<xsd:element name="header" type="xsd:string" minOccurs="0" />
<xsd:element name="memberdef" type="memberdefType" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="kind" type="DoxSectionKind" />
</xsd:complexType>
<xsd:complexType name="memberdefType">
<xsd:sequence>
<xsd:element name="type" type="linkedTextType" minOccurs="0" />
<xsd:element name="definition" minOccurs="0" />
<xsd:element name="argsstring" minOccurs="0" />
<xsd:element name="name" />
<xsd:element name="reimplements" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="reimplementedby" type="reimplementType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="enumvalue" type="enumvalueType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
<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="location" type="locationType" />
<xsd:element name="references" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="referencedby" type="referenceType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="kind" type="DoxMemberKind" />
<xsd:attribute name="id" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
<xsd:attribute name="static" type="DoxBool" />
<xsd:attribute name="const" type="DoxBool" />
<xsd:attribute name="explicit" type="DoxBool" />
<xsd:attribute name="inline" type="DoxBool" />
<xsd:attribute name="virt" type="DoxVirtualKind" />
<xsd:attribute name="volatile" type="DoxBool" />
<xsd:attribute name="mutable" type="DoxBool" />
</xsd:complexType>
<xsd:complexType name="descriptionType" mixed="true">
<xsd:sequence>
<xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="enumvalueType" mixed="true">
<xsd:sequence>
<xsd:element name="name" />
<xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
<xsd:element name="detaileddescription" type="descriptionType" minOccurs="0" />
<xsd:element name="initializer" type="linkedTextType" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="id" />
<xsd:attribute name="prot" type="DoxProtectionKind" />
</xsd:complexType>
<xsd:complexType name="templateparamlistType">
<xsd:sequence>
<xsd:element name="param" type="paramType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="paramType">
<xsd:sequence>
<xsd:element name="type" type="linkedTextType" minOccurs="0" />
<xsd:element name="declname" minOccurs="0" />
<xsd:element name="defname" minOccurs="0" />
<xsd:element name="array" minOccurs="0" />
<xsd:element name="defval" type="linkedTextType" minOccurs="0" />
<xsd:element name="briefdescription" type="descriptionType" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="linkedTextType" mixed="true">
<xsd:sequence>
<xsd:element name="ref" type="refTextType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="graphType">
<xsd:sequence>
<xsd:element name="node" type="nodeType" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="nodeType">
<xsd:sequence>
<xsd:element name="label" />
<xsd:element name="link" type="linkType" minOccurs="0" />
<xsd:element name="childnode" type="childnodeType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="id" />
</xsd:complexType>
<xsd:complexType name="childnodeType">
<xsd:sequence>
<xsd:element name="edgelabel" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="refid" />
<xsd:attribute name="relation" type="DoxGraphRelation" />
</xsd:complexType>
<xsd:complexType name="linkType">
<xsd:attribute name="refid" />
<xsd:attribute name="external" use="optional"/>
</xsd:complexType>
<xsd:complexType name="listingType">
<xsd:sequence> <xsd:sequence>
<xsd:element name="codeline" type="codelineType" maxOccurs="unbounded" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="version" type="xsd:string" use="required"/>
</xsd:complexType> </xsd:complexType>
<xsd:complexType name="codelineType">
<xsd:sequence>
<xsd:element name="highlight" type="highlightType" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="lineno" type="xsd:integer" />
<xsd:attribute name="refid" />
<xsd:attribute name="refkind" type="DoxRefKind" />
<xsd:attribute name="external" />
</xsd:complexType>
<xsd:complexType name="highlightType" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="sp" />
<xsd:element name="ref" type="refTextType" />
</xsd:choice>
<xsd:attribute name="class" type="DoxHighlightClass" />
</xsd:complexType>
<xsd:complexType name="referenceType" mixed="true">
<xsd:attribute name="refid" />
<xsd:attribute name="compoundref" use="optional" />
<xsd:attribute name="startline" type="xsd:integer" />
<xsd:attribute name="endline" type="xsd:integer" />
</xsd:complexType>
<xsd:complexType name="locationType">
<xsd:attribute name="file" />
<xsd:attribute name="line" type="xsd:integer" />
<xsd:attribute name="bodystart" type="xsd:integer" />
<xsd:attribute name="bodyend" type="xsd:integer" />
</xsd:complexType>
<!-- Simple types -->
<xsd:simpleType name="DoxBool">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="yes" />
<xsd:enumeration value="no" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxGraphRelation">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="include" />
<xsd:enumeration value="usage" />
<xsd:enumeration value="template-instance" />
<xsd:enumeration value="public-inheritance" />
<xsd:enumeration value="protected-inheritance" />
<xsd:enumeration value="private-inheritance" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxRefKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="compound" />
<xsd:enumeration value="member" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxMemberKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="define" />
<xsd:enumeration value="property" />
<xsd:enumeration value="event" />
<xsd:enumeration value="variable" />
<xsd:enumeration value="typedef" />
<xsd:enumeration value="enum" />
<xsd:enumeration value="function" />
<xsd:enumeration value="signal" />
<xsd:enumeration value="prototype" />
<xsd:enumeration value="friend" />
<xsd:enumeration value="dcop" />
<xsd:enumeration value="slot" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxProtectionKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="public" />
<xsd:enumeration value="protected" />
<xsd:enumeration value="private" />
<xsd:enumeration value="package" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxVirtualKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="non-virtual" />
<xsd:enumeration value="virtual" />
<xsd:enumeration value="pure-virtual" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxCompoundKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="class" />
<xsd:enumeration value="struct" />
<xsd:enumeration value="union" />
<xsd:enumeration value="interface" />
<xsd:enumeration value="exception" />
<xsd:enumeration value="file" />
<xsd:enumeration value="namespace" />
<xsd:enumeration value="group" />
<xsd:enumeration value="page" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxSectionKind">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="user-defined" />
<xsd:enumeration value="public-type" />
<xsd:enumeration value="public-func" />
<xsd:enumeration value="public-attrib" />
<xsd:enumeration value="public-slot" />
<xsd:enumeration value="signal" />
<xsd:enumeration value="dcop-func" />
<xsd:enumeration value="property" />
<xsd:enumeration value="event" />
<xsd:enumeration value="public-static-func" />
<xsd:enumeration value="public-static-attrib" />
<xsd:enumeration value="protected-type" />
<xsd:enumeration value="protected-func" />
<xsd:enumeration value="protected-attrib" />
<xsd:enumeration value="protected-slot" />
<xsd:enumeration value="protected-static-func" />
<xsd:enumeration value="protected-static-attrib" />
<xsd:enumeration value="private-type" />
<xsd:enumeration value="private-func" />
<xsd:enumeration value="private-attrib" />
<xsd:enumeration value="private-slot" />
<xsd:enumeration value="private-static-func" />
<xsd:enumeration value="private-static-attrib" />
<xsd:enumeration value="friend" />
<xsd:enumeration value="related" />
<xsd:enumeration value="define" />
<xsd:enumeration value="prototype" />
<xsd:enumeration value="typedef" />
<xsd:enumeration value="enum" />
<xsd:enumeration value="func" />
<xsd:enumeration value="var" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxHighlightClass">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="comment" />
<xsd:enumeration value="normal" />
<xsd:enumeration value="preprocessor" />
<xsd:enumeration value="keyword" />
<xsd:enumeration value="keywordtype" />
<xsd:enumeration value="keywordflow" />
<xsd:enumeration value="stringliteral" />
<xsd:enumeration value="charliteral" />
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DoxVersionNumber">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+\.\d+.*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema> </xsd:schema>
"<?xml version='1.0' encoding='utf-8' ?>\n"
"<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
" <xsd:element name=\"doxygen\" type=\"DoxygenType\"/>\n" " <xsd:element name=\"doxygen\" type=\"DoxygenType\"/>\n"
"\n" "\n"
" <!-- Complex types -->\n"
"\n"
" <xsd:complexType name=\"DoxygenType\">\n" " <xsd:complexType name=\"DoxygenType\">\n"
" <xsd:sequence maxOccurs=\"unbounded\">\n"
" <xsd:element name=\"compounddef\" type=\"compounddefType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"version\" type=\"DoxVersionNumber\" use=\"required\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"compounddefType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"compoundname\" type=\"xsd:string\"/>\n"
" <xsd:element name=\"title\" type=\"xsd:string\" minOccurs=\"0\" />\n"
" <xsd:element name=\"basecompoundref\" type=\"compoundRefType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"derivedcompoundref\" type=\"compoundRefType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"includes\" type=\"incType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"includedby\" type=\"incType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"incdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"invincdepgraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"innerfile\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innerclass\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innernamespace\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innerpage\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"innergroup\" type=\"refType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"templateparamlist\" type=\"templateparamlistType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"sectiondef\" type=\"sectiondefType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"inheritancegraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"collaborationgraph\" type=\"graphType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"programlisting\" type=\"listingType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"location\" type=\"locationType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"listofallmembers\" type=\"listofallmembersType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n"
" <xsd:attribute name=\"kind\" type=\"DoxCompoundKind\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"listofallmembersType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"member\" type=\"memberRefType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"memberRefType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"scope\" />\n"
" <xsd:element name=\"name\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" <xsd:attribute name=\"virt\" type=\"DoxVirtualKind\" />\n"
" <xsd:attribute name=\"ambiguityscope\" type=\"xsd:string\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"compoundRefType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" <xsd:attribute name=\"virt\" type=\"DoxVirtualKind\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"reimplementType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"incType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"local\" type=\"DoxBool\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"refType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"refTextType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"kindref\" />\n"
" <xsd:attribute name=\"external\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"sectiondefType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"header\" type=\"xsd:string\" minOccurs=\"0\" />\n"
" <xsd:element name=\"memberdef\" type=\"memberdefType\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"kind\" type=\"DoxSectionKind\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"memberdefType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"type\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"definition\" minOccurs=\"0\" />\n"
" <xsd:element name=\"argsstring\" minOccurs=\"0\" />\n"
" <xsd:element name=\"name\" />\n"
" <xsd:element name=\"reimplements\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"reimplementedby\" type=\"reimplementType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"param\" type=\"paramType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"enumvalue\" type=\"enumvalueType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" <xsd:element name=\"initializer\" 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=\"detaileddescription\" 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"
" </xsd:sequence>\n"
" <xsd:attribute name=\"kind\" type=\"DoxMemberKind\" />\n"
" <xsd:attribute name=\"id\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" <xsd:attribute name=\"static\" type=\"DoxBool\" />\n"
" <xsd:attribute name=\"const\" type=\"DoxBool\" />\n"
" <xsd:attribute name=\"explicit\" type=\"DoxBool\" />\n"
" <xsd:attribute name=\"inline\" type=\"DoxBool\" />\n"
" <xsd:attribute name=\"virt\" type=\"DoxVirtualKind\" />\n"
" <xsd:attribute name=\"volatile\" type=\"DoxBool\" />\n"
" <xsd:attribute name=\"mutable\" type=\"DoxBool\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"descriptionType\" mixed=\"true\">\n"
" <xsd:sequence>\n"
" <xsd:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"enumvalueType\" mixed=\"true\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"name\" />\n"
" <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"detaileddescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"initializer\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n"
" <xsd:attribute name=\"prot\" type=\"DoxProtectionKind\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"templateparamlistType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"param\" type=\"paramType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"paramType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"type\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"declname\" minOccurs=\"0\" />\n"
" <xsd:element name=\"defname\" minOccurs=\"0\" />\n"
" <xsd:element name=\"array\" minOccurs=\"0\" />\n"
" <xsd:element name=\"defval\" type=\"linkedTextType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"briefdescription\" type=\"descriptionType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"linkedTextType\" mixed=\"true\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"ref\" type=\"refTextType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"graphType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"node\" type=\"nodeType\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"nodeType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"label\" />\n"
" <xsd:element name=\"link\" type=\"linkType\" minOccurs=\"0\" />\n"
" <xsd:element name=\"childnode\" type=\"childnodeType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"id\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"childnodeType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"edgelabel\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"relation\" type=\"DoxGraphRelation\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"linkType\">\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"external\" use=\"optional\"/>\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"listingType\">\n"
" <xsd:sequence>\n" " <xsd:sequence>\n"
" <xsd:element name=\"codeline\" type=\"codelineType\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n" " </xsd:sequence>\n"
" <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"required\"/>\n"
" </xsd:complexType>\n" " </xsd:complexType>\n"
"\n" "\n"
" <xsd:complexType name=\"codelineType\">\n"
" <xsd:sequence>\n"
" <xsd:element name=\"highlight\" type=\"highlightType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
" </xsd:sequence>\n"
" <xsd:attribute name=\"lineno\" type=\"xsd:integer\" />\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"refkind\" type=\"DoxRefKind\" />\n"
" <xsd:attribute name=\"external\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"highlightType\" mixed=\"true\">\n"
" <xsd:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n"
" <xsd:element name=\"sp\" />\n"
" <xsd:element name=\"ref\" type=\"refTextType\" />\n"
" </xsd:choice>\n"
" <xsd:attribute name=\"class\" type=\"DoxHighlightClass\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"referenceType\" mixed=\"true\">\n"
" <xsd:attribute name=\"refid\" />\n"
" <xsd:attribute name=\"compoundref\" use=\"optional\" />\n"
" <xsd:attribute name=\"startline\" type=\"xsd:integer\" />\n"
" <xsd:attribute name=\"endline\" type=\"xsd:integer\" />\n"
" </xsd:complexType>\n"
"\n"
" <xsd:complexType name=\"locationType\">\n"
" <xsd:attribute name=\"file\" />\n"
" <xsd:attribute name=\"line\" type=\"xsd:integer\" />\n"
" <xsd:attribute name=\"bodystart\" type=\"xsd:integer\" />\n"
" <xsd:attribute name=\"bodyend\" type=\"xsd:integer\" />\n"
" </xsd:complexType>\n"
"\n"
" <!-- Simple types -->\n"
"\n"
" <xsd:simpleType name=\"DoxBool\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"yes\" />\n"
" <xsd:enumeration value=\"no\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxGraphRelation\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"include\" />\n"
" <xsd:enumeration value=\"usage\" />\n"
" <xsd:enumeration value=\"template-instance\" />\n"
" <xsd:enumeration value=\"public-inheritance\" />\n"
" <xsd:enumeration value=\"protected-inheritance\" />\n"
" <xsd:enumeration value=\"private-inheritance\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxRefKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"compound\" />\n"
" <xsd:enumeration value=\"member\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxMemberKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"define\" />\n"
" <xsd:enumeration value=\"property\" />\n"
" <xsd:enumeration value=\"event\" />\n"
" <xsd:enumeration value=\"variable\" />\n"
" <xsd:enumeration value=\"typedef\" />\n"
" <xsd:enumeration value=\"enum\" />\n"
" <xsd:enumeration value=\"function\" />\n"
" <xsd:enumeration value=\"signal\" />\n"
" <xsd:enumeration value=\"prototype\" />\n"
" <xsd:enumeration value=\"friend\" />\n"
" <xsd:enumeration value=\"dcop\" />\n"
" <xsd:enumeration value=\"slot\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxProtectionKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"public\" />\n"
" <xsd:enumeration value=\"protected\" />\n"
" <xsd:enumeration value=\"private\" />\n"
" <xsd:enumeration value=\"package\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxVirtualKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"non-virtual\" />\n"
" <xsd:enumeration value=\"virtual\" />\n"
" <xsd:enumeration value=\"pure-virtual\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxCompoundKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"class\" />\n"
" <xsd:enumeration value=\"struct\" />\n"
" <xsd:enumeration value=\"union\" />\n"
" <xsd:enumeration value=\"interface\" />\n"
" <xsd:enumeration value=\"exception\" />\n"
" <xsd:enumeration value=\"file\" />\n"
" <xsd:enumeration value=\"namespace\" />\n"
" <xsd:enumeration value=\"group\" />\n"
" <xsd:enumeration value=\"page\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxSectionKind\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"user-defined\" />\n"
" <xsd:enumeration value=\"public-type\" />\n"
" <xsd:enumeration value=\"public-func\" />\n"
" <xsd:enumeration value=\"public-attrib\" />\n"
" <xsd:enumeration value=\"public-slot\" />\n"
" <xsd:enumeration value=\"signal\" />\n"
" <xsd:enumeration value=\"dcop-func\" />\n"
" <xsd:enumeration value=\"property\" />\n"
" <xsd:enumeration value=\"event\" />\n"
" <xsd:enumeration value=\"public-static-func\" />\n"
" <xsd:enumeration value=\"public-static-attrib\" />\n"
" <xsd:enumeration value=\"protected-type\" />\n"
" <xsd:enumeration value=\"protected-func\" />\n"
" <xsd:enumeration value=\"protected-attrib\" />\n"
" <xsd:enumeration value=\"protected-slot\" />\n"
" <xsd:enumeration value=\"protected-static-func\" />\n"
" <xsd:enumeration value=\"protected-static-attrib\" />\n"
" <xsd:enumeration value=\"private-type\" />\n"
" <xsd:enumeration value=\"private-func\" />\n"
" <xsd:enumeration value=\"private-attrib\" />\n"
" <xsd:enumeration value=\"private-slot\" />\n"
" <xsd:enumeration value=\"private-static-func\" />\n"
" <xsd:enumeration value=\"private-static-attrib\" />\n"
" <xsd:enumeration value=\"friend\" />\n"
" <xsd:enumeration value=\"related\" />\n"
" <xsd:enumeration value=\"define\" />\n"
" <xsd:enumeration value=\"prototype\" />\n"
" <xsd:enumeration value=\"typedef\" />\n"
" <xsd:enumeration value=\"enum\" />\n"
" <xsd:enumeration value=\"func\" />\n"
" <xsd:enumeration value=\"var\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxHighlightClass\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:enumeration value=\"comment\" />\n"
" <xsd:enumeration value=\"normal\" />\n"
" <xsd:enumeration value=\"preprocessor\" />\n"
" <xsd:enumeration value=\"keyword\" />\n"
" <xsd:enumeration value=\"keywordtype\" />\n"
" <xsd:enumeration value=\"keywordflow\" />\n"
" <xsd:enumeration value=\"stringliteral\" />\n"
" <xsd:enumeration value=\"charliteral\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
" <xsd:simpleType name=\"DoxVersionNumber\">\n"
" <xsd:restriction base=\"xsd:string\">\n"
" <xsd:pattern value=\"\\d+\\.\\d+.*\" />\n"
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
"\n"
"</xsd:schema>\n" "</xsd:schema>\n"
"\n" "\n"
...@@ -31,7 +31,7 @@ class MemberDef; ...@@ -31,7 +31,7 @@ class MemberDef;
class GroupDef; class GroupDef;
class GroupList; class GroupList;
struct ListItemInfo; struct ListItemInfo;
class SectionInfo; struct SectionInfo;
/*! The common base class of all entity definitions found in the sources. */ /*! The common base class of all entity definitions found in the sources. */
class Definition class Definition
......
...@@ -229,6 +229,29 @@ static void processSection() ...@@ -229,6 +229,29 @@ static void processSection()
} }
} }
static void handleHtmlTag()
{
g_token->name = yytext;
g_token->attribs.clear();
int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++;
int attSep=0;
while (attSep<yyleng && !isspace(yytext[attSep]))
{
attSep++;
}
if (attSep!=yyleng) // tag has one or more options
{
parseHtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-attSep-2));
g_token->name=g_token->name.mid(startNamePos,attSep-1).lower();
}
else // tag without options, strip brackets
{
g_token->name=g_token->name.mid(startNamePos,g_token->name.length()-startNamePos-1).lower();
}
g_token->endTag = startNamePos==2;
}
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
#undef YY_INPUT #undef YY_INPUT
...@@ -255,7 +278,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* ...@@ -255,7 +278,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
OPTSTARS ("//"{BLANK}*)?"*"*{BLANK}* OPTSTARS ("//"{BLANK}*)?"*"*{BLANK}*
LISTITEM {BLANK}*{OPTSTARS}"-"("#")?{WS} LISTITEM {BLANK}*{OPTSTARS}"-"("#")?{WS}
ENDLIST {BLANK}*{OPTSTARS}"."{BLANK}*\n ENDLIST {BLANK}*{OPTSTARS}"."{BLANK}*\n
ATTRIB {ID}("="(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))? ATTRIB {ID}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))?
URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=] URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=]
URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])? URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])?
FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+] FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+]
...@@ -283,7 +306,7 @@ WORD1 [^ \t\n\r\\@<>()\[\]:;\?{}&$#,.]+|"{"|"}"|("\""[^"\n]*"\"") ...@@ -283,7 +306,7 @@ WORD1 [^ \t\n\r\\@<>()\[\]:;\?{}&$#,.]+|"{"|"}"|("\""[^"\n]*"\"")
WORD2 "."|","|"("|")"|"["|"]"|":"|";"|"\?" WORD2 "."|","|"("|")"|"["|"]"|":"|";"|"\?"
WORD1NQ [^ \t\n\r\\@<>()\[\]:;\?{}&$#,."]+ WORD1NQ [^ \t\n\r\\@<>()\[\]:;\?{}&$#,."]+
WORD2NQ "."|","|"("|")"|"["|"]"|":"|";"|"\?" WORD2NQ "."|","|"("|")"|"["|"]"|":"|";"|"\?"
HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*">" HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*">"
HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p" HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"
HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P" HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"
HTMLKEYW {HTMLKEYL}|{HTMLKEYU} HTMLKEYW {HTMLKEYL}|{HTMLKEYU}
...@@ -391,25 +414,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -391,25 +414,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
for (int i=value.length()-1;i>=0;i--) unput(value.at(i)); for (int i=value.length()-1;i>=0;i--) unput(value.at(i));
} }
<St_Para>{HTMLTAG} { /* html tag */ <St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext; handleHtmlTag();
g_token->attribs.clear();
int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++;
int attSep=0;
while (attSep<yyleng && !isspace(yytext[attSep]))
{
attSep++;
}
if (attSep!=yyleng) // tag has one or more options
{
parseHtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-attSep-2));
g_token->name=g_token->name.mid(startNamePos,attSep-1).lower();
}
else // tag without options, strip brackets
{
g_token->name=g_token->name.mid(startNamePos,g_token->name.length()-startNamePos-1).lower();
}
g_token->endTag = startNamePos==2;
return TK_HTMLTAG; return TK_HTMLTAG;
} }
<St_Para,St_Text>"&"{ID}";" { /* special symbol */ <St_Para,St_Text>"&"{ID}";" { /* special symbol */
...@@ -538,6 +543,8 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* ...@@ -538,6 +543,8 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]*
g_token->name = yytext; g_token->name = yytext;
return TK_SYMBOL; return TK_SYMBOL;
} }
<St_TitleN>{HTMLTAG} {
}
<St_TitleN>{SPCMD1} | <St_TitleN>{SPCMD1} |
<St_TitleN>{SPCMD2} { /* special command */ <St_TitleN>{SPCMD2} { /* special command */
g_token->name = yytext+1; g_token->name = yytext+1;
......
...@@ -612,10 +612,10 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph) ...@@ -612,10 +612,10 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph)
if (urlPtr) if (urlPtr)
{ {
*urlPtr++='\0'; *urlPtr++='\0';
t << " <link id=\"" << urlPtr << "\""; t << " <link refid=\"" << convertToXML(urlPtr) << "\"";
if (*refPtr!='\0') if (*refPtr!='\0')
{ {
t << " external=\"" << refPtr << "\""; t << " external=\"" << convertToXML(refPtr) << "\"";
} }
t << "/>" << endl; t << "/>" << endl;
} }
...@@ -629,7 +629,7 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph) ...@@ -629,7 +629,7 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph)
for (;(childNode=nli.current());++nli,++eli) for (;(childNode=nli.current());++nli,++eli)
{ {
edgeInfo=eli.current(); edgeInfo=eli.current();
t << " <childnode id=\"" << childNode->m_number << "\" relation=\""; t << " <childnode refid=\"" << childNode->m_number << "\" relation=\"";
if (isClassGraph) if (isClassGraph)
{ {
switch(edgeInfo->m_color) switch(edgeInfo->m_color)
......
...@@ -235,7 +235,6 @@ static void addRelatedPage(Entry *root) ...@@ -235,7 +235,6 @@ static void addRelatedPage(Entry *root)
} }
} }
static void buildGroupListFiltered(Entry *root,bool additional) static void buildGroupListFiltered(Entry *root,bool additional)
{ {
if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty())
...@@ -6783,10 +6782,11 @@ static void readFiles(BufStr &output) ...@@ -6783,10 +6782,11 @@ static void readFiles(BufStr &output)
int fileNameSize=fileName.length(); int fileNameSize=fileName.length();
bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF"); //bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF");
BufStr tempBuf(10000); BufStr tempBuf(20000);
BufStr *bufPtr = multiLineIsBrief ? &output : &tempBuf; //BufStr *bufPtr = multiLineIsBrief ? &output : &tempBuf;
BufStr *bufPtr = &tempBuf;
// add begin filename marker // add begin filename marker
bufPtr->addChar(0x06); bufPtr->addChar(0x06);
...@@ -6809,10 +6809,10 @@ static void readFiles(BufStr &output) ...@@ -6809,10 +6809,10 @@ static void readFiles(BufStr &output)
bufPtr->addChar('\n'); /* to prevent problems under Windows ? */ bufPtr->addChar('\n'); /* to prevent problems under Windows ? */
if (!multiLineIsBrief) //if (!multiLineIsBrief)
{ //{
convertCppComments(&tempBuf,&output); convertCppComments(&tempBuf,&output);
} //}
s=inputFiles.next(); s=inputFiles.next();
//printf("-------> adding new line\n"); //printf("-------> adding new line\n");
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qlist.h> #include <qlist.h>
class SectionInfo; struct SectionInfo;
enum Protection { Public, Protected, Private, Package } ; enum Protection { Public, Protected, Private, Package } ;
enum Specifier { Normal, Virtual, Pure } ; enum Specifier { Normal, Virtual, Pure } ;
......
<?xml version='1.0' encoding='utf-8' ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="doxygen" type="DoxygenType"/> <xsd:element name="doxygenindex" type="DoxygenType"/>
<xsd:complexType name="DoxygenType"> <xsd:complexType name="DoxygenType">
<xsd:sequence> <xsd:sequence>
...@@ -47,6 +48,7 @@ ...@@ -47,6 +48,7 @@
<xsd:enumeration value="variable"/> <xsd:enumeration value="variable"/>
<xsd:enumeration value="typedef"/> <xsd:enumeration value="typedef"/>
<xsd:enumeration value="enum"/> <xsd:enumeration value="enum"/>
<xsd:enumeration value="enumvalue"/>
<xsd:enumeration value="function"/> <xsd:enumeration value="function"/>
<xsd:enumeration value="signal"/> <xsd:enumeration value="signal"/>
<xsd:enumeration value="prototype"/> <xsd:enumeration value="prototype"/>
......
"<?xml version='1.0' encoding='utf-8' ?>\n"
"<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
" <xsd:element name=\"doxygen\" type=\"DoxygenType\"/>\n" " <xsd:element name=\"doxygenindex\" type=\"DoxygenType\"/>\n"
"\n" "\n"
" <xsd:complexType name=\"DoxygenType\">\n" " <xsd:complexType name=\"DoxygenType\">\n"
" <xsd:sequence>\n" " <xsd:sequence>\n"
...@@ -47,6 +48,7 @@ ...@@ -47,6 +48,7 @@
" <xsd:enumeration value=\"variable\"/>\n" " <xsd:enumeration value=\"variable\"/>\n"
" <xsd:enumeration value=\"typedef\"/>\n" " <xsd:enumeration value=\"typedef\"/>\n"
" <xsd:enumeration value=\"enum\"/>\n" " <xsd:enumeration value=\"enum\"/>\n"
" <xsd:enumeration value=\"enumvalue\"/>\n"
" <xsd:enumeration value=\"function\"/>\n" " <xsd:enumeration value=\"function\"/>\n"
" <xsd:enumeration value=\"signal\"/>\n" " <xsd:enumeration value=\"signal\"/>\n"
" <xsd:enumeration value=\"prototype\"/>\n" " <xsd:enumeration value=\"prototype\"/>\n"
......
...@@ -500,18 +500,10 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd, ...@@ -500,18 +500,10 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
else // local link else // local link
{ {
QCString sep = Config_getBool("OPTIMIZE_OUTPUT_JAVA") ? "." : "::"; QCString sep = Config_getBool("OPTIMIZE_OUTPUT_JAVA") ? "." : "::";
if (cd) QCString n = name();
{ if (classDef && gd) n.prepend(classDef->name()+sep);
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),cd->name()+sep+name()); else if (nspace && gd) n.prepend(nspace->name()+sep);
} ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),n);
else if (nd)
{
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),nd->name()+sep+name());
}
else
{
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),name());
}
} }
} }
......
...@@ -4675,6 +4675,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4675,6 +4675,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text <Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->doc+=yytext; current->doc+=yytext;
} }
/*
<SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { <SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1]; QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue) if (pValue)
...@@ -4686,6 +4687,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4686,6 +4687,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
} }
} }
*/
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}{CMD}[a-z_A-Z][a-z_A-Z0-9]* { /* escaped command */ <Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}{CMD}[a-z_A-Z][a-z_A-Z0-9]* { /* escaped command */
if (YY_START==CopyArgComment) if (YY_START==CopyArgComment)
fullArgString+=yytext; fullArgString+=yytext;
...@@ -4731,25 +4733,25 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4731,25 +4733,25 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
} }
if (!handled) if (!handled)
{ {
QCString *pValue=Doxygen::aliasDict[yytext+1]; //QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue) //if (pValue)
{ //{
int i,l=pValue->length(); // int i,l=pValue->length();
char c; // char c;
for (i=l-1;i>=0;i--) // for (i=l-1;i>=0;i--)
{ // {
c=pValue->at(i); // c=pValue->at(i);
unput(c); // unput(c);
if (c=='\n') yyLineNr--; // if (c=='\n') yyLineNr--;
} // }
} //}
else //else
{ //{
if (YY_START==CopyArgComment) if (YY_START==CopyArgComment)
fullArgString+=yytext; fullArgString+=yytext;
else else
current->doc+=yytext; current->doc+=yytext;
} //}
} }
} }
<JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text <JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
...@@ -4763,22 +4765,22 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] ...@@ -4763,22 +4765,22 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->brief+=yytext; current->brief+=yytext;
} }
<JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine,CopyArgCommentLine>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { <JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine,CopyArgCommentLine>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1]; //QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue) //if (pValue)
{ //{
int i,l=pValue->length(); // int i,l=pValue->length();
for (i=l-1;i>=0;i--) // for (i=l-1;i>=0;i--)
{ // {
unput(pValue->at(i)); // unput(pValue->at(i));
} // }
} //}
else //else
{ //{
if (YY_START==CopyArgCommentLine) if (YY_START==CopyArgCommentLine)
fullArgString+=yytext; fullArgString+=yytext;
else else
current->brief+=yytext; current->brief+=yytext;
} //}
} }
<DefLineDoc,LineDoc,ClassDoc,PageDoc,ExampleDoc,Doc>"/*"|"//" { current->doc += yytext; } <DefLineDoc,LineDoc,ClassDoc,PageDoc,ExampleDoc,Doc>"/*"|"//" { current->doc += yytext; }
<SkipCxxComment>.*/\n { <SkipCxxComment>.*/\n {
......
...@@ -64,7 +64,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish ...@@ -64,7 +64,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish
} }
}; };
class TranslatorJapanese : public TranslatorAdapter_1_3 class TranslatorJapanese : public TranslatorEnglish
{ {
private: private:
/*! The decode() can change euc into sjis */ /*! The decode() can change euc into sjis */
...@@ -1394,7 +1394,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3 ...@@ -1394,7 +1394,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3
*/ */
virtual QCString trDeprecatedList() virtual QCString trDeprecatedList()
{ {
return "非推奨一覧"; return decode("非推奨一覧");
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1406,13 +1406,68 @@ class TranslatorJapanese : public TranslatorAdapter_1_3 ...@@ -1406,13 +1406,68 @@ class TranslatorJapanese : public TranslatorAdapter_1_3
*/ */
virtual QCString trEvents() virtual QCString trEvents()
{ {
return "イベント"; return decode("イベント");
} }
/*! Header used for the documentation section of a class' events. */ /*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation() virtual QCString trEventDocumentation()
{ {
return "イベントの解説"; return decode("イベントの解説");
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return decode("パッケージ内の型定義");
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return decode("関数");
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return decode("スタティック関数");
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return decode("変数");
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return decode("スタティック変数");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual QCString trAll()
{
return decode("全て");
}
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
return decode("関数の呼び出しグラフ:");
}
}; };
#endif #endif
/****************************************************************************** /******************************************************************************
* *
* *
* *
* Copyright (C) 1997-2003 by Dimitri van Heesch. * Copyright (C) 1997-2003 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software * granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty. * for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details. * See the GNU General Public License for more details.
* *
* Documents produced by Doxygen are derivative works derived from the * Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license. * input used in their production; they are not affected by this license.
* *
* The translation into Chinesetraditional was provided by
* Daniel YC Lin (daniel@twpda.com) since v1.2.16
*/ */
#ifndef TRANSLATOR_TW_H #ifndef TRANSLATOR_TW_H
...@@ -44,19 +46,19 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -44,19 +46,19 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
public: public:
// --- Language control methods ------------------- // --- Language control methods -------------------
/*! Used for identification of the language. The identification /*! Used for identification of the language. The identification
* should not be translated. It should be replaced by the name * should not be translated. It should be replaced by the name
* of the language in English using lower-case characters only * of the language in English using lower-case characters only
* (e.g. "czech", "japanese", "russian", etc.). It should be equal to * (e.g. "czech", "japanese", "russian", etc.). It should be equal to
* the identification used in language.cpp. * the identification used in language.cpp.
*/ */
virtual QCString idLanguage() virtual QCString idLanguage()
{ return "chinese-traditional"; } { return "chinese-traditional"; }
/*! Used to get the LaTeX command(s) for the language support. /*! Used to get the LaTeX command(s) for the language support.
* This method should return string with commands that switch * This method should return string with commands that switch
* LaTeX to the desired language. For example * LaTeX to the desired language. For example
* <pre>"\\usepackage[german]{babel}\n" * <pre>"\\usepackage[german]{babel}\n"
* </pre> * </pre>
* or * or
...@@ -64,7 +66,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -64,7 +66,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
* "\\usepackage[latin2]{inputenc}\n" * "\\usepackage[latin2]{inputenc}\n"
* "\\usepackage[T1]{fontenc}\n" * "\\usepackage[T1]{fontenc}\n"
* </pre> * </pre>
* *
* The English LaTeX does not use such commands. Because of this * The English LaTeX does not use such commands. Because of this
* the empty string is returned in this implementation. * the empty string is returned in this implementation.
*/ */
...@@ -96,30 +98,30 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -96,30 +98,30 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! header that is put before the list of typedefs. */ /*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation() virtual QCString trMemberTypedefDocumentation()
{ return "型態定義成員說明文件"; } { return "型態定義成員說明文件"; }
/*! header that is put before the list of enumerations. */ /*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation() virtual QCString trMemberEnumerationDocumentation()
{ return "列舉型態成員說明文件"; } { return "列舉型態成員說明文件"; }
/*! header that is put before the list of member functions. */ /*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation() virtual QCString trMemberFunctionDocumentation()
{ return "函式成員說明文件"; } { return "函式成員說明文件"; }
/*! header that is put before the list of member attributes. */ /*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation() virtual QCString trMemberDataDocumentation()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "欄位說明文件"; return "欄位說明文件";
} }
else else
{ {
return "資料成員說明文件"; return "資料成員說明文件";
} }
} }
/*! this is the text of a link put after brief descriptions. */ /*! this is the text of a link put after brief descriptions. */
virtual QCString trMore() virtual QCString trMore()
{ return "更多..."; } { return "更多..."; }
/*! put in the class documentation */ /*! put in the class documentation */
...@@ -137,54 +139,54 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -137,54 +139,54 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! this is the remainder of the sentence after the class name */ /*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers() virtual QCString trIncludingInheritedMembers()
{ return ", 包含所有繼承的成員"; } { return ", 包含所有繼承的成員"; }
/*! this is put at the author sections at the bottom of man pages. /*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name. * parameter s is name of the project name.
*/ */
virtual QCString trGeneratedAutomatically(const char *s) virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="本文件由Doxygen"; { QCString result="本文件由Doxygen";
if (s) result+=(QCString)" 自 "+s; if (s) result+=(QCString)" 自 "+s;
result+=" 的原始碼中自動產生."; result+=" 的原始碼中自動產生.";
return result; return result;
} }
/*! put after an enum name in the list of all members */ /*! put after an enum name in the list of all members */
virtual QCString trEnumName() virtual QCString trEnumName()
{ return "列舉型態名稱"; } { return "列舉型態名稱"; }
/*! put after an enum value in the list of all members */ /*! put after an enum value in the list of all members */
virtual QCString trEnumValue() virtual QCString trEnumValue()
{ return "列舉值"; } { return "列舉值"; }
/*! put after an undocumented member in the list of all members */ /*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn() virtual QCString trDefinedIn()
{ return "被定義於"; } { return "被定義於"; }
// quick reference sections // quick reference sections
/*! This is put above each page as a link to the list of all groups of /*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \\group command). * compounds or files (see the \\group command).
*/ */
virtual QCString trModules() virtual QCString trModules()
{ return "模組"; } { return "模組"; }
/*! This is put above each page as a link to the class hierarchy */ /*! This is put above each page as a link to the class hierarchy */
virtual QCString trClassHierarchy() virtual QCString trClassHierarchy()
{ return "類別階層"; } { return "類別階層"; }
/*! This is put above each page as a link to the list of annotated classes */ /*! This is put above each page as a link to the list of annotated classes */
virtual QCString trCompoundList() virtual QCString trCompoundList()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "資料結構"; return "資料結構";
} }
else else
{ {
return "複合列表"; return "複合列表";
} }
} }
/*! This is put above each page as a link to the list of documented files */ /*! This is put above each page as a link to the list of documented files */
virtual QCString trFileList() virtual QCString trFileList()
{ return "檔案列表"; } { return "檔案列表"; }
...@@ -195,27 +197,27 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -195,27 +197,27 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! 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()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "資料欄位"; return "資料欄位";
} }
else else
{ {
return "複合成員"; return "複合成員";
} }
} }
/*! This is put above each page as a link to all members of files. */ /*! This is put above each page as a link to all members of files. */
virtual QCString trFileMembers() virtual QCString trFileMembers()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "全域資料"; return "全域資料";
} }
else else
{ {
return "檔案成員"; return "檔案成員";
} }
} }
...@@ -247,16 +249,16 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -247,16 +249,16 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! This is an introduction to the annotated compound list. */ /*! This is an introduction to the annotated compound list. */
virtual QCString trCompoundListDescription() virtual QCString trCompoundListDescription()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "這是附帶簡略說明的資料結構:"; return "這是附帶簡略說明的資料結構:";
} }
else else
{ {
return "這是附帶簡略說明的類別,結構," return "這是附帶簡略說明的類別,結構,"
"聯合型態(unions)及介面(interfaces):"; "聯合型態(unions)及介面(interfaces):";
} }
} }
...@@ -277,7 +279,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -277,7 +279,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
result+="類別成員"; result+="類別成員";
} }
result+=", 並且帶有連結至"; result+=", 並且帶有連結至";
if (!extractAll) if (!extractAll)
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
...@@ -288,7 +290,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -288,7 +290,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
result+="每個成員的類別說明文件:"; result+="每個成員的類別說明文件:";
} }
} }
else else
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
...@@ -307,7 +309,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -307,7 +309,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
QCString result="這是全部"; QCString result="這是全部";
if (!extractAll) result+="文件化的"; if (!extractAll) result+="文件化的";
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
result+="函式,變數,定義,列舉,及型態定義"; result+="函式,變數,定義,列舉,及型態定義";
...@@ -317,9 +319,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -317,9 +319,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
result+="檔案成員"; result+="檔案成員";
} }
result+=",並且帶有連結至"; result+=",並且帶有連結至";
if (extractAll) if (extractAll)
result+="這些檔案所屬:"; result+="這些檔案所屬:";
else else
result+="說明文件:"; result+="說明文件:";
return result; return result;
} }
...@@ -341,49 +343,49 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -341,49 +343,49 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ return "所有模組列表:"; } { return "所有模組列表:"; }
/*! This sentences is used in the annotated class/file lists if no brief /*! This sentences is used in the annotated class/file lists if no brief
* description is given. * description is given.
*/ */
virtual QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
{ return "沒有可用的說明描述"; } { return "沒有可用的說明描述"; }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */ /*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation() virtual QCString trDocumentation()
{ return "說明文件"; } { return "說明文件"; }
/*! 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
* index of all groups. * index of all groups.
*/ */
virtual QCString trModuleIndex() virtual QCString trModuleIndex()
{ return "模組索引"; } { return "模組索引"; }
/*! 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
* class hierarchy. * class hierarchy.
*/ */
virtual QCString trHierarchicalIndex() virtual QCString trHierarchicalIndex()
{ return "階層索引"; } { return "階層索引"; }
/*! 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
* annotated compound index. * annotated compound index.
*/ */
virtual QCString trCompoundIndex() virtual QCString trCompoundIndex()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "資料結構索引"; return "資料結構索引";
} }
else else
{ {
return "複合索引"; return "複合索引";
} }
} }
/*! 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
* list of all files. * list of all files.
*/ */
virtual QCString trFileIndex() virtual QCString trFileIndex()
{ return "檔案索引"; } { return "檔案索引"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
...@@ -396,14 +398,14 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -396,14 +398,14 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
* the documentation of all classes, structs and unions. * the documentation of all classes, structs and unions.
*/ */
virtual QCString trClassDocumentation() virtual QCString trClassDocumentation()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "資料結構說明文件"; return "資料結構說明文件";
} }
else else
{ {
return "類別說明文件"; return "類別說明文件";
} }
} }
...@@ -428,111 +430,111 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -428,111 +430,111 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! This is used in LaTeX as the title of the document */ /*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual() virtual QCString trReferenceManual()
{ return "參考手冊"; } { return "參考手冊"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of defines * list of defines
*/ */
virtual QCString trDefines() virtual QCString trDefines()
{ return "定義"; } { return "定義"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of function prototypes * list of function prototypes
*/ */
virtual QCString trFuncProtos() virtual QCString trFuncProtos()
{ return "函式原型"; } { return "函式原型"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of typedefs * list of typedefs
*/ */
virtual QCString trTypedefs() virtual QCString trTypedefs()
{ return "型態定義"; } { return "型態定義"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of enumerations * list of enumerations
*/ */
virtual QCString trEnumerations() virtual QCString trEnumerations()
{ return "列舉型態"; } { return "列舉型態"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) functions * list of (global) functions
*/ */
virtual QCString trFunctions() virtual QCString trFunctions()
{ return "函式"; } { return "函式"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
virtual QCString trVariables() virtual QCString trVariables()
{ return "變數"; } { return "變數"; }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
virtual QCString trEnumerationValues() virtual QCString trEnumerationValues()
{ return "列舉值"; } { return "列舉值"; }
/*! This is used in the documentation of a file before the list of /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
virtual QCString trDefineDocumentation() virtual QCString trDefineDocumentation()
{ return "定義巨集說明文件"; } { return "定義巨集說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes * of documentation blocks for function prototypes
*/ */
virtual QCString trFunctionPrototypeDocumentation() virtual QCString trFunctionPrototypeDocumentation()
{ return "函式原型說明文件"; } { return "函式原型說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs * of documentation blocks for typedefs
*/ */
virtual QCString trTypedefDocumentation() virtual QCString trTypedefDocumentation()
{ return "型態定義說明文件"; } { return "型態定義說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types * of documentation blocks for enumeration types
*/ */
virtual QCString trEnumerationTypeDocumentation() virtual QCString trEnumerationTypeDocumentation()
{ return "列舉型態說明文件"; } { return "列舉型態說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values * of documentation blocks for enumeration values
*/ */
virtual QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
{ return "列舉值說明文件"; } { return "列舉值說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions * of documentation blocks for functions
*/ */
virtual QCString trFunctionDocumentation() virtual QCString trFunctionDocumentation()
{ return "函式說明文件"; } { return "函式說明文件"; }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables * of documentation blocks for variables
*/ */
virtual QCString trVariableDocumentation() virtual QCString trVariableDocumentation()
{ return "變數說明文件"; } { return "變數說明文件"; }
/*! This is used in the documentation of a file/namespace/group before /*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds * the list of links to documented compounds
*/ */
virtual QCString trCompounds() virtual QCString trCompounds()
{ {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{ {
return "資料結構"; return "資料結構";
} }
else else
{ {
return "複合項目"; return "複合項目";
} }
} }
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
virtual QCString trGeneratedAt(const char *date,const char *projName) virtual QCString trGeneratedAt(const char *date,const char *projName)
{ {
QCString result=(QCString)"產生日期:"+date; QCString result=(QCString)"產生日期:"+date;
if (projName) result+=(QCString)", 專案:"+projName; if (projName) result+=(QCString)", 專案:"+projName;
result+=(QCString)", 產生器:"; result+=(QCString)", 產生器:";
...@@ -550,7 +552,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -550,7 +552,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return (QCString)"類別"+clName+"的繼承圖:"; return (QCString)"類別"+clName+"的繼承圖:";
} }
/*! this text is generated when the \\internal command is used. */ /*! this text is generated when the \\internal command is used. */
virtual QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return "僅供內部使用."; } { return "僅供內部使用."; }
...@@ -590,7 +592,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -590,7 +592,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! this text is generated when the \\exception command is used. */ /*! this text is generated when the \\exception command is used. */
virtual QCString trExceptions() virtual QCString trExceptions()
{ return "例外"; } { return "例外"; }
/*! this text is used in the title page of a LaTeX document. */ /*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy() virtual QCString trGeneratedBy()
{ return "產生者:"; } { return "產生者:"; }
...@@ -598,7 +600,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -598,7 +600,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990307 // new since 0.49-990307
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */ /*! used as the title of page containing all the index of all namespaces. */
virtual QCString trNamespaceList() virtual QCString trNamespaceList()
{ return "命名空間(name space)列表"; } { return "命名空間(name space)列表"; }
...@@ -617,17 +619,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -617,17 +619,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
*/ */
virtual QCString trFriends() virtual QCString trFriends()
{ return "類別朋友(Friends)"; } { return "類別朋友(Friends)"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990405 // new since 0.49-990405
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used in the class documentation as a header before the list of all /*! used in the class documentation as a header before the list of all
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "類別朋友及相關函式說明文件"; } { return "類別朋友及相關函式說明文件"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -655,7 +657,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -655,7 +657,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
virtual QCString trFileReference(const char *fileName) virtual QCString trFileReference(const char *fileName)
{ {
QCString result=fileName; QCString result=fileName;
result+=" 檔案參考文件"; result+=" 檔案參考文件";
return result; return result;
} }
...@@ -666,7 +668,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -666,7 +668,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
result+=" 命名空間(Namespace)參考文件"; result+=" 命名空間(Namespace)參考文件";
return result; return result;
} }
virtual QCString trPublicMembers() virtual QCString trPublicMembers()
{ return "公開方法(Public Methods)"; } { return "公開方法(Public Methods)"; }
virtual QCString trPublicSlots() virtual QCString trPublicSlots()
...@@ -687,7 +689,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -687,7 +689,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ return "私有插槽(Private Slots)"; } { return "私有插槽(Private Slots)"; }
virtual QCString trStaticPrivateMembers() virtual QCString trStaticPrivateMembers()
{ return "靜態私有方法(Static Private Methods)"; } { return "靜態私有方法(Static Private Methods)"; }
/*! this function is used to produce a comma-separated list of items. /*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put. * use generateMarker(i) to indicate where item i should be put.
*/ */
...@@ -696,23 +698,23 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -696,23 +698,23 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
QCString result; QCString result;
int i; int i;
// the inherits list contain `numEntries' classes // the inherits list contain `numEntries' classes
for (i=0;i<numEntries;i++) for (i=0;i<numEntries;i++)
{ {
// use generateMarker to generate placeholders for the class links! // use generateMarker to generate placeholders for the class links!
result+=generateMarker(i); // generate marker for entry i in the list result+=generateMarker(i); // generate marker for entry i in the list
// (order is left to right) // (order is left to right)
if (i!=numEntries-1) // not the last entry, so we need a separator if (i!=numEntries-1) // not the last entry, so we need a separator
{ {
if (i<numEntries-2) // not the fore last entry if (i<numEntries-2) // not the fore last entry
result+=", "; result+=", ";
else // the fore last entry else // the fore last entry
result+=", "; result+=", ";
} }
} }
return result; return result;
} }
/*! used in class documentation to produce a list of base classes, /*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled. * if class diagrams are disabled.
*/ */
...@@ -729,7 +731,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -729,7 +731,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
return " "+trWriteList(numEntries)+"繼承."; return " "+trWriteList(numEntries)+"繼承.";
} }
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are hidden by this one. * members that are hidden by this one.
*/ */
virtual QCString trReimplementedFromList(int numEntries) virtual QCString trReimplementedFromList(int numEntries)
...@@ -751,17 +753,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -751,17 +753,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! This is an introduction to the page with all namespace members */ /*! This is an introduction to the page with all namespace members */
virtual QCString trNamespaceMemberDescription(bool extractAll) virtual QCString trNamespaceMemberDescription(bool extractAll)
{ {
QCString result="此處列表為所有 "; QCString result="此處列表為所有 ";
if (!extractAll) result+="文件化的 "; if (!extractAll) result+="文件化的 ";
result+="命名空間(namespace)成員,並且附帶連結至 "; result+="命名空間(namespace)成員,並且附帶連結至 ";
if (extractAll) if (extractAll)
result+="每個成員的說明文件:"; result+="每個成員的說明文件:";
else else
result+="該命名空間所屬之處:"; result+="該命名空間所屬之處:";
return result; return result;
} }
/*! 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
* index of all namespaces. * index of all namespaces.
*/ */
virtual QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
...@@ -827,7 +829,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -827,7 +829,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
virtual QCString trMainPage() virtual QCString trMainPage()
{ return "主頁面"; } { return "主頁面"; }
/*! This is used in references to page that are put in the LaTeX /*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page. * documentation. It should be an abbreviation of the word page.
*/ */
virtual QCString trPageAbbreviation() virtual QCString trPageAbbreviation()
...@@ -876,7 +878,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -876,7 +878,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! header that is put before the list of constructor/destructors. */ /*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation() virtual QCString trConstructorDocumentation()
{ {
return "建構子與解構子說明文件"; return "建構子與解構子說明文件";
} }
/*! Used in the file documentation to point to the corresponding sources. */ /*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode() virtual QCString trGotoSourceCode()
...@@ -933,7 +935,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -933,7 +935,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.1.0 // new since 1.1.0
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
virtual QCString trNote() virtual QCString trNote()
{ {
return ""; return "";
...@@ -1022,7 +1024,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1022,7 +1024,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return ""; return "";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.1.5 // new since 1.1.5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -1032,12 +1034,12 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1032,12 +1034,12 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return "圖示"; return "圖示";
} }
/*! page explaining how the dot graph's should be interpreted /*! page explaining how the dot graph's should be interpreted
* The %A in the text below are to prevent link to classes called "A". * The %A in the text below are to prevent link to classes called "A".
*/ */
virtual QCString trLegendDocs() virtual QCString trLegendDocs()
{ {
return return
"本頁解釋如何解譯這些由doxygen所產生的圖示 " "本頁解釋如何解譯這些由doxygen所產生的圖示 "
".<p>\n" ".<p>\n"
"請看下面範例:\n" "請看下面範例:\n"
...@@ -1102,11 +1104,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1102,11 +1104,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return "圖示"; return "圖示";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.0 // new since 1.2.0
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */ /*! Used as a marker that is put before a test item */
virtual QCString trTest() virtual QCString trTest()
{ {
...@@ -1194,11 +1196,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1194,11 +1196,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return "巨集內容:"; return "巨集內容:";
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.2.5 // new since 1.2.5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a \\bug item */ /*! Used as a marker that is put before a \\bug item */
virtual QCString trBug() virtual QCString trBug()
{ {
...@@ -1214,9 +1216,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1214,9 +1216,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
// new since 1.2.6 // new since 1.2.6
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as ansicpg for RTF file /*! Used as ansicpg for RTF file
* *
* The following table shows the correlation of Charset name, Charset Value and * The following table shows the correlation of Charset name, Charset Value and
* <pre> * <pre>
* Codepage number: * Codepage number:
* Charset Name Charset Value(hex) Codepage number * Charset Name Charset Value(hex) Codepage number
...@@ -1237,15 +1239,15 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1237,15 +1239,15 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
* GB2313_CHARSET 134 (x86) 936 * GB2313_CHARSET 134 (x86) 936
* CHINESEBIG5_CHARSET 136 (x88) 950 * CHINESEBIG5_CHARSET 136 (x88) 950
* </pre> * </pre>
* *
*/ */
virtual QCString trRTFansicp() virtual QCString trRTFansicp()
{ {
return "950"; return "950";
} }
/*! Used as ansicpg for RTF fcharset
/*! Used as ansicpg for RTF fcharset
* \see trRTFansicp() for a table of possible values. * \see trRTFansicp() for a table of possible values.
*/ */
virtual QCString trRTFCharSet() virtual QCString trRTFCharSet()
...@@ -1258,76 +1260,76 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1258,76 +1260,76 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
{ {
return "索引"; return "索引";
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trClass(bool /*first_capital*/, bool /*singular*/) virtual QCString trClass(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("類別"); return QCString("類別");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trFile(bool /*first_capital*/, bool /*singular*/) virtual QCString trFile(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("檔案"); return QCString("檔案");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trNamespace(bool /*first_capital*/, bool /*singular*/) virtual QCString trNamespace(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("命名空間"); return QCString("命名空間");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trGroup(bool /*first_capital*/, bool /*singular*/) virtual QCString trGroup(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("群組"); return QCString("群組");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trPage(bool /*first_capital*/, bool /*singular*/) virtual QCString trPage(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("頁面"); return QCString("頁面");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trMember(bool /*first_capital*/, bool /*singular*/) virtual QCString trMember(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("成員"); return QCString("成員");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trField(bool /*first_capital*/, bool /*singular*/) virtual QCString trField(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("欄位"); return QCString("欄位");
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
* be followed by a single name or by a list of names * be followed by a single name or by a list of names
* of the category. * of the category.
*/ */
virtual QCString trGlobal(bool /*first_capital*/, bool /*singular*/) virtual QCString trGlobal(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("全域"); return QCString("全域");
} }
...@@ -1338,7 +1340,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1338,7 +1340,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
/*! This text is generated when the \\author command is used and /*! This text is generated when the \\author command is used and
* for the author section in man pages. */ * for the author section in man pages. */
virtual QCString trAuthor(bool /*first_capital*/, bool /*singular*/) virtual QCString trAuthor(bool /*first_capital*/, bool /*singular*/)
{ {
return QCString("作者"); return QCString("作者");
} }
...@@ -1357,7 +1359,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1357,7 +1359,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
// new since 1.2.13 // new since 1.2.13
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are implemented by this one. * members that are implemented by this one.
*/ */
virtual QCString trImplementedFromList(int numEntries) virtual QCString trImplementedFromList(int numEntries)
...@@ -1373,6 +1375,103 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ...@@ -1373,6 +1375,103 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
return "實作於 "+trWriteList(numEntries)+"."; return "實作於 "+trWriteList(numEntries)+".";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.16
//////////////////////////////////////////////////////////////////////////
/*! used in RTF documentation as a heading for the Table
* of Contents.
*/
virtual QCString trRTFTableOfContents()
{
return "目錄";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual QCString trDeprecatedList()
{
return "過時項目(Deprecated) 列表";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.18
//////////////////////////////////////////////////////////////////////////
/*! Used as a header for declaration section of the events found in
* a C# program
*/
virtual QCString trEvents()
{
return "Events";
}
/*! Header used for the documentation section of a class' events. */
virtual QCString trEventDocumentation()
{
return "Event 文件";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a heading for a list of Java class types with package scope.
*/
virtual QCString trPackageTypes()
{
return "Package 型別";
}
/*! Used as a heading for a list of Java class functions with package
* scope.
*/
virtual QCString trPackageMembers()
{
return "Package 函數列表";
}
/*! Used as a heading for a list of static Java class functions with
* package scope.
*/
virtual QCString trStaticPackageMembers()
{
return "靜態 Package 函數列表";
}
/*! Used as a heading for a list of Java class variables with package
* scope.
*/
virtual QCString trPackageAttribs()
{
return "Package 屬性";
}
/*! Used as a heading for a list of static Java class variables with
* package scope.
*/
virtual QCString trStaticPackageAttribs()
{
return "靜態 Package 屬性";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual QCString trAll()
{
return "全部";
}
/*! Put in front of the call graph for a function. */
virtual QCString trCallGraph()
{
return "這是此函數的引用函數圖:";
}
}; };
#endif #endif
...@@ -48,7 +48,7 @@ struct TagInfo; ...@@ -48,7 +48,7 @@ struct TagInfo;
class MemberNameInfoSDict; class MemberNameInfoSDict;
struct ListItemInfo; struct ListItemInfo;
class PageDef; class PageDef;
class SectionInfo; struct SectionInfo;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
......
...@@ -53,6 +53,12 @@ static const char index_xsd[] = ...@@ -53,6 +53,12 @@ static const char index_xsd[] =
#include "index_xsd.h" #include "index_xsd.h"
; ;
//------------------
//
static const char compound_xsd[] =
#include "compound_xsd.h"
;
//------------------ //------------------
...@@ -82,22 +88,28 @@ inline void writeXMLCodeString(QTextStream &t,const char *s) ...@@ -82,22 +88,28 @@ inline void writeXMLCodeString(QTextStream &t,const char *s)
static void writeXMLHeader(QTextStream &t) static void writeXMLHeader(QTextStream &t)
{ {
QCString dtdName = Config_getString("XML_DTD"); //QCString dtdName = Config_getString("XML_DTD");
QCString schemaName = Config_getString("XML_SCHEMA"); //QCString schemaName = Config_getString("XML_SCHEMA");
//t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
// << "' standalone='";
//if (dtdName.isEmpty() && schemaName.isEmpty()) t << "yes"; else t << "no";
//t << "'?>" << endl;
//if (!dtdName.isEmpty())
//{
// t << "<!DOCTYPE doxygen SYSTEM \"doxygen.dtd\">" << endl;
//}
//t << "<doxygen ";
//if (!schemaName.isEmpty())
//{
// t << "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
// t << "xsi:noNamespaceSchemaLocation=\"doxygen.xsd\" ";
//}
//t << "version=\"" << versionString << "\">" << endl;
t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset() t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
<< "' standalone='"; << "' standalone='no'?>" << endl;;
if (dtdName.isEmpty() && schemaName.isEmpty()) t << "yes"; else t << "no"; t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
t << "'?>" << endl; t << "xsi:noNamespaceSchemaLocation=\"compound.xsd\" ";
if (!dtdName.isEmpty())
{
t << "<!DOCTYPE doxygen SYSTEM \"doxygen.dtd\">" << endl;
}
t << "<doxygen ";
if (!schemaName.isEmpty())
{
t << "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
t << "xsi:noNamespaceSchemaLocation=\"doxygen.xsd\" ";
}
t << "version=\"" << versionString << "\">" << endl; t << "version=\"" << versionString << "\">" << endl;
} }
...@@ -422,7 +434,7 @@ static void writeMemberReference(QTextStream &t,Definition *def,MemberDef *rmd,c ...@@ -422,7 +434,7 @@ static void writeMemberReference(QTextStream &t,Definition *def,MemberDef *rmd,c
{ {
name.prepend(scope+"::"); name.prepend(scope+"::");
} }
t << " <" << tagName << " id=\""; t << " <" << tagName << " refid=\"";
t << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\""; t << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\"";
if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef()) if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
{ {
...@@ -529,7 +541,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -529,7 +541,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << "\" virt=\""; t << "\" virt=\"";
switch (md->virtualness()) switch (md->virtualness())
{ {
case Normal: t << "normal"; break; case Normal: t << "non-virtual"; break;
case Virtual: t << "virtual"; break; case Virtual: t << "virtual"; break;
case Pure: t << "pure-virtual"; break; case Pure: t << "pure-virtual"; break;
default: ASSERT(0); default: ASSERT(0);
...@@ -544,8 +556,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -544,8 +556,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << " volatile=\""; t << " volatile=\"";
if (al && al->volatileSpecifier) t << "yes"; else t << "no"; if (al && al->volatileSpecifier) t << "yes"; else t << "no";
t << "\" mutable=\""; t << "\" mutable=\"";
if (md->isMutable()) t << "yes"; else t << "no"; if (md->isMutable()) t << "yes"; else t << "no";
t << "\""; t << "\"";
} }
...@@ -572,9 +584,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -572,9 +584,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
MemberDef *rmd = md->reimplements(); MemberDef *rmd = md->reimplements();
if (rmd) if (rmd)
{ {
t << " <reimplements id=\"" t << " <reimplements refid=\""
<< rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">" << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">"
<< convertToXML(rmd->name()) << "</reimplements>"; << convertToXML(rmd->name()) << "</reimplements>" << endl;
} }
MemberList *rbml = md->reimplementedBy(); MemberList *rbml = md->reimplementedBy();
if (rbml) if (rbml)
...@@ -582,9 +594,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -582,9 +594,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
MemberListIterator mli(*rbml); MemberListIterator mli(*rbml);
for (mli.toFirst();(rmd=mli.current());++mli) for (mli.toFirst();(rmd=mli.current());++mli)
{ {
t << " <reimplementedby id=\"" t << " <reimplementedby refid=\""
<< rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">" << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">"
<< convertToXML(rmd->name()) << "</reimplementedby>"; << convertToXML(rmd->name()) << "</reimplementedby>" << endl;
} }
} }
...@@ -919,18 +931,6 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -919,18 +931,6 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
} }
} }
ClassSDict *cl = cd->getInnerClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
IncludeInfo *ii=cd->includeInfo(); IncludeInfo *ii=cd->includeInfo();
if (ii) if (ii)
{ {
...@@ -941,7 +941,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -941,7 +941,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
t << " <includes"; t << " <includes";
if (ii->fileDef && !ii->fileDef->isReference()) // TODO: support external references if (ii->fileDef && !ii->fileDef->isReference()) // TODO: support external references
{ {
t << " id=\"" << ii->fileDef->getOutputFileBase() << "\""; t << " refid=\"" << ii->fileDef->getOutputFileBase() << "\"";
} }
t << " local=\"" << (ii->local ? "yes" : "no") << "\">"; t << " local=\"" << (ii->local ? "yes" : "no") << "\">";
t << nm; t << nm;
...@@ -949,8 +949,20 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -949,8 +949,20 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
} }
} }
ClassSDict *cl = cd->getInnerClasses();
if (cl)
{
ClassSDict::Iterator cli(*cl);
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
t << " <innerclass refid=\"" << cd->getOutputFileBase()
<< "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
}
}
writeTemplateList(cd,t); writeTemplateList(cd,t);
writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
...@@ -1014,6 +1026,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1014,6 +1026,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
<< cd->getEndBodyLine() << "\""; << cd->getEndBodyLine() << "\"";
} }
t << "/>" << endl; t << "/>" << endl;
writeListOfAllMembers(cd,t);
t << " </compounddef>" << endl; t << " </compounddef>" << endl;
t << "</doxygen>" << endl; t << "</doxygen>" << endl;
...@@ -1153,7 +1166,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) ...@@ -1153,7 +1166,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
t << " <includes"; t << " <includes";
if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references
{ {
t << " id=\"" << inc->fileDef->getOutputFileBase() << "\""; t << " refid=\"" << inc->fileDef->getOutputFileBase() << "\"";
} }
t << " local=\"" << (inc->local ? "yes" : "no") << "\">"; t << " local=\"" << (inc->local ? "yes" : "no") << "\">";
t << inc->includeName; t << inc->includeName;
...@@ -1166,7 +1179,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) ...@@ -1166,7 +1179,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
t << " <includedby"; t << " <includedby";
if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references if (inc->fileDef && !inc->fileDef->isReference()) // TODO: support external references
{ {
t << " id=\"" << inc->fileDef->getOutputFileBase() << "\""; t << " refid=\"" << inc->fileDef->getOutputFileBase() << "\"";
} }
t << " local=\"" << (inc->local ? "yes" : "no") << "\">"; t << " local=\"" << (inc->local ? "yes" : "no") << "\">";
t << inc->includeName; t << inc->includeName;
...@@ -1466,6 +1479,16 @@ void generateXML() ...@@ -1466,6 +1479,16 @@ void generateXML()
f.writeBlock(index_xsd,strlen(index_xsd)); f.writeBlock(index_xsd,strlen(index_xsd));
f.close(); f.close();
fileName=outputDirectory+"/compound.xsd";
f.setName(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
f.writeBlock(compound_xsd,strlen(compound_xsd));
f.close();
fileName=outputDirectory+"/index.xml"; fileName=outputDirectory+"/index.xml";
f.setName(fileName); f.setName(fileName);
if (!f.open(IO_WriteOnly)) if (!f.open(IO_WriteOnly))
...@@ -1479,7 +1502,7 @@ void generateXML() ...@@ -1479,7 +1502,7 @@ void generateXML()
// write index header // write index header
t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset() t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset()
<< "' standalone='no'?>" << endl;; << "' standalone='no'?>" << endl;;
t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; t << "<doxygenindex xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" "; t << "xsi:noNamespaceSchemaLocation=\"index.xsd\" ";
t << "version=\"" << versionString << "\">" << endl; t << "version=\"" << versionString << "\">" << endl;
...@@ -1487,12 +1510,14 @@ void generateXML() ...@@ -1487,12 +1510,14 @@ void generateXML()
ClassDef *cd; ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli) for (cli.toFirst();(cd=cli.current());++cli)
{ {
msg("Generating XML output for class %s\n",cd->name().data());
generateXMLForClass(cd,t); generateXMLForClass(cd,t);
} }
NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceSDict::Iterator nli(Doxygen::namespaceSDict);
NamespaceDef *nd; NamespaceDef *nd;
for (nli.toFirst();(nd=nli.current());++nli) for (nli.toFirst();(nd=nli.current());++nli)
{ {
msg("Generating XML output for namespace %s\n",nd->name().data());
generateXMLForNamespace(nd,t); generateXMLForNamespace(nd,t);
} }
FileNameListIterator fnli(Doxygen::inputNameList); FileNameListIterator fnli(Doxygen::inputNameList);
...@@ -1503,6 +1528,7 @@ void generateXML() ...@@ -1503,6 +1528,7 @@ void generateXML()
FileDef *fd; FileDef *fd;
for (;(fd=fni.current());++fni) for (;(fd=fni.current());++fni)
{ {
msg("Generating XML output for file %s\n",fd->name().data());
generateXMLForFile(fd,t); generateXMLForFile(fd,t);
} }
} }
...@@ -1510,21 +1536,24 @@ void generateXML() ...@@ -1510,21 +1536,24 @@ void generateXML()
GroupDef *gd; GroupDef *gd;
for (;(gd=gli.current());++gli) for (;(gd=gli.current());++gli)
{ {
msg("Generating XML output for group %s\n",gd->name().data());
generateXMLForGroup(gd,t); generateXMLForGroup(gd,t);
} }
PageSDict::Iterator pdi(*Doxygen::pageSDict); PageSDict::Iterator pdi(*Doxygen::pageSDict);
PageDef *pd=0; PageDef *pd=0;
for (pdi.toFirst();(pd=pdi.current());++pdi) for (pdi.toFirst();(pd=pdi.current());++pdi)
{ {
msg("Generating XML output for page %s\n",pd->name().data());
generateXMLForPage(pd,t); generateXMLForPage(pd,t);
} }
if (Doxygen::mainPage) if (Doxygen::mainPage)
{ {
msg("Generating XML output for the main page\n");
generateXMLForPage(Doxygen::mainPage,t); generateXMLForPage(Doxygen::mainPage,t);
} }
//t << " </compoundlist>" << endl; //t << " </compoundlist>" << endl;
t << "</doxygen>" << endl; t << "</doxygenindex>" << 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