summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp13
-rw-r--r--src/classlist.cpp5
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/compound.xsd354
-rw-r--r--src/compound_xsd.h354
-rw-r--r--src/definition.cpp14
-rw-r--r--src/docparser.cpp67
-rw-r--r--src/docparser.h26
-rw-r--r--src/docvisitor.h15
-rw-r--r--src/doxygen.cpp62
-rw-r--r--src/htmldocvisitor.cpp2
-rw-r--r--src/index.cpp13
-rw-r--r--src/latexdocvisitor.cpp25
-rw-r--r--src/latexdocvisitor.h3
-rw-r--r--src/mandocvisitor.cpp2
-rw-r--r--src/memberdef.cpp1
-rw-r--r--src/perlmodgen.cpp2
-rw-r--r--src/printdocvisitor.h3
-rw-r--r--src/rtfdocvisitor.cpp2
-rw-r--r--src/scanner.l28
-rw-r--r--src/translator_br.h21
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_sr.h2
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/util.cpp43
-rw-r--r--src/xmldocvisitor.cpp18
26 files changed, 973 insertions, 108 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 72ec333..d6f5352 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -134,6 +134,10 @@ QCString ClassDef::displayName() const
{
n=qualifiedNameWithTemplateParameters();
}
+ if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
+ {
+ n=substitute(n,"::",".");
+ }
return n;
}
@@ -1117,7 +1121,6 @@ void ClassDef::writeDocumentation(OutputList &ol)
// write link to list of all members (HTML only)
if (m_allMemberNameInfoSDict->count()>0 &&
!Config_getBool("OPTIMIZE_OUTPUT_FOR_C")
- /* && !Config_getBool("INLINE_INHERITED_MEMB") */
)
{
ol.pushGeneratorState();
@@ -2587,14 +2590,6 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
QCString ClassDef::className() const
{
- //QCString className=m_localName;
- //Definition *p=getOuterScope();
- //while (p && p->definitionType()==TypeClass)
- //{
- // className.prepend(p->localName()+"::");
- // p=p->getOuterScope();
- //}
- //return className;
return m_className;
};
diff --git a/src/classlist.cpp b/src/classlist.cpp
index d234312..c370196 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -95,6 +95,7 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
}
ol.startMemberItem(FALSE);
QCString tmp = cd->compoundTypeString();
+ QCString cname = substitute(cd->className(),"::",".");
ol.writeString(tmp);
ol.writeString(" ");
ol.insertMemberAlign();
@@ -103,13 +104,13 @@ void ClassSDict::writeDeclaration(OutputList &ol,const ClassDef::CompoundType *f
ol.writeObjectLink(cd->getReference(),
cd->getOutputFileBase(),
0,
- cd->className()
+ cname
);
}
else
{
ol.startBold();
- ol.docify(cd->className());
+ ol.docify(cname);
ol.endBold();
}
ol.endMemberItem();
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 5df9adf..6faafd5 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -198,7 +198,7 @@ void replaceComment(int offset);
<CComment>[^\\@*\n]* { /* anything that is not a '*' */
copyToOutput(yytext,yyleng);
}
-<CComment>"*"+[^*/\n]* { /* stars without slashes */
+<CComment>"*"+[^*/\\@\n]* { /* stars without slashes */
copyToOutput(yytext,yyleng);
}
<CComment>\n { /* new line in comment */
diff --git a/src/compound.xsd b/src/compound.xsd
index 042f8f5..9fb394a 100644
--- a/src/compound.xsd
+++ b/src/compound.xsd
@@ -120,9 +120,11 @@
<xsd:attribute name="mutable" type="DoxBool" />
</xsd:complexType>
- <xsd:complexType name="descriptionType" mixed="true">
+ <xsd:complexType name="descriptionType">
<xsd:sequence>
- <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalType" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
@@ -226,6 +228,312 @@
<xsd:attribute name="bodyend" type="xsd:integer" />
</xsd:complexType>
+ <xsd:complexType name="docSect1Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string" />
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalS1Type" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docSect2Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string" />
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalS2Type" minOccurs="0" />
+ </xsd:sequencee
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docSect3Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string" />
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect4" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalS3Type" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docSect4Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="title" type="xsd:string" />
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalS4Type" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docInternalType" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docInternalS1Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect2" type="docSect2Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docInternalS2Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect3" type="docSect3Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docInternalS3Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect3" type="docSect4Type" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docInternalS4Type" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:group name="docTitleCmdGroup">
+ <xsd:choice>
+ <xsd:element name="ulink" type="docURLLink" />
+ <xsd:element name="bold" type="docMarkupType" />
+ <xsd:element name="emphasis" type="docMarkupType" />
+ <xsd:element name="computeroutput" type="docMarkupType" />
+ <xsd:element name="subscript" type="docMarkupType" />
+ <xsd:element name="superscript" type="docMarkupType" />
+ <xsd:element name="center" type="docMarkupType" />
+ <xsd:element name="small" type="docMarkupType" />
+ <xsd:element name="htmlonly" type="xsd:string" />
+ <xsd:element name="latexonly" type="xsd:string" />
+ <xsd:element name="anchor" type="docAnchorType" />
+ <xsd:element name="formula" type="docFormulaType" />
+ <xsd:element name="ref" type="docRefTextType" />
+ <xsd:element name="copy" type="docEmptyType" />
+ <xsd:element name="trademark" type="docEmptyType" />
+ <xsd:element name="registered" type="docEmptyType" />
+ <xsd:element name="umlaut" type="docCharType" />
+ <xsd:element name="acute" type="docCharType" />
+ <xsd:element name="grave" type="docCharType" />
+ <xsd:element name="circ" type="docCharType" />
+ <xsd:element name="tilde" type="docCharType" />
+ <xsd:element name="cedil" type="docCharType" />
+ <xsd:element name="ring" type="docCharType" />
+ <xsd:element name="szlig" type="docEmptyType" />
+ <xsd:element name="nonbreakablespace" type="docEmptyType" />
+ </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="docTitleType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:complexType>
+
+ <xsd:group name="docCmdGroup">
+ <xsd:choice>
+ <xsd:group ref="docTitleCmdGroup"/>
+ <xsd:element name="linebreak" type="docEmptyType" />
+ <xsd:element name="hruler" type="docEmptyType" />
+ <xsd:element name="preformatted" type="docMarkupType" />
+ <xsd:element name="programlisting" type="listingType" />
+ <xsd:element name="verbatim" type="xsd:string" />
+ <xsd:element name="indexentry" type="docIndexEntryType" />
+ <xsd:element name="orderedlist" type="docListType" />
+ <xsd:element name="itemizedlist" type="docListType" />
+ <xsd:element name="simplesect" type="docSimpleSectType" />
+ <xsd:element name="title" type="docTitleType" />
+ <xsd:element name="variablelist" type="docVariableListType" />
+ <xsd:element name="table" type="docTableType" />
+ <xsd:element name="heading" type="docHeadingType" />
+ <xsd:element name="image" type="docImageType" />
+ <xsd:element name="dotfile" type="docDotFileType" />
+ <xsd:element name="toclist" type="docTocListType" />
+ <xsd:element name="language" type="docLanguageType" />
+ <xsd:element name="parameterlist" type="docParamListType" />
+ <xsd:element name="xrefsect" type="docXRefSectType" />
+ <xsd:element name="copydoc" type="docCopyType" />
+ </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="docParaType" mixed="true">
+ <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docMarkupType" mixed="true">
+ <xsd:group ref="docCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docURLLink" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="url" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docAnchorType" mixed="true">
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docFormulaType" mixed="true">
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docIndexEntryType">
+ <xsd:sequence>
+ <xsd:element name="primaryie" type="xsd:string" />
+ <xsd:element name="secondaryie" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docListType">
+ <xsd:sequence>
+ <xsd:element name="listitem" type="docListItemType" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docListItemType">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docSimpleSectType">
+ <xsd:sequence>
+ <xsd:element name="title" type="docTitleType" minOccurs="0" />
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="kind" type="DoxSimpleSectKind" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docVarListEntryType">
+ <xsd:sequence>
+ <xsd:element name="term" type="docTitleType" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:group name="docVariableListGroup">
+ <xsd:sequence>
+ <xsd:element name="varlistentry" type="docVarListEntryType" />
+ <xsd:element name="listitem" type="docListItemType" />
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:complexType name="docVariableListType">
+ <xsd:sequence>
+ <xsd:group ref="docVariableListGroup" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docRefTextType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="refid" />
+ <xsd:attribute name="kindref" />
+ <xsd:attribute name="external" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docTableType">
+ <xsd:sequence>
+ <xsd:element name="row" type="docRowType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="caption" type="docCaptionType" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="rows" type="xsd:integer" />
+ <xsd:attribute name="cols" type="xsd:integer" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docRowType">
+ <xsd:sequence>
+ <xsd:element name="entry" type="docEntryType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docEntryType">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="thead" type="DoxBool" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docCaptionType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docHeadingType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="level" type="xsd:integer" /> <!-- todo: range 1-6 -->
+ </xsd:complexType>
+
+ <xsd:complexType name="docImageType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="type" type="DoxImageKind" />
+ <xsd:attribute name="name" type="xsd:string" />
+ <xsd:attribute name="width" type="xsd:string" />
+ <xsd:attribute name="height" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docDotFileType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docTocItemType" mixed="true">
+ <xsd:group ref="docTitleCmdGroup" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docTocListType">
+ <xsd:sequence>
+ <xsd:element name="tocitem" type="docTocItemType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="docLanguageType">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="langid" type="xsd:string" />
+ </xsd:complexType>
+
+ <xsd:group name="docParamListGroup">
+ <xsd:sequence>
+ <xsd:element name="parametername" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="parameterdescription" type="descriptionType" />
+ </xsd:sequence>
+ </xsd:group>
+
+ <xsd:complexType name="docParamListType">
+ <xsd:sequence>
+ <xsd:group ref="docParamListGroup" maxOccurs="unbounded" />
+ </xsd:sequence>
+ <xsd:attribute name="kind" type="DoxParamListKind" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docXRefSectType">
+ <xsd:sequence>
+ <xsd:element name="xreftitle" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="xrefdescription" type="descriptionType" />
+ </xsd:sequence>
+ <xsd:attribute name="id" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docCopyType">
+ <xsd:sequence>
+ <xsd:element name="para" type="docParaType" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="sect1" type="docSect1Type" minOccurs="0" maxOccurs="unbounded" />
+ <xsd:element name="internal" type="docInternalType" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="link" />
+ </xsd:complexType>
+
+ <xsd:complexType name="docCharType">
+ <xsd:attribute name="char" type="DoxCharRange"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="docEmptyType"/>
+
<!-- Simple types -->
<xsd:simpleType name="DoxBool">
@@ -350,12 +658,54 @@
</xsd:restriction>
</xsd:simpleType>
+ <xsd:simpleType name="DoxSimpleSectKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="see" />
+ <xsd:enumeration value="return" />
+ <xsd:enumeration value="author" />
+ <xsd:enumeration value="authors" />
+ <xsd:enumeration value="version" />
+ <xsd:enumeration value="since" />
+ <xsd:enumeration value="date" />
+ <xsd:enumeration value="note" />
+ <xsd:enumeration value="warning" />
+ <xsd:enumeration value="pre" />
+ <xsd:enumeration value="post" />
+ <xsd:enumeration value="invariant" />
+ <xsd:enumeration value="remark" />
+ <xsd:enumeration value="attention" />
+ <xsd:enumeration value="par" />
+ <xsd:enumeration value="rcs" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
<xsd:simpleType name="DoxVersionNumber">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+\.\d+.*" />
</xsd:restriction>
</xsd:simpleType>
+ <xsd:simpleType name="DoxImageKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="html" />
+ <xsd:enumeration value="latex" />
+ <xsd:enumeration value="rtf" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="DoxParamListKind">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="param" />
+ <xsd:enumeration value="retval" />
+ <xsd:enumeration value="exception" />
+ </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="DoxCharRange">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[aeiouncAEIOUNC]" />
+ </xsd:restriction>
+ </xsd:simpleType>
</xsd:schema>
diff --git a/src/compound_xsd.h b/src/compound_xsd.h
index f914e0e..ca866bb 100644
--- a/src/compound_xsd.h
+++ b/src/compound_xsd.h
@@ -120,9 +120,11 @@
" <xsd:attribute name=\"mutable\" type=\"DoxBool\" />\n"
" </xsd:complexType>\n"
"\n"
-" <xsd:complexType name=\"descriptionType\" mixed=\"true\">\n"
+" <xsd:complexType name=\"descriptionType\">\n"
" <xsd:sequence>\n"
-" <xsd:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalType\" minOccurs=\"0\" />\n"
" </xsd:sequence>\n"
" </xsd:complexType>\n"
"\n"
@@ -226,6 +228,312 @@
" <xsd:attribute name=\"bodyend\" type=\"xsd:integer\" />\n"
" </xsd:complexType>\n"
"\n"
+" <xsd:complexType name=\"docSect1Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"title\" type=\"xsd:string\" /> \n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect2\" type=\"docSect2Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalS1Type\" minOccurs=\"0\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docSect2Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"title\" type=\"xsd:string\" /> \n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect3\" type=\"docSect3Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalS2Type\" minOccurs=\"0\" />\n"
+" </xsd:sequencee\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docSect3Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"title\" type=\"xsd:string\" /> \n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect4\" type=\"docSect4Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalS3Type\" minOccurs=\"0\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docSect4Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"title\" type=\"xsd:string\" /> \n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalS4Type\" minOccurs=\"0\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docInternalType\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docInternalS1Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect2\" type=\"docSect2Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docInternalS2Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect3\" type=\"docSect3Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docInternalS3Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect3\" type=\"docSect4Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docInternalS4Type\" mixed=\"true\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+" \n"
+" <xsd:group name=\"docTitleCmdGroup\">\n"
+" <xsd:choice>\n"
+" <xsd:element name=\"ulink\" type=\"docURLLink\" />\n"
+" <xsd:element name=\"bold\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"emphasis\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"computeroutput\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"subscript\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"superscript\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"center\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"small\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"htmlonly\" type=\"xsd:string\" />\n"
+" <xsd:element name=\"latexonly\" type=\"xsd:string\" />\n"
+" <xsd:element name=\"anchor\" type=\"docAnchorType\" />\n"
+" <xsd:element name=\"formula\" type=\"docFormulaType\" />\n"
+" <xsd:element name=\"ref\" type=\"docRefTextType\" />\n"
+" <xsd:element name=\"copy\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"trademark\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"registered\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"umlaut\" type=\"docCharType\" />\n"
+" <xsd:element name=\"acute\" type=\"docCharType\" />\n"
+" <xsd:element name=\"grave\" type=\"docCharType\" />\n"
+" <xsd:element name=\"circ\" type=\"docCharType\" />\n"
+" <xsd:element name=\"tilde\" type=\"docCharType\" />\n"
+" <xsd:element name=\"cedil\" type=\"docCharType\" />\n"
+" <xsd:element name=\"ring\" type=\"docCharType\" />\n"
+" <xsd:element name=\"szlig\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"nonbreakablespace\" type=\"docEmptyType\" />\n"
+" </xsd:choice>\n"
+" </xsd:group>\n"
+"\n"
+" <xsd:complexType name=\"docTitleType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:group name=\"docCmdGroup\">\n"
+" <xsd:choice>\n"
+" <xsd:group ref=\"docTitleCmdGroup\"/>\n"
+" <xsd:element name=\"linebreak\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"hruler\" type=\"docEmptyType\" />\n"
+" <xsd:element name=\"preformatted\" type=\"docMarkupType\" />\n"
+" <xsd:element name=\"programlisting\" type=\"listingType\" />\n"
+" <xsd:element name=\"verbatim\" type=\"xsd:string\" />\n"
+" <xsd:element name=\"indexentry\" type=\"docIndexEntryType\" />\n"
+" <xsd:element name=\"orderedlist\" type=\"docListType\" />\n"
+" <xsd:element name=\"itemizedlist\" type=\"docListType\" />\n"
+" <xsd:element name=\"simplesect\" type=\"docSimpleSectType\" />\n"
+" <xsd:element name=\"title\" type=\"docTitleType\" />\n"
+" <xsd:element name=\"variablelist\" type=\"docVariableListType\" />\n"
+" <xsd:element name=\"table\" type=\"docTableType\" />\n"
+" <xsd:element name=\"heading\" type=\"docHeadingType\" />\n"
+" <xsd:element name=\"image\" type=\"docImageType\" />\n"
+" <xsd:element name=\"dotfile\" type=\"docDotFileType\" />\n"
+" <xsd:element name=\"toclist\" type=\"docTocListType\" />\n"
+" <xsd:element name=\"language\" type=\"docLanguageType\" />\n"
+" <xsd:element name=\"parameterlist\" type=\"docParamListType\" />\n"
+" <xsd:element name=\"xrefsect\" type=\"docXRefSectType\" />\n"
+" <xsd:element name=\"copydoc\" type=\"docCopyType\" />\n"
+" </xsd:choice>\n"
+" </xsd:group>\n"
+"\n"
+" <xsd:complexType name=\"docParaType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docMarkupType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docURLLink\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"url\" type=\"xsd:string\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docAnchorType\" mixed=\"true\">\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docFormulaType\" mixed=\"true\">\n"
+" <xsd:attribute name=\"id\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docIndexEntryType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"primaryie\" type=\"xsd:string\" />\n"
+" <xsd:element name=\"secondaryie\" type=\"xsd:string\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docListType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"listitem\" type=\"docListItemType\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docListItemType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docSimpleSectType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"title\" type=\"docTitleType\" minOccurs=\"0\" />\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"kind\" type=\"DoxSimpleSectKind\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docVarListEntryType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"term\" type=\"docTitleType\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:group name=\"docVariableListGroup\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"varlistentry\" type=\"docVarListEntryType\" />\n"
+" <xsd:element name=\"listitem\" type=\"docListItemType\" />\n"
+" </xsd:sequence>\n"
+" </xsd:group>\n"
+"\n"
+" <xsd:complexType name=\"docVariableListType\">\n"
+" <xsd:sequence>\n"
+" <xsd:group ref=\"docVariableListGroup\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docRefTextType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"refid\" />\n"
+" <xsd:attribute name=\"kindref\" />\n"
+" <xsd:attribute name=\"external\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docTableType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"row\" type=\"docRowType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"caption\" type=\"docCaptionType\" minOccurs=\"0\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"rows\" type=\"xsd:integer\" />\n"
+" <xsd:attribute name=\"cols\" type=\"xsd:integer\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docRowType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"entry\" type=\"docEntryType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docEntryType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"thead\" type=\"DoxBool\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docCaptionType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docHeadingType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"level\" type=\"xsd:integer\" /> <!-- todo: range 1-6 -->\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docImageType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"type\" type=\"DoxImageKind\" /> \n"
+" <xsd:attribute name=\"name\" type=\"xsd:string\" /> \n"
+" <xsd:attribute name=\"width\" type=\"xsd:string\" /> \n"
+" <xsd:attribute name=\"height\" type=\"xsd:string\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docDotFileType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"name\" type=\"xsd:string\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docTocItemType\" mixed=\"true\">\n"
+" <xsd:group ref=\"docTitleCmdGroup\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:attribute name=\"id\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docTocListType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"tocitem\" type=\"docTocItemType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docLanguageType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"langid\" type=\"xsd:string\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:group name=\"docParamListGroup\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"parametername\" type=\"xsd:string\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"parameterdescription\" type=\"descriptionType\" />\n"
+" </xsd:sequence>\n"
+" </xsd:group>\n"
+"\n"
+" <xsd:complexType name=\"docParamListType\">\n"
+" <xsd:sequence>\n"
+" <xsd:group ref=\"docParamListGroup\" maxOccurs=\"unbounded\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"kind\" type=\"DoxParamListKind\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docXRefSectType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"xreftitle\" type=\"xsd:string\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"xrefdescription\" type=\"descriptionType\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"id\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docCopyType\">\n"
+" <xsd:sequence>\n"
+" <xsd:element name=\"para\" type=\"docParaType\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"sect1\" type=\"docSect1Type\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n"
+" <xsd:element name=\"internal\" type=\"docInternalType\" minOccurs=\"0\" />\n"
+" </xsd:sequence>\n"
+" <xsd:attribute name=\"link\" /> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docCharType\">\n"
+" <xsd:attribute name=\"char\" type=\"DoxCharRange\"/> \n"
+" </xsd:complexType>\n"
+"\n"
+" <xsd:complexType name=\"docEmptyType\"/>\n"
+"\n"
" <!-- Simple types -->\n"
"\n"
" <xsd:simpleType name=\"DoxBool\">\n"
@@ -350,12 +658,54 @@
" </xsd:restriction>\n"
" </xsd:simpleType>\n"
"\n"
+" <xsd:simpleType name=\"DoxSimpleSectKind\">\n"
+" <xsd:restriction base=\"xsd:string\">\n"
+" <xsd:enumeration value=\"see\" />\n"
+" <xsd:enumeration value=\"return\" />\n"
+" <xsd:enumeration value=\"author\" />\n"
+" <xsd:enumeration value=\"authors\" />\n"
+" <xsd:enumeration value=\"version\" />\n"
+" <xsd:enumeration value=\"since\" />\n"
+" <xsd:enumeration value=\"date\" />\n"
+" <xsd:enumeration value=\"note\" />\n"
+" <xsd:enumeration value=\"warning\" />\n"
+" <xsd:enumeration value=\"pre\" />\n"
+" <xsd:enumeration value=\"post\" />\n"
+" <xsd:enumeration value=\"invariant\" />\n"
+" <xsd:enumeration value=\"remark\" />\n"
+" <xsd:enumeration value=\"attention\" />\n"
+" <xsd:enumeration value=\"par\" />\n"
+" <xsd:enumeration value=\"rcs\" />\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"
+" <xsd:simpleType name=\"DoxImageKind\">\n"
+" <xsd:restriction base=\"xsd:string\">\n"
+" <xsd:enumeration value=\"html\" />\n"
+" <xsd:enumeration value=\"latex\" />\n"
+" <xsd:enumeration value=\"rtf\" />\n"
+" </xsd:restriction>\n"
+" </xsd:simpleType>\n"
+"\n"
+" <xsd:simpleType name=\"DoxParamListKind\">\n"
+" <xsd:restriction base=\"xsd:string\">\n"
+" <xsd:enumeration value=\"param\" />\n"
+" <xsd:enumeration value=\"retval\" />\n"
+" <xsd:enumeration value=\"exception\" />\n"
+" </xsd:restriction>\n"
+" </xsd:simpleType>\n"
+"\n"
+" <xsd:simpleType name=\"DoxCharRange\">\n"
+" <xsd:restriction base=\"xsd:string\">\n"
+" <xsd:pattern value=\"[aeiouncAEIOUNC]\" />\n"
+" </xsd:restriction>\n"
+" </xsd:simpleType>\n"
"\n"
"</xsd:schema>\n"
"\n"
diff --git a/src/definition.cpp b/src/definition.cpp
index 1482ab7..75c2931 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -126,6 +126,7 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
{
if (d==0) return;
//printf("Definition::setDocumentation(%s,%s,%d,%d)\n",d,docFile,docLine,stripWhiteSpace);
+ QCString doc;
if (stripWhiteSpace)
{
// strip leading empty lines in front of the text, but not the
@@ -141,20 +142,21 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
s++;
}
if (c=='\0') return;
- m_doc=d+so;
+ doc=d+so;
// zero any trailing whitespace
- int e=m_doc.length()-1;
- while (e>=0 && (c=m_doc.at(e)) && (c==' ' || c=='\r' || c=='\n'))
+ int e=doc.length()-1;
+ while (e>=0 && (c=doc.at(e)) && (c==' ' || c=='\r' || c=='\n'))
{
- m_doc.at(e)='\0';
+ doc.at(e)='\0';
e--;
}
}
else // don't strip whitespace
{
- m_doc=d;
+ doc=d;
}
//printf("setting docs for %s: `%s'\n",name().data(),m_doc.data());
+ m_doc=doc;
m_docFile = docFile;
m_docLine = docLine;
}
@@ -163,7 +165,7 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri
{
if (b==0) return;
//printf("Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
- m_brief=QCString(b).stripWhiteSpace();
+ m_brief=QCString(b).stripWhiteSpace();
int bl=m_brief.length();
if (bl>0) // add puntuation if needed
{
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 56f1f55..1b584b3 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -2143,7 +2143,7 @@ endhref:
//---------------------------------------------------------------------------
-int DocInternal::parse()
+int DocInternal::parse(int level)
{
int retval=RetVal_OK;
g_nodeStack.push(this);
@@ -2170,25 +2170,24 @@ int DocInternal::parse()
{
warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Invalid list item found",doctokenizerYYlineno);
}
- } while (retval!=0 && retval!=RetVal_Section);
+ } while (retval!=0 &&
+ retval!=RetVal_Section &&
+ retval!=RetVal_Subsection &&
+ retval!=RetVal_Subsubsection &&
+ retval!=RetVal_Paragraph
+ );
if (lastPar) lastPar->markLast();
- // then parse any number of level1 sections
- while (retval==RetVal_Section)
+ // then parse any number of level-n sections
+ while ((level==1 && retval==RetVal_Section) ||
+ (level==2 && retval==RetVal_Subsection) ||
+ (level==3 && retval==RetVal_Subsubsection) ||
+ (level==4 && retval==RetVal_Paragraph)
+ )
{
- //SectionInfo *sec=Doxygen::sectionDict[g_token->sectionId];
- //int secLev = sec->type==SectionInfo::Subsection ? 2 : 1;
- //if (secLev!=1) // wrong level
- //{
- // warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Expected level 1 section, found a section with level %d.",secLev);
- // break;
- //}
- //else
- //{
- DocSection *s=new DocSection(this,1,g_token->sectionId);
- m_children.append(s);
- retval = s->parse();
- //}
+ DocSection *s=new DocSection(this,level,g_token->sectionId);
+ m_children.append(s);
+ retval = s->parse();
}
if (retval==RetVal_Internal)
@@ -2503,6 +2502,32 @@ getrow:
return retval==RetVal_EndTable ? RetVal_OK : retval;
}
+uint DocHtmlTable::numCols() const
+{
+ uint cols=0;
+ QListIterator<DocNode> cli(m_children);
+ DocNode *n;
+ for (cli.toFirst();(n=cli.current());++cli)
+ {
+ ASSERT(n->kind()==DocNode::Kind_HtmlRow);
+ cols=QMAX(cols,((DocHtmlRow *)n)->numCells());
+ }
+ return cols;
+}
+
+void DocHtmlTable::accept(DocVisitor *v)
+{
+ v->visitPre(this);
+ // for HTML output we put the caption first
+ if (m_caption && v->id()==DocVisitor_Html) m_caption->accept(v);
+ QListIterator<DocNode> cli(m_children);
+ DocNode *n;
+ for (cli.toFirst();(n=cli.current());++cli) n->accept(v);
+ // for other output formats we put the caption last
+ if (m_caption && v->id()!=DocVisitor_Html) m_caption->accept(v);
+ v->visitPost(this);
+}
+
//---------------------------------------------------------------------------
int DocHtmlDescTitle::parse()
@@ -4496,6 +4521,12 @@ int DocSection::parse()
retval=0; // stop parsing
}
+ else if (retval==RetVal_Internal)
+ {
+ DocInternal *in = new DocInternal(this);
+ m_children.append(in);
+ retval = in->parse(m_level+1);
+ }
else
{
}
@@ -4659,7 +4690,7 @@ void DocRoot::parse()
{
DocInternal *in = new DocInternal(this);
m_children.append(in);
- retval = in->parse();
+ retval = in->parse(1);
}
diff --git a/src/docparser.h b/src/docparser.h
index 383f23c..1554037 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -821,7 +821,7 @@ class DocInternal : public CompAccept<DocInternal>, public DocNode
{
public:
DocInternal(DocNode *parent) : m_parent(parent) {}
- int parse();
+ int parse(int);
Kind kind() const { return Kind_Internal; }
DocNode *parent() const { return m_parent; }
void accept(DocVisitor *v) { CompAccept<DocInternal>::accept(this,v); }
@@ -1103,6 +1103,7 @@ class DocHtmlCaption : public CompAccept<DocHtmlCaption>, public DocNode
private:
DocNode * m_parent;
HtmlAttribList m_attribs;
+ bool m_atTop;
};
/*! @brief Node representing a HTML table row */
@@ -1137,27 +1138,8 @@ class DocHtmlTable : public CompAccept<DocHtmlTable>, public DocNode
bool hasCaption() { return m_caption!=0; }
const HtmlAttribList &attribs() const { return m_attribs; }
int parse();
- uint numCols() const
- {
- uint cols=0;
- QListIterator<DocNode> cli(m_children);
- DocNode *n;
- for (cli.toFirst();(n=cli.current());++cli)
- {
- ASSERT(n->kind()==DocNode::Kind_HtmlRow);
- cols=QMAX(cols,((DocHtmlRow *)n)->numCells());
- }
- return cols;
- }
- void accept(DocVisitor *v)
- {
- v->visitPre(this);
- QListIterator<DocNode> cli(m_children);
- DocNode *n;
- for (cli.toFirst();(n=cli.current());++cli) n->accept(v);
- if (m_caption) m_caption->accept(v);
- v->visitPost(this);
- }
+ uint numCols() const;
+ void accept(DocVisitor *v);
private:
DocNode * m_parent;
diff --git a/src/docvisitor.h b/src/docvisitor.h
index 949781e..3815cbb 100644
--- a/src/docvisitor.h
+++ b/src/docvisitor.h
@@ -19,6 +19,14 @@
#ifndef _DOCVISITOR_H
#define _DOCVISITOR_H
+// ids
+const int DocVisitor_Html = 0;
+const int DocVisitor_Latex = 1;
+const int DocVisitor_XML = 2;
+const int DocVisitor_RTF = 3;
+const int DocVisitor_Man = 4;
+const int DocVisitor_Other = 5;
+
// forward declarations
class DocWord;
class DocWhiteSpace;
@@ -38,7 +46,6 @@ class DocVerbatim;
class DocXRefItem;
class DocHtmlList;
class DocHtmlListItem;
-//class DocHtmlPre;
class DocHtmlDescList;
class DocHtmlDescTitle;
class DocHtmlDescData;
@@ -74,8 +81,12 @@ class DocText;
*/
class DocVisitor
{
+ int m_id;
public:
+ DocVisitor(int id) : m_id(id) {}
virtual ~DocVisitor() {}
+ int id() const { return m_id; }
+
/*! @name Visitor functions for leaf nodes
* @{
*/
@@ -120,8 +131,6 @@ class DocVisitor
virtual void visitPost(DocHtmlListItem *) = 0;
virtual void visitPre(DocHtmlListItem *) = 0;
virtual void visitPost(DocHtmlList *) = 0;
- //virtual void visitPre(DocHtmlPre *) = 0;
- //virtual void visitPost(DocHtmlPre *) = 0;
virtual void visitPre(DocHtmlDescList *) = 0;
virtual void visitPost(DocHtmlDescList *) = 0;
virtual void visitPre(DocHtmlDescTitle *) = 0;
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index c4c88a3..addf597 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -840,6 +840,34 @@ static void buildClassDocList(Entry *root)
}
}
+Definition *buildScopeFromQualifiedName(const QCString name,int level)
+{
+ int i=0;
+ int p=0,l;
+ Definition *prevScope=Doxygen::globalScope;
+ QCString fullScope;
+ while (i<level)
+ {
+ int idx=getScopeFragment(name,p,&l);
+ QCString nsName = name.mid(idx,l);
+ if (!fullScope.isEmpty()) fullScope+="::";
+ fullScope+=nsName;
+ //printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
+ // introduce bogus namespace
+ NamespaceDef *nd=new NamespaceDef(
+ "<generated>",1,fullScope);
+
+ // add namespace to the list
+ Doxygen::namespaceSDict.inSort(fullScope,nd);
+ prevScope->addInnerCompound(nd);
+ nd->setOuterScope(prevScope);
+ p=idx+l+2;
+ prevScope=nd;
+ i++;
+ }
+ return prevScope;
+}
+
static void resolveClassNestingRelations()
{
ClassSDict::Iterator cli(Doxygen::classSDict);
@@ -986,13 +1014,11 @@ static void buildNamespaceList(Entry *root)
//printf("adding namespace %s to context %s\n",nd->name().data(),d?d->name().data():"none");
if (d==0)
{
+ Definition *d = buildScopeFromQualifiedName(fullName,fullName.contains("::"));
+ d->addInnerCompound(nd);
+ nd->setOuterScope(d);
// TODO: Due to the order in which the tag file is written
// a nested class can be found before its parent!
- //
- //warn(root->fileName,root->startLine,
- // "Warning: Internal inconsistency: scope for namespace %s not "
- // "found!\n",fullName.data()
- // );
}
else
{
@@ -2226,8 +2252,8 @@ static void buildFunctionList(Entry *root)
);
// otherwise, allow a duplicate global member with the same argument list
- //printf("combining function with prototype found=%d `%s'<->`%s'!\n",
- // found,fd->absFilePath().data(),root->fileName.data());
+ //printf("combining function with prototype found=%d in namespace %s\n",
+ // found,nsName.data());
// merge argument lists
//mergeArguments(root->argList,md->argumentList());
@@ -2266,10 +2292,19 @@ static void buildFunctionList(Entry *root)
md->setArgumentList(argList);
}
}
+ else if (!md->documentation().isEmpty() && !root->doc.isEmpty())
+ {
+ warn(root->docFile,root->docLine,"Warning: ignoring the detailed description found here, since another one was found at line %d of file %s!",md->docLine(),md->docFile().data());
+ }
+
if (md->briefDescription().isEmpty() && !root->brief.isEmpty())
{
md->setBriefDescription(root->brief,root->briefFile,root->briefLine);
}
+ else if (!md->briefDescription().isEmpty() && !root->brief.isEmpty())
+ {
+ warn(root->briefFile,root->briefLine,"Warning: ignoring the brief description found here, since another one was found at line %d of file %s!",md->briefLine(),md->briefFile().data());
+ }
md->addSectionsToDefinition(root->anchors);
@@ -2279,10 +2314,17 @@ static void buildFunctionList(Entry *root)
if (md->getGroupDef()==0 && root->groups->first())
{
// if we do addMemberToGroups here an undocumented declaration may prevent
- // the documented implementation below from being added
+ // the documented implementation below it from being added
//addMemberToGroups(root,md);
GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()];
- md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, !root->doc.isEmpty());
+ if (gd)
+ {
+ bool success = gd->insertMember(md);
+ if (success)
+ {
+ md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, !root->doc.isEmpty());
+ }
+ }
}
else if (md->getGroupDef()!=0 && root->groups->count()==0)
{
@@ -8198,7 +8240,7 @@ void generateOutput()
cleanUpDoxygen();
if (Debug::isFlagSet(Debug::Time))
{
- printf("Total elapsed time: %.3f seconds\n(of which %.3f seconds waiting for external tools to finish)\n",
+ msg("Total elapsed time: %.3f seconds\n(of which %.3f seconds waiting for external tools to finish)\n",
((double)Doxygen::runningTime.elapsed())/1000.0,
Doxygen::sysElapsedTime
);
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 4fb2be5..8d75de9 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -43,7 +43,7 @@ static QString htmlAttribsToString(const HtmlAttribList &attribs)
//-------------------------------------------------------------------------
HtmlDocVisitor::HtmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
- : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
+ : DocVisitor(DocVisitor_Html), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
{
}
diff --git a/src/index.cpp b/src/index.cpp
index c76b5d6..c4d463a 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -1485,6 +1485,15 @@ void writeAlphabeticalClassList(OutputList &ol)
//if (cd->getNamespaceDef()) namesp=cd->getNamespaceDef()->displayName();
//QCString cname=cd->className();
extractNamespaceName(cd->name(),cname,namesp);
+ QCString nsDispName;
+ if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
+ {
+ nsDispName=substitute(namesp,"::",".");
+ }
+ else
+ {
+ nsDispName=namesp.copy();
+ }
ol.writeObjectLink(cd->getReference(),
cd->getOutputFileBase(),0,cname);
@@ -1495,11 +1504,11 @@ void writeAlphabeticalClassList(OutputList &ol)
if (nd && nd->isLinkable())
{
ol.writeObjectLink(nd->getReference(),
- nd->getOutputFileBase(),0,namesp);
+ nd->getOutputFileBase(),0,nsDispName);
}
else
{
- ol.docify(namesp);
+ ol.docify(nsDispName);
}
ol.docify(")");
}
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index 8b80907..bc20db5 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -80,7 +80,7 @@ QString LatexDocVisitor::escapeMakeIndexChars(const char *s)
LatexDocVisitor::LatexDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
- : m_t(t), m_ci(ci), m_insidePre(FALSE), m_insideItem(FALSE), m_hide(FALSE)
+ : DocVisitor(DocVisitor_Latex), m_t(t), m_ci(ci), m_insidePre(FALSE), m_insideItem(FALSE), m_hide(FALSE)
{
}
@@ -99,7 +99,7 @@ void LatexDocVisitor::visit(DocLinkedWord *w)
if (m_hide) return;
startLink(w->ref(),w->file(),w->anchor());
filter(w->word());
- endLink();
+ endLink(w->ref(),w->file(),w->anchor());
}
void LatexDocVisitor::visit(DocWhiteSpace *w)
@@ -797,10 +797,10 @@ void LatexDocVisitor::visitPre(DocLink *lnk)
startLink(lnk->ref(),lnk->file(),lnk->anchor());
}
-void LatexDocVisitor::visitPost(DocLink *)
+void LatexDocVisitor::visitPost(DocLink *lnk)
{
if (m_hide) return;
- endLink();
+ endLink(lnk->ref(),lnk->file(),lnk->anchor());
}
void LatexDocVisitor::visitPre(DocRef *ref)
@@ -810,10 +810,10 @@ void LatexDocVisitor::visitPre(DocRef *ref)
if (!ref->hasLinkText()) filter(ref->targetTitle());
}
-void LatexDocVisitor::visitPost(DocRef *)
+void LatexDocVisitor::visitPost(DocRef *ref)
{
if (m_hide) return;
- endLink();
+ endLink(ref->ref(),ref->file(),ref->anchor());
}
void LatexDocVisitor::visitPre(DocSecRefItem *)
@@ -942,10 +942,10 @@ void LatexDocVisitor::visitPre(DocInternalRef *ref)
startLink(0,ref->file(),ref->anchor());
}
-void LatexDocVisitor::visitPost(DocInternalRef *)
+void LatexDocVisitor::visitPost(DocInternalRef *ref)
{
if (m_hide) return;
- endLink();
+ endLink(0,ref->file(),ref->anchor());
}
void LatexDocVisitor::visitPre(DocCopy *)
@@ -986,9 +986,16 @@ void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QSt
}
}
-void LatexDocVisitor::endLink()
+void LatexDocVisitor::endLink(const QString &ref,const QString &file,const QString &anchor)
{
m_t << "}";
+ if (ref.isEmpty() && !Config_getBool("PDF_HYPERLINKS"))
+ {
+ m_t << "{\\rm (" << theTranslator->trPageAbbreviation();
+ m_t << "\\,\\pageref{" << file;
+ if (!anchor.isEmpty()) m_t << "_" << anchor;
+ m_t << "})}";
+ }
}
void LatexDocVisitor::pushEnabled()
diff --git a/src/latexdocvisitor.h b/src/latexdocvisitor.h
index f0a8204..0b168d5 100644
--- a/src/latexdocvisitor.h
+++ b/src/latexdocvisitor.h
@@ -135,7 +135,8 @@ class LatexDocVisitor : public DocVisitor
void filter(const char *str);
void startLink(const QString &ref,const QString &file,
const QString &anchor);
- void endLink();
+ void endLink(const QString &ref,const QString &file,
+ const QString &anchor);
QString escapeMakeIndexChars(const char *s);
void pushEnabled();
diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp
index 3353182..2908460 100644
--- a/src/mandocvisitor.cpp
+++ b/src/mandocvisitor.cpp
@@ -27,7 +27,7 @@
#include "message.h"
ManDocVisitor::ManDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
- : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE), m_firstCol(TRUE),
+ : DocVisitor(DocVisitor_Man), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE), m_firstCol(TRUE),
m_indent(0)
{
}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index c9b36c8..dfa8d07 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -84,6 +84,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (defArgList==0) return; // member has no function like argument list
if (!md->isDefine()) ol.docify(" ");
+ //printf("writeDefArgList(%d)\n",defArgList->count());
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.endMemberDocName();
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index 8f38d2d..2574f6b 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -413,7 +413,7 @@ private:
};
PerlModDocVisitor::PerlModDocVisitor(PerlModOutput &output)
- : m_output(output), m_textmode(false)
+ : DocVisitor(DocVisitor_Other), m_output(output), m_textmode(false)
{
m_output.openList("doc");
}
diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h
index b06e0a6..1241659 100644
--- a/src/printdocvisitor.h
+++ b/src/printdocvisitor.h
@@ -25,7 +25,8 @@
class PrintDocVisitor : public DocVisitor
{
public:
- PrintDocVisitor() : m_indent(0), m_needsEnter(FALSE), m_insidePre(FALSE) {}
+ PrintDocVisitor() : DocVisitor(DocVisitor_Other), m_indent(0),
+ m_needsEnter(FALSE), m_insidePre(FALSE) {}
//--------------------------------------
diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp
index ac1febb..2221d2d 100644
--- a/src/rtfdocvisitor.cpp
+++ b/src/rtfdocvisitor.cpp
@@ -28,7 +28,7 @@
#include "message.h"
RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
- : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE), m_indentLevel(1)
+ : DocVisitor(DocVisitor_RTF), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE), m_indentLevel(1)
{
}
diff --git a/src/scanner.l b/src/scanner.l
index 8b47179..9d9d7e3 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -157,6 +157,7 @@ static QCString xrefItemKey;
static QCString xrefItemTitle;
static QCString xrefListTitle;
+static QCString g_skipBlockName;
//-----------------------------------------------------------------------------
@@ -2809,6 +2810,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lastCContext = YY_START;
BEGIN(SkipCxxComment);
}
+<SkipInits>\" {
+ lastStringContext=YY_START;
+ BEGIN( SkipString );
+ }
<SkipInits>; {
warn(yyFileName,yyLineNr,
"Warning: Found ';' while parsing initializer list! "
@@ -3855,31 +3860,37 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<Doc,PageDoc,ClassDoc>{CMD}"verbatim"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->doc+="\\verbatim";
+ g_skipBlockName="verbatim";
BEGIN(SkipVerbatim);
}
<JavaDoc>{CMD}"verbatim"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->brief+="\\verbatim";
+ g_skipBlockName="verbatim";
BEGIN(SkipVerbatim);
}
<Doc,PageDoc,ClassDoc>{CMD}"latexonly"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->doc+="\\latexonly";
+ g_skipBlockName="latexonly";
BEGIN(SkipVerbatim);
}
<JavaDoc>{CMD}"latexonly"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->brief+="\\latexonly";
+ g_skipBlockName="latexonly";
BEGIN(SkipVerbatim);
}
<Doc,PageDoc,ClassDoc>{CMD}"htmlonly"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->doc+="\\htmlonly";
+ g_skipBlockName="htmlonly";
BEGIN(SkipVerbatim);
}
<JavaDoc>{CMD}"htmlonly"/[^a-z_A-Z0-9] {
lastVerbState=YY_START;
current->brief+="\\htmlonly";
+ g_skipBlockName="htmlonly";
BEGIN(SkipVerbatim);
}
<Doc,PageDoc,ClassDoc>{CMD}"addindex"{B}+[^\n]+ {
@@ -3946,7 +3957,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<SkipVerbatim>. {
current->doc+=*yytext;
}
-<SkipCode>{CMD}"endcode" {
+<SkipVerbatim><<EOF>> {
+ warn(yyFileName,yyLineNr,
+ "Warning: reached end of file while inside a @%s block; check for missing @end%s!",g_skipBlockName.data(),g_skipBlockName.data()
+ );
+ yyterminate();
+ }
+<SkipCode>{CMD}"endcode"/[^a-z_A-Z0-9] {
*pSkipDoc+="\\endcode";
BEGIN(lastCodeState);
}
@@ -3975,6 +3992,12 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<SkipCode>. {
*pSkipDoc+=*yytext;
}
+<SkipCode><<EOF>> {
+ warn(yyFileName,yyLineNr,
+ "Warning: reached end of file while inside a @code block; check for missing @endcode!"
+ );
+ yyterminate();
+ }
<AnchorLabel>{LABELID} {
SectionInfo *si = new SectionInfo(yyFileName,yytext,0,SectionInfo::Anchor);
Doxygen::sectionDict.insert(yytext,si);
@@ -4494,6 +4517,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->name = current->name.stripWhiteSpace();
newDocState();
}
+<DefLineDoc,LineDoc,AfterDocLine>{SECTIONCMD} {
+ warn(yyFileName,yyLineNr,"Command %s not allowed in single-line C++ comment! Ignoring.",yytext);
+ }
<Doc>[a-z_A-Z0-9]+ { current->doc += yytext; }
<Doc,PageDoc,AfterDoc,LineDoc,ClassDoc>("\\\\"|"@@") { current->doc += yytext; }
<Doc>. { current->doc += *yytext; }
diff --git a/src/translator_br.h b/src/translator_br.h
index a9066d7..2f433b3 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -16,6 +16,8 @@
* Version: 1.3 (2003/05/01)
*
* History:
+ * 1.3.2:
+ * - Updated to Doxygen 1.3.2
* 1.3:
* - Updated to Doxygen 1.3.x.
* 1.2.19:
@@ -27,7 +29,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
-class TranslatorBrazilian: public TranslatorAdapter_1_3_1
+class TranslatorBrazilian: public Translator
{
public:
@@ -1460,5 +1462,22 @@ class TranslatorBrazilian: public TranslatorAdapter_1_3_1
return "Atributos Estáticos do Pacote";
}
+//////////////////////////////////////////////////////////////////////////
+// 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 "Todos";
+ }
+ /*! Put in front of the call graph for a function. */
+ virtual QCString trCallGraph()
+ {
+ return "Este é o grafo de chamadas para esta função:";
+ }
+
};
#endif
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 7444a10..2bc323e 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -40,7 +40,7 @@
#ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H
-class TranslatorPortuguese : public TranslatorAdapter_1_3_1
+class TranslatorPortuguese : public Translator
{
public:
diff --git a/src/translator_sr.h b/src/translator_sr.h
index 532d54e..8fe5973 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -20,7 +20,7 @@
// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu>
-class TranslatorSerbian : public TranslatorAdapter_1_3_1
+class TranslatorSerbian : public Translator
{
private:
QCString decode(const QCString& sInput)
diff --git a/src/translator_tw.h b/src/translator_tw.h
index a22c39e..bccfece 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -41,7 +41,7 @@
// Translator class (by the local maintainer) when the localized
// translator is made up-to-date again.
-class TranslatorChinesetraditional : public TranslatorAdapter_1_2_16
+class TranslatorChinesetraditional : public Translator
{
public:
diff --git a/src/util.cpp b/src/util.cpp
index 9509c0a..832ff5f 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -641,12 +641,49 @@ ClassDef *getResolvedClass(
}
else // not a typedef
{
- //printf(" not a typedef value\n");
+ //printf(" %s is not a typedef value in scope %s\n",name.data(),scope?scope->name().data():"<global>");
if (pIsTypeDef) *pIsTypeDef=FALSE;
if (scope!=Doxygen::globalScope)
+ {
cd = Doxygen::classSDict.find(scope->name()+"::"+name);
+ }
else
+ {
cd = Doxygen::classSDict.find(name);
+ }
+ if (cd==0)
+ {
+ if (scope->definitionType()==Definition::TypeNamespace)
+ {
+ NamespaceDef *nscope = (NamespaceDef*)scope;
+ ClassList *cl = nscope->getUsedClasses();
+ if (cl) // see if the class was imported via a using statement
+ {
+ ClassListIterator cli(*cl);
+ ClassDef *ucd;
+ for (cli.toFirst();(ucd=cli.current());++cli)
+ {
+ //printf("comparing %s<->%s\n",ucd->name().data(),name.data());
+ if (rightScopeMatch(ucd->name(),name))
+ {
+ cd=ucd;
+ break;
+ }
+ }
+ }
+ NamespaceList *nl = nscope->getUsedNamespaces();
+ if (nl) // check used namespaces for the class
+ {
+ NamespaceListIterator nli(*nl);
+ NamespaceDef *und;
+ for (nli.toFirst();(und=nli.current());++nli)
+ {
+ cd = getResolvedClass(und,name,pIsTypeDef,pTemplSpec);
+ if (cd) break;
+ }
+ }
+ }
+ }
if (cd) goto found;
}
@@ -831,7 +868,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n
//int scopeOffset=scopeName.length();
do // for each scope (starting with full scope and going to empty scope)
{
- //printf("Searching in %s...\n",curScope?curScope->name().data():"<global>");
+ //printf("Searching %s in %s...\n",word.data(),curScope?curScope->name().data():"<global>");
QCString fullName = word;
QCString prefix;
replaceNamespaceAliases(fullName,fullName.length());
@@ -2749,7 +2786,7 @@ bool generateLink(OutputDocInterface &od,const char *clName,
//PageDef *pageDef=0;
QCString anchor,linkText=linkToText(lt);
//printf("generateLink linkText=%s\n",linkText.data());
- if (resolveLink(clName,lr,inSeeBlock,&compound,/*&pageInfo,*/anchor))
+ if (resolveLink(clName,lr,inSeeBlock,&compound,anchor))
{
//if (pageInfo) // link to page
//{
diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp
index 4320d17..51dac52 100644
--- a/src/xmldocvisitor.cpp
+++ b/src/xmldocvisitor.cpp
@@ -28,7 +28,7 @@
#include "util.h"
XmlDocVisitor::XmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
- : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
+ : DocVisitor(DocVisitor_XML), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
{
}
@@ -424,13 +424,15 @@ void XmlDocVisitor::visitPost(DocSimpleListItem *)
void XmlDocVisitor::visitPre(DocSection *s)
{
if (m_hide) return;
- m_t << "<sect" << s->level()+1 << " id=\"" << s->id() << "\">";
+ m_t << "<sect" << s->level() << " id=\"" << s->id() << "\">" << endl;
+ m_t << "<title>";
filter(s->title());
- m_t << "</sect" << s->level()+1 << ">\n";
+ m_t << "</title>" << endl;
}
-void XmlDocVisitor::visitPost(DocSection *)
+void XmlDocVisitor::visitPost(DocSection *s)
{
+ m_t << "</sect" << s->level() << ">\n";
}
void XmlDocVisitor::visitPre(DocHtmlList *s)
@@ -575,13 +577,13 @@ void XmlDocVisitor::visitPost(DocHRef *)
void XmlDocVisitor::visitPre(DocHtmlHeader *header)
{
if (m_hide) return;
- m_t << "<heading" << header->level() << ">";
+ m_t << "<heading level=\"" << header->level() << "\">";
}
-void XmlDocVisitor::visitPost(DocHtmlHeader *header)
+void XmlDocVisitor::visitPost(DocHtmlHeader *)
{
if (m_hide) return;
- m_t << "</heading" << header->level() << ">\n";
+ m_t << "</heading>\n";
}
void XmlDocVisitor::visitPre(DocImage *img)
@@ -689,7 +691,7 @@ void XmlDocVisitor::visitPost(DocSecRefList *)
void XmlDocVisitor::visitPre(DocLanguage *l)
{
if (m_hide) return;
- m_t << "<language id=\"" << l->id() << "\">";
+ m_t << "<language langid=\"" << l->id() << "\">";
}
void XmlDocVisitor::visitPost(DocLanguage *)