diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2003-07-17 20:55:44 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2003-07-17 20:55:44 (GMT) |
commit | aee36e26c595fa69c0bdbba3c470ba8b7b153dac (patch) | |
tree | 8287e27d133bcae2c4cca5bbd409891c8618c52d /src | |
parent | 5444ff60bbf81c46841827e66e72f3148edde9ff (diff) | |
download | Doxygen-aee36e26c595fa69c0bdbba3c470ba8b7b153dac.zip Doxygen-aee36e26c595fa69c0bdbba3c470ba8b7b153dac.tar.gz Doxygen-aee36e26c595fa69c0bdbba3c470ba8b7b153dac.tar.bz2 |
Release-1.3.2-20030717
Diffstat (limited to 'src')
-rw-r--r-- | src/commentcnv.l | 109 | ||||
-rw-r--r-- | src/compound.xsd | 352 | ||||
-rw-r--r-- | src/compound_xsd.h | 352 | ||||
-rw-r--r-- | src/definition.h | 2 | ||||
-rw-r--r-- | src/doctokenizer.l | 49 | ||||
-rw-r--r-- | src/dot.cpp | 6 | ||||
-rw-r--r-- | src/doxygen.cpp | 14 | ||||
-rw-r--r-- | src/entry.h | 2 | ||||
-rw-r--r-- | src/index.xsd | 4 | ||||
-rw-r--r-- | src/index_xsd.h | 4 | ||||
-rw-r--r-- | src/memberdef.cpp | 16 | ||||
-rw-r--r-- | src/scanner.l | 64 | ||||
-rw-r--r-- | src/translator_jp.h | 63 | ||||
-rw-r--r-- | src/translator_tw.h | 367 | ||||
-rw-r--r-- | src/util.h | 2 | ||||
-rw-r--r-- | src/xmlgen.cpp | 111 |
16 files changed, 1237 insertions, 280 deletions
diff --git a/src/commentcnv.l b/src/commentcnv.l index 16ab83a..5df9adf 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -26,12 +26,15 @@ #include "debug.h" #include "message.h" #include "config.h" +#include "doxygen.h" static BufStr *g_inBuf; static BufStr *g_outBuf; static int g_inBufPos; static int g_col; static int g_blockHeadCol; +static bool g_mlBrief; +static int g_readLineCtx; static void replaceCommentMarker(const char *s,int len) { @@ -105,18 +108,7 @@ static int yyread(char *buf,int max_size) return bytesToCopy; } -#define replaceComment(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); \ - } \ +void replaceComment(int offset); %} @@ -127,6 +119,7 @@ static int yyread(char *buf,int max_size) %x SComment %x CComment %x Verbatim +%x ReadLine %% @@ -141,6 +134,7 @@ static int yyread(char *buf,int max_size) copyToOutput(yytext,yyleng); } <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; if (yytext[2]=='/') { @@ -152,14 +146,17 @@ static int yyread(char *buf,int max_size) BEGIN(SComment); } <Scan>"//##Documentation".*/\n { /* Start of Rational Rose ANSI C++ comment block */ + if (g_mlBrief) REJECT; int i=17; //=strlen("//##Documentation"); g_blockHeadCol=g_col; copyToOutput("/**",3); copyToOutput(yytext+i,yyleng-i); BEGIN(SComment); } -<Scan>"//".*\n { /* one line C++ comment */ +<Scan>"//"/.*\n { /* one line C++ comment */ copyToOutput(yytext,yyleng); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } <Scan>"/*" { /* start of a C comment */ copyToOutput(yytext,yyleng); @@ -198,7 +195,7 @@ static int yyread(char *buf,int max_size) <SkipString>\n { /* new line inside string (illegal for some compilers) */ copyToOutput(yytext,yyleng); } -<CComment>[^*\n]* { /* anything that is not a '*' */ +<CComment>[^\\@*\n]* { /* anything that is not a '*' */ copyToOutput(yytext,yyleng); } <CComment>"*"+[^*/\n]* { /* stars without slashes */ @@ -211,44 +208,116 @@ static int yyread(char *buf,int max_size) copyToOutput(yytext,yyleng); 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 { replaceComment(0); } <SComment>\n[ \t]*"///"[\/]*/\n { replaceComment(1); } -<SComment>^[ \t]*"///"[^\/\n].*/\n { +<SComment>^[ \t]*"///"[^\/\n]/.*\n { replaceComment(0); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } -<SComment>\n[ \t]*"///"[^\/\n].*/\n { +<SComment>\n[ \t]*"///"[^\/\n]/.*\n { replaceComment(1); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } -<SComment>^[ \t]*"//!".*/\n { +<SComment>^[ \t]*"//!"/.*\n { replaceComment(0); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } -<SComment>\n[ \t]*"//!".*/\n { +<SComment>\n[ \t]*"//!"/.*\n { replaceComment(1); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } -<SComment>^[ \t]*"//##".*/\n { +<SComment>^[ \t]*"//##"/.*\n { replaceComment(0); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } -<SComment>\n[ \t]*"//##".*/\n { +<SComment>\n[ \t]*"//##"/.*\n { replaceComment(1); + g_readLineCtx=YY_START; + BEGIN(ReadLine); } <SComment>\n { /* end of special comment */ copyToOutput(" */",3); copyToOutput(yytext,yyleng); 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) { g_inBuf = inBuf; g_outBuf = outBuf; g_inBufPos = 0; g_col = 0; + g_mlBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF"); BEGIN(Scan); yylex(); if (Debug::isFlagSet(Debug::CommentCnv)) diff --git a/src/compound.xsd b/src/compound.xsd index c528422..042f8f5 100644 --- a/src/compound.xsd +++ b/src/compound.xsd @@ -1,11 +1,361 @@ +<?xml version='1.0' encoding='utf-8' ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="doxygen" type="DoxygenType"/> + <!-- Complex types --> + <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:element name="codeline" type="codelineType" maxOccurs="unbounded" /> </xsd:sequence> - <xsd:attribute name="version" type="xsd:string" use="required"/> </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> diff --git a/src/compound_xsd.h b/src/compound_xsd.h index 74a35b9..f914e0e 100644 --- a/src/compound_xsd.h +++ b/src/compound_xsd.h @@ -1,11 +1,361 @@ +"<?xml version='1.0' encoding='utf-8' ?>\n" "<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" " <xsd:element name=\"doxygen\" type=\"DoxygenType\"/>\n" "\n" +" <!-- Complex types -->\n" +"\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:element name=\"codeline\" type=\"codelineType\" maxOccurs=\"unbounded\" />\n" " </xsd:sequence>\n" -" <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"required\"/>\n" " </xsd:complexType>\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" "\n" diff --git a/src/definition.h b/src/definition.h index 02518b9..f74123e 100644 --- a/src/definition.h +++ b/src/definition.h @@ -31,7 +31,7 @@ class MemberDef; class GroupDef; class GroupList; struct ListItemInfo; -class SectionInfo; +struct SectionInfo; /*! The common base class of all entity definitions found in the sources. */ class Definition diff --git a/src/doctokenizer.l b/src/doctokenizer.l index 2a17819..1e4b2d1 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -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 @@ -255,7 +278,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* OPTSTARS ("//"{BLANK}*)?"*"*{BLANK}* LISTITEM {BLANK}*{OPTSTARS}"-"("#")?{WS} ENDLIST {BLANK}*{OPTSTARS}"."{BLANK}*\n -ATTRIB {ID}("="(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))? +ATTRIB {ID}{WS}*("="{WS}*(("\""[^\"]*"\"")|("'"[^\']*"'")|[^ \t\r\n'"><]+))? URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=] URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))([({]{URLCHAR}*[)}])? FILESCHAR [a-z_A-Z0-9\\:\\\/\-\+] @@ -283,7 +306,7 @@ WORD1 [^ \t\n\r\\@<>()\[\]:;\?{}&$#,.]+|"{"|"}"|("\""[^"\n]*"\"") WORD2 "."|","|"("|")"|"["|"]"|":"|";"|"\?" WORD1NQ [^ \t\n\r\\@<>()\[\]:;\?{}&$#,."]+ 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" 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} @@ -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)); } <St_Para>{HTMLTAG} { /* html tag */ - 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; + handleHtmlTag(); return TK_HTMLTAG; } <St_Para,St_Text>"&"{ID}";" { /* special symbol */ @@ -538,6 +543,8 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* g_token->name = yytext; return TK_SYMBOL; } +<St_TitleN>{HTMLTAG} { + } <St_TitleN>{SPCMD1} | <St_TitleN>{SPCMD2} { /* special command */ g_token->name = yytext+1; diff --git a/src/dot.cpp b/src/dot.cpp index 862d14c..a9585bf 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -612,10 +612,10 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph) if (urlPtr) { *urlPtr++='\0'; - t << " <link id=\"" << urlPtr << "\""; + t << " <link refid=\"" << convertToXML(urlPtr) << "\""; if (*refPtr!='\0') { - t << " external=\"" << refPtr << "\""; + t << " external=\"" << convertToXML(refPtr) << "\""; } t << "/>" << endl; } @@ -629,7 +629,7 @@ void DotNode::writeXML(QTextStream &t,bool isClassGraph) for (;(childNode=nli.current());++nli,++eli) { edgeInfo=eli.current(); - t << " <childnode id=\"" << childNode->m_number << "\" relation=\""; + t << " <childnode refid=\"" << childNode->m_number << "\" relation=\""; if (isClassGraph) { switch(edgeInfo->m_color) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index fe2d958..c4c88a3 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -235,7 +235,6 @@ static void addRelatedPage(Entry *root) } } - static void buildGroupListFiltered(Entry *root,bool additional) { if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) @@ -6783,10 +6782,11 @@ static void readFiles(BufStr &output) int fileNameSize=fileName.length(); - bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF"); + //bool multiLineIsBrief = Config_getBool("MULTILINE_CPP_IS_BRIEF"); - BufStr tempBuf(10000); - BufStr *bufPtr = multiLineIsBrief ? &output : &tempBuf; + BufStr tempBuf(20000); + //BufStr *bufPtr = multiLineIsBrief ? &output : &tempBuf; + BufStr *bufPtr = &tempBuf; // add begin filename marker bufPtr->addChar(0x06); @@ -6809,10 +6809,10 @@ static void readFiles(BufStr &output) bufPtr->addChar('\n'); /* to prevent problems under Windows ? */ - if (!multiLineIsBrief) - { + //if (!multiLineIsBrief) + //{ convertCppComments(&tempBuf,&output); - } + //} s=inputFiles.next(); //printf("-------> adding new line\n"); diff --git a/src/entry.h b/src/entry.h index afde3ec..594a3c8 100644 --- a/src/entry.h +++ b/src/entry.h @@ -21,7 +21,7 @@ #include "qtbc.h" #include <qlist.h> -class SectionInfo; +struct SectionInfo; enum Protection { Public, Protected, Private, Package } ; enum Specifier { Normal, Virtual, Pure } ; diff --git a/src/index.xsd b/src/index.xsd index 5bf7a62..3a6238e 100644 --- a/src/index.xsd +++ b/src/index.xsd @@ -1,5 +1,6 @@ +<?xml version='1.0' encoding='utf-8' ?> <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:sequence> @@ -47,6 +48,7 @@ <xsd:enumeration value="variable"/> <xsd:enumeration value="typedef"/> <xsd:enumeration value="enum"/> + <xsd:enumeration value="enumvalue"/> <xsd:enumeration value="function"/> <xsd:enumeration value="signal"/> <xsd:enumeration value="prototype"/> diff --git a/src/index_xsd.h b/src/index_xsd.h index e0efd95..1b02e92 100644 --- a/src/index_xsd.h +++ b/src/index_xsd.h @@ -1,5 +1,6 @@ +"<?xml version='1.0' encoding='utf-8' ?>\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" " <xsd:complexType name=\"DoxygenType\">\n" " <xsd:sequence>\n" @@ -47,6 +48,7 @@ " <xsd:enumeration value=\"variable\"/>\n" " <xsd:enumeration value=\"typedef\"/>\n" " <xsd:enumeration value=\"enum\"/>\n" +" <xsd:enumeration value=\"enumvalue\"/>\n" " <xsd:enumeration value=\"function\"/>\n" " <xsd:enumeration value=\"signal\"/>\n" " <xsd:enumeration value=\"prototype\"/>\n" diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 5c67c03..c9b36c8 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -500,18 +500,10 @@ void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd, else // local link { QCString sep = Config_getBool("OPTIMIZE_OUTPUT_JAVA") ? "." : "::"; - if (cd) - { - ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),cd->name()+sep+name()); - } - else if (nd) - { - ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),nd->name()+sep+name()); - } - else - { - ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),name()); - } + QCString n = name(); + if (classDef && gd) n.prepend(classDef->name()+sep); + else if (nspace && gd) n.prepend(nspace->name()+sep); + ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),n); } } diff --git a/src/scanner.l b/src/scanner.l index a482d39..8b47179 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -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 current->doc+=yytext; } + /* <SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { QCString *pValue=Doxygen::aliasDict[yytext+1]; if (pValue) @@ -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 */ if (YY_START==CopyArgComment) fullArgString+=yytext; @@ -4731,25 +4733,25 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } if (!handled) { - QCString *pValue=Doxygen::aliasDict[yytext+1]; - if (pValue) - { - int i,l=pValue->length(); - char c; - for (i=l-1;i>=0;i--) - { - c=pValue->at(i); - unput(c); - if (c=='\n') yyLineNr--; - } - } - else - { - if (YY_START==CopyArgComment) - fullArgString+=yytext; - else - current->doc+=yytext; - } + //QCString *pValue=Doxygen::aliasDict[yytext+1]; + //if (pValue) + //{ + // int i,l=pValue->length(); + // char c; + // for (i=l-1;i>=0;i--) + // { + // c=pValue->at(i); + // unput(c); + // if (c=='\n') yyLineNr--; + // } + //} + //else + //{ + if (YY_START==CopyArgComment) + fullArgString+=yytext; + else + current->doc+=yytext; + //} } } <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_;] current->brief+=yytext; } <JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine,CopyArgCommentLine>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { - QCString *pValue=Doxygen::aliasDict[yytext+1]; - if (pValue) - { - int i,l=pValue->length(); - for (i=l-1;i>=0;i--) - { - unput(pValue->at(i)); - } - } - else - { + //QCString *pValue=Doxygen::aliasDict[yytext+1]; + //if (pValue) + //{ + // int i,l=pValue->length(); + // for (i=l-1;i>=0;i--) + // { + // unput(pValue->at(i)); + // } + //} + //else + //{ if (YY_START==CopyArgCommentLine) fullArgString+=yytext; else current->brief+=yytext; - } + //} } <DefLineDoc,LineDoc,ClassDoc,PageDoc,ExampleDoc,Doc>"/*"|"//" { current->doc += yytext; } <SkipCxxComment>.*/\n { diff --git a/src/translator_jp.h b/src/translator_jp.h index d4286be..4d7c8e0 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -64,7 +64,7 @@ class TranslatorJapaneseEn : public TranslatorEnglish } }; -class TranslatorJapanese : public TranslatorAdapter_1_3 +class TranslatorJapanese : public TranslatorEnglish { private: /*! The decode() can change euc into sjis */ @@ -1394,7 +1394,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_3 */ virtual QCString trDeprecatedList() { - return "Èó¿ä¾©°ìÍ÷"; + return decode("Èó¿ä¾©°ìÍ÷"); } ////////////////////////////////////////////////////////////////////////// @@ -1406,13 +1406,68 @@ class TranslatorJapanese : public TranslatorAdapter_1_3 */ virtual QCString trEvents() { - return "¥¤¥Ù¥ó¥È"; + return decode("¥¤¥Ù¥ó¥È"); } /*! Header used for the documentation section of a class' events. */ 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 diff --git a/src/translator_tw.h b/src/translator_tw.h index a4c68fc..a22c39e 100644 --- a/src/translator_tw.h +++ b/src/translator_tw.h @@ -1,18 +1,20 @@ /****************************************************************************** * - * + * * * Copyright (C) 1997-2003 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * 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 @@ -44,19 +46,19 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 public: // --- Language control methods ------------------- - - /*! Used for identification of the language. The identification - * should not be translated. It should be replaced by the name + + /*! Used for identification of the language. The identification + * should not be translated. It should be replaced by the name * 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. */ virtual QCString idLanguage() { 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 - * LaTeX to the desired language. For example + * LaTeX to the desired language. For example * <pre>"\\usepackage[german]{babel}\n" * </pre> * or @@ -64,7 +66,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 * "\\usepackage[latin2]{inputenc}\n" * "\\usepackage[T1]{fontenc}\n" * </pre> - * + * * The English LaTeX does not use such commands. Because of this * the empty string is returned in this implementation. */ @@ -96,30 +98,30 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() { return "«¬ºA©w¸q¦¨û»¡©ú¤å¥ó"; } - + /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() { return "¦CÁ|«¬ºA¦¨û»¡©ú¤å¥ó"; } - + /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() { return "¨ç¦¡¦¨û»¡©ú¤å¥ó"; } - + /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Äæ¦ì»¡©ú¤å¥ó"; + return "Äæ¦ì»¡©ú¤å¥ó"; } else { - return "¸ê®Æ¦¨û»¡©ú¤å¥ó"; + return "¸ê®Æ¦¨û»¡©ú¤å¥ó"; } } /*! this is the text of a link put after brief descriptions. */ - virtual QCString trMore() + virtual QCString trMore() { return "§ó¦h..."; } /*! put in the class documentation */ @@ -137,54 +139,54 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! this is the remainder of the sentence after the class name */ virtual QCString trIncludingInheritedMembers() { return ", ¥]§t©Ò¦³Ä~©Óªº¦¨û"; } - + /*! this is put at the author sections at the bottom of man pages. * parameter s is name of the project name. */ virtual QCString trGeneratedAutomatically(const char *s) { QCString result="¥»¤å¥ó¥ÑDoxygen"; if (s) result+=(QCString)" ¦Û "+s; - result+=" ªºì©l½X¤¤¦Û°Ê²£¥Í."; + result+=" ªºì©l½X¤¤¦Û°Ê²£¥Í."; return result; } /*! put after an enum name in the list of all members */ virtual QCString trEnumName() { return "¦CÁ|«¬ºA¦WºÙ"; } - + /*! put after an enum value in the list of all members */ virtual QCString trEnumValue() { return "¦CÁ|È"; } - + /*! put after an undocumented member in the list of all members */ virtual QCString trDefinedIn() { return "³Q©w¸q©ó"; } // 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). */ virtual QCString trModules() { return "¼Ò²Õ"; } - + /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() { return "Ãþ§O¶¥¼h"; } - + /*! This is put above each page as a link to the list of annotated classes */ virtual QCString trCompoundList() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { return "¸ê®Æµ²ºc"; } else { - return "½Æ¦X¦Cªí"; + return "½Æ¦X¦Cªí"; } } - + /*! This is put above each page as a link to the list of documented files */ virtual QCString trFileList() { return "ÀɮצCªí"; } @@ -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. */ virtual QCString trCompoundMembers() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "¸ê®ÆÄæ¦ì"; + return "¸ê®ÆÄæ¦ì"; } else { - return "½Æ¦X¦¨û"; + return "½Æ¦X¦¨û"; } } /*! This is put above each page as a link to all members of files. */ virtual QCString trFileMembers() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "¥þ°ì¸ê®Æ"; + return "¥þ°ì¸ê®Æ"; } else { - return "Àɮצ¨û"; + return "Àɮצ¨û"; } } @@ -247,16 +249,16 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! This is an introduction to the annotated compound list. */ virtual QCString trCompoundListDescription() - { - + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "³o¬Oªþ±a²²¤»¡©úªº¸ê®Æµ²ºc:"; + return "³o¬Oªþ±a²²¤»¡©úªº¸ê®Æµ²ºc:"; } else { return "³o¬Oªþ±a²²¤»¡©úªºÃþ§O¡Aµ²ºc¡A" - "Áp¦X«¬ºA(unions)¤Î¤¶±(interfaces):"; + "Áp¦X«¬ºA(unions)¤Î¤¶±(interfaces):"; } } @@ -277,7 +279,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 result+="Ãþ§O¦¨û"; } result+=", ¨Ã¥B±a¦³³sµ²¦Ü"; - if (!extractAll) + if (!extractAll) { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { @@ -288,7 +290,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 result+="¨CÓ¦¨ûªºÃþ§O»¡©ú¤å¥ó:"; } } - else + else { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { @@ -307,7 +309,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { QCString result="³o¬O¥þ³¡"; if (!extractAll) result+="¤å¥ó¤Æªº"; - + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { result+="¨ç¦¡¡AÅܼơA©w¸q¡A¦CÁ|¡A¤Î«¬ºA©w¸q"; @@ -317,9 +319,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 result+="Àɮצ¨û"; } result+="¡A¨Ã¥B±a¦³³sµ²¦Ü"; - if (extractAll) + if (extractAll) result+="³o¨ÇÀɮשÒÄÝ:"; - else + else result+="»¡©ú¤å¥ó:"; return result; } @@ -341,49 +343,49 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "©Ò¦³¼Ò²Õ¦Cªí:"; } /*! This sentences is used in the annotated class/file lists if no brief - * description is given. + * description is given. */ virtual QCString trNoDescriptionAvailable() { return "¨S¦³¥i¥Îªº»¡©ú´yz"; } - - // 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. */ virtual QCString trDocumentation() { 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. */ virtual QCString trModuleIndex() { 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. */ virtual QCString trHierarchicalIndex() { return "¶¥¼h¯Á¤Þ"; } - /*! 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. */ virtual QCString trCompoundIndex() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) - { + { return "¸ê®Æµ²ºc¯Á¤Þ"; } else { - return "½Æ¦X¯Á¤Þ"; + return "½Æ¦X¯Á¤Þ"; } } /*! This is used in LaTeX as the title of the chapter with the * list of all files. */ - virtual QCString trFileIndex() + virtual QCString trFileIndex() { return "ÀɮׯÁ¤Þ"; } /*! This is used in LaTeX as the title of the chapter containing @@ -396,14 +398,14 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 * the documentation of all classes, structs and unions. */ virtual QCString trClassDocumentation() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "¸ê®Æµ²ºc»¡©ú¤å¥ó"; + return "¸ê®Æµ²ºc»¡©ú¤å¥ó"; } else { - return "Ãþ§O»¡©ú¤å¥ó"; + return "Ãþ§O»¡©ú¤å¥ó"; } } @@ -428,111 +430,111 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() { return "°Ñ¦Ò¤â¥U"; } - - /*! 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 */ virtual QCString trDefines() { return "©w¸q"; } - /*! 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 */ virtual QCString trFuncProtos() { 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 */ virtual QCString trTypedefs() { return "«¬ºA©w¸q"; } - /*! 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 */ virtual QCString trEnumerations() { return "¦CÁ|«¬ºA"; } - /*! 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 */ virtual QCString trFunctions() { 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 */ virtual QCString trVariables() { 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 */ virtual QCString trEnumerationValues() { return "¦CÁ|È"; } - + /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ virtual QCString trDefineDocumentation() { return "©w¸q¥¨¶°»¡©ú¤å¥ó"; } - /*! 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 */ virtual QCString trFunctionPrototypeDocumentation() { 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 */ virtual QCString trTypedefDocumentation() { return "«¬ºA©w¸q»¡©ú¤å¥ó"; } - /*! 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 */ virtual QCString trEnumerationTypeDocumentation() { return "¦CÁ|«¬ºA»¡©ú¤å¥ó"; } - /*! 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 */ virtual QCString trEnumerationValueDocumentation() { return "¦CÁ|È»¡©ú¤å¥ó"; } - /*! 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 */ virtual QCString trFunctionDocumentation() { 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 */ virtual QCString trVariableDocumentation() { 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 */ virtual QCString trCompounds() - { + { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "¸ê®Æµ²ºc"; + return "¸ê®Æµ²ºc"; } else { - return "½Æ¦X¶µ¥Ø"; + return "½Æ¦X¶µ¥Ø"; } } - /*! This is used in the standard footer of each page and indicates when - * the page was generated + /*! This is used in the standard footer of each page and indicates when + * the page was generated */ virtual QCString trGeneratedAt(const char *date,const char *projName) - { + { QCString result=(QCString)"²£¥Í¤é´Á:"+date; if (projName) result+=(QCString)", ±M®×:"+projName; result+=(QCString)", ²£¥Í¾¹:"; @@ -550,7 +552,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return (QCString)"Ãþ§O"+clName+"ªºÄ~©Ó¹Ï:"; } - + /*! this text is generated when the \\internal command is used. */ virtual QCString trForInternalUseOnly() { return "¶È¨Ñ¤º³¡¨Ï¥Î."; } @@ -590,7 +592,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! this text is generated when the \\exception command is used. */ virtual QCString trExceptions() { return "¨Ò¥~"; } - + /*! this text is used in the title page of a LaTeX document. */ virtual QCString trGeneratedBy() { return "²£¥ÍªÌ:"; } @@ -598,7 +600,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 ////////////////////////////////////////////////////////////////////////// - + /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() { return "©R¦WªÅ¶¡(name space)¦Cªí"; } @@ -617,17 +619,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 */ virtual QCString trFriends() { return "Ãþ§OªB¤Í(Friends)"; } - + ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// - + /*! used in the class documentation as a header before the list of all - * related classes + * related classes */ virtual QCString trRelatedFunctionDocumentation() { return "Ãþ§OªB¤Í¤Î¬ÛÃö¨ç¦¡»¡©ú¤å¥ó"; } - + ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 ////////////////////////////////////////////////////////////////////////// @@ -655,7 +657,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 virtual QCString trFileReference(const char *fileName) { QCString result=fileName; - result+=" ÀɮװѦҤå¥ó"; + result+=" ÀɮװѦҤå¥ó"; return result; } @@ -666,7 +668,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 result+=" ©R¦WªÅ¶¡(Namespace)°Ñ¦Ò¤å¥ó"; return result; } - + virtual QCString trPublicMembers() { return "¤½¶}¤èªk(Public Methods)"; } virtual QCString trPublicSlots() @@ -687,7 +689,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "¨p¦³´¡¼Ñ(Private Slots)"; } virtual QCString trStaticPrivateMembers() { return "ÀRºA¨p¦³¤èªk(Static Private Methods)"; } - + /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. */ @@ -696,23 +698,23 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 QCString result; int i; // 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! - 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) - + 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+=", "; else // the fore last entry result+=", ¤Î "; } } - return result; + return result; } - + /*! used in class documentation to produce a list of base classes, * if class diagrams are disabled. */ @@ -729,7 +731,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 return "³Q "+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. */ virtual QCString trReimplementedFromList(int numEntries) @@ -751,17 +753,17 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! This is an introduction to the page with all namespace members */ virtual QCString trNamespaceMemberDescription(bool extractAll) - { + { QCString result="¦¹³B¦Cªí¬°©Ò¦³ "; if (!extractAll) result+="¤å¥ó¤Æªº "; result+="©R¦WªÅ¶¡(namespace)¦¨û¡A¨Ã¥Bªþ±a³sµ²¦Ü "; - if (extractAll) + if (extractAll) result+="¨CÓ¦¨ûªº»¡©ú¤å¥ó:"; - else + else result+="¸Ó©R¦WªÅ¶¡©ÒÄݤ§³B:"; 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. */ virtual QCString trNamespaceIndex() @@ -827,7 +829,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 virtual QCString trMainPage() { return "¥D¶±"; } - /*! 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. */ virtual QCString trPageAbbreviation() @@ -876,7 +878,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() { - return "«Øºc¤l»P¸Ñºc¤l»¡©ú¤å¥ó"; + return "«Øºc¤l»P¸Ñºc¤l»¡©ú¤å¥ó"; } /*! Used in the file documentation to point to the corresponding sources. */ virtual QCString trGotoSourceCode() @@ -933,7 +935,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 ////////////////////////////////////////////////////////////////////////// // new since 1.1.0 ////////////////////////////////////////////////////////////////////////// - + virtual QCString trNote() { return "µù"; @@ -1022,7 +1024,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "¦Û"; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.1.5 ////////////////////////////////////////////////////////////////////////// @@ -1032,12 +1034,12 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { 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". */ virtual QCString trLegendDocs() { - return + return "¥»¶¸ÑÄÀ¦p¦ó¸ÑĶ³o¨Ç¥Ñdoxygen©Ò²£¥Íªº¹Ï¥Ü " ".<p>\n" "½Ð¬Ý¤U±½d¨Ò:\n" @@ -1102,11 +1104,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "¹Ï¥Ü"; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.2.0 ////////////////////////////////////////////////////////////////////////// - + /*! Used as a marker that is put before a test item */ virtual QCString trTest() { @@ -1194,11 +1196,11 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "¥¨¶°¤º®e:"; } - + ////////////////////////////////////////////////////////////////////////// // new since 1.2.5 ////////////////////////////////////////////////////////////////////////// - + /*! Used as a marker that is put before a \\bug item */ virtual QCString trBug() { @@ -1214,9 +1216,9 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 // new since 1.2.6 ////////////////////////////////////////////////////////////////////////// - /*! Used as ansicpg for RTF file - * - * The following table shows the correlation of Charset name, Charset Value and + /*! Used as ansicpg for RTF file + * + * The following table shows the correlation of Charset name, Charset Value and * <pre> * Codepage number: * Charset Name Charset Value(hex) Codepage number @@ -1237,15 +1239,15 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 * GB2313_CHARSET 134 (x86) 936 * CHINESEBIG5_CHARSET 136 (x88) 950 * </pre> - * + * */ virtual QCString trRTFansicp() { return "950"; } - - /*! Used as ansicpg for RTF fcharset + + /*! Used as ansicpg for RTF fcharset * \see trRTFansicp() for a table of possible values. */ virtual QCString trRTFCharSet() @@ -1258,76 +1260,76 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 { return "¯Á¤Þ"; } - + /*! 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. */ virtual QCString trClass(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("Ãþ§O"); } /*! 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. */ virtual QCString trFile(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("ÀÉ®×"); } /*! 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. */ virtual QCString trNamespace(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("©R¦WªÅ¶¡"); } /*! 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. */ virtual QCString trGroup(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("¸s²Õ"); } /*! 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. */ virtual QCString trPage(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("¶±"); } /*! 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. */ virtual QCString trMember(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("¦¨û"); } - + /*! 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. */ virtual QCString trField(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("Äæ¦ì"); } /*! 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. */ virtual QCString trGlobal(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("¥þ°ì"); } @@ -1338,7 +1340,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 /*! This text is generated when the \\author command is used and * for the author section in man pages. */ virtual QCString trAuthor(bool /*first_capital*/, bool /*singular*/) - { + { return QCString("§@ªÌ"); } @@ -1357,7 +1359,7 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 // 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. */ virtual QCString trImplementedFromList(int numEntries) @@ -1373,6 +1375,103 @@ class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16 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 "¹L®É¶µ¥Ø(Deprecated) ¦Cªí"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 «¬§O"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + return "Package ¨ç¼Æ¦Cªí"; + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + return "ÀRºA Package ¨ç¼Æ¦Cªí"; + } + /*! 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 "ÀRºA 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 "³o¬O¦¹¨ç¼Æªº¤Þ¥Î¨ç¼Æ¹Ï:"; + } + }; #endif @@ -48,7 +48,7 @@ struct TagInfo; class MemberNameInfoSDict; struct ListItemInfo; class PageDef; -class SectionInfo; +struct SectionInfo; //-------------------------------------------------------------------- diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 2f58fd4..f2f669e 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -54,6 +54,12 @@ static const char index_xsd[] = ; //------------------ +// +static const char compound_xsd[] = +#include "compound_xsd.h" +; + +//------------------ inline void writeXMLString(QTextStream &t,const char *s) @@ -82,22 +88,28 @@ inline void writeXMLCodeString(QTextStream &t,const char *s) static void writeXMLHeader(QTextStream &t) { - QCString dtdName = Config_getString("XML_DTD"); - QCString schemaName = Config_getString("XML_SCHEMA"); + //QCString dtdName = Config_getString("XML_DTD"); + //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() - << "' 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\" "; - } + << "' standalone='no'?>" << endl;; + t << "<doxygen xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "; + t << "xsi:noNamespaceSchemaLocation=\"compound.xsd\" "; t << "version=\"" << versionString << "\">" << endl; } @@ -422,7 +434,7 @@ static void writeMemberReference(QTextStream &t,Definition *def,MemberDef *rmd,c { name.prepend(scope+"::"); } - t << " <" << tagName << " id=\""; + t << " <" << tagName << " refid=\""; t << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\""; if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef()) { @@ -529,7 +541,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De t << "\" virt=\""; switch (md->virtualness()) { - case Normal: t << "normal"; break; + case Normal: t << "non-virtual"; break; case Virtual: t << "virtual"; break; case Pure: t << "pure-virtual"; break; default: ASSERT(0); @@ -544,8 +556,8 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De t << " volatile=\""; if (al && al->volatileSpecifier) t << "yes"; else t << "no"; - t << "\" mutable=\""; - if (md->isMutable()) t << "yes"; else t << "no"; + t << "\" mutable=\""; + if (md->isMutable()) t << "yes"; else t << "no"; t << "\""; } @@ -572,9 +584,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De MemberDef *rmd = md->reimplements(); if (rmd) { - t << " <reimplements id=\"" + t << " <reimplements refid=\"" << rmd->getOutputFileBase() << "_1" << rmd->anchor() << "\">" - << convertToXML(rmd->name()) << "</reimplements>"; + << convertToXML(rmd->name()) << "</reimplements>" << endl; } MemberList *rbml = md->reimplementedBy(); if (rbml) @@ -582,9 +594,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De MemberListIterator mli(*rbml); for (mli.toFirst();(rmd=mli.current());++mli) { - t << " <reimplementedby id=\"" + t << " <reimplementedby refid=\"" << 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) } } - 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(); if (ii) { @@ -941,7 +941,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) t << " <includes"; 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 << nm; @@ -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); - writeListOfAllMembers(cd,t); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) @@ -1014,6 +1026,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) << cd->getEndBodyLine() << "\""; } t << "/>" << endl; + writeListOfAllMembers(cd,t); t << " </compounddef>" << endl; t << "</doxygen>" << endl; @@ -1153,7 +1166,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) t << " <includes"; 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 << inc->includeName; @@ -1166,7 +1179,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) t << " <includedby"; 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 << inc->includeName; @@ -1466,6 +1479,16 @@ void generateXML() f.writeBlock(index_xsd,strlen(index_xsd)); 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"; f.setName(fileName); if (!f.open(IO_WriteOnly)) @@ -1479,7 +1502,7 @@ void generateXML() // write index header t << "<?xml version='1.0' encoding='" << theTranslator->idLanguageCharset() << "' 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 << "version=\"" << versionString << "\">" << endl; @@ -1487,12 +1510,14 @@ void generateXML() ClassDef *cd; for (cli.toFirst();(cd=cli.current());++cli) { + msg("Generating XML output for class %s\n",cd->name().data()); generateXMLForClass(cd,t); } NamespaceSDict::Iterator nli(Doxygen::namespaceSDict); NamespaceDef *nd; for (nli.toFirst();(nd=nli.current());++nli) { + msg("Generating XML output for namespace %s\n",nd->name().data()); generateXMLForNamespace(nd,t); } FileNameListIterator fnli(Doxygen::inputNameList); @@ -1503,6 +1528,7 @@ void generateXML() FileDef *fd; for (;(fd=fni.current());++fni) { + msg("Generating XML output for file %s\n",fd->name().data()); generateXMLForFile(fd,t); } } @@ -1510,21 +1536,24 @@ void generateXML() GroupDef *gd; for (;(gd=gli.current());++gli) { + msg("Generating XML output for group %s\n",gd->name().data()); generateXMLForGroup(gd,t); } PageSDict::Iterator pdi(*Doxygen::pageSDict); PageDef *pd=0; for (pdi.toFirst();(pd=pdi.current());++pdi) { + msg("Generating XML output for page %s\n",pd->name().data()); generateXMLForPage(pd,t); } if (Doxygen::mainPage) { + msg("Generating XML output for the main page\n"); generateXMLForPage(Doxygen::mainPage,t); } //t << " </compoundlist>" << endl; - t << "</doxygen>" << endl; + t << "</doxygenindex>" << endl; } |