summaryrefslogtreecommitdiffstats
path: root/src/xmlgen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlgen.cpp')
-rw-r--r--src/xmlgen.cpp144
1 files changed, 124 insertions, 20 deletions
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 463d16a..361b68c 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -35,6 +35,8 @@
#include <qfile.h>
#include <qtextstream.h>
+#define XML_DB(x)
+
QCString sectionTypeToString(BaseOutputDocInterface::SectionTypes t)
{
switch (t)
@@ -147,6 +149,10 @@ template<class T> class ValStack
{
return m_sp==0;
}
+ uint count() const
+ {
+ return m_sp;
+ }
private:
QArray<T> m_values;
@@ -170,11 +176,13 @@ class XMLGenerator : public OutputDocInterface
{
m_inParStack.top() = TRUE;
m_t << "<para>" << endl;
+ XML_DB(("start par at level=%d\n",m_inParStack.count());)
}
else if (m_inParStack.isEmpty())
{
m_inParStack.push(TRUE);
m_t << "<para>" << endl;
+ XML_DB(("start par at level=%d\n",m_inParStack.count());)
}
}
void endParMode()
@@ -183,18 +191,25 @@ class XMLGenerator : public OutputDocInterface
{
m_inParStack.top() = FALSE;
m_t << "</para>" << endl;
+ XML_DB(("end par at level=%d\n",m_inParStack.count());)
}
}
void startNestedPar()
{
m_inParStack.push(FALSE);
+ XML_DB(("enter par level=%d\n",m_inParStack.count());)
}
void endNestedPar()
{
+ XML_DB(("leave par level=%d\n",m_inParStack.count());)
if (m_inParStack.pop())
{
m_t << "</para>" << endl;
}
+ else
+ {
+ XML_DB(("ILLEGAL par level!\n");)
+ }
}
// Standard generator functions to be implemented by all generators
@@ -503,27 +518,47 @@ class XMLGenerator : public OutputDocInterface
}
void startTable(int cols)
{
+ XML_DB(("startTable\n");)
startParMode();
- m_t << "<table><tgroup cols=\"" << cols << "\"><tbody>\n";
+ m_t << "<table cols=\"" << cols << "\">\n";
}
void endTable()
{
- m_t << "</row>\n</tbody></tgroup></table>";
+ XML_DB(("endTable\n");)
+ m_t << "</row>\n</table>";
}
void nextTableRow()
{
+ XML_DB(("nextTableRow\n");)
m_t << "<row><entry>";
+
+ // we need manually add a para here because cells are
+ // parsed before the table is generated, and thus
+ // are already parsed as if they are inside a paragraph.
+ m_t << "<para>";
}
void endTableRow()
{
+ XML_DB(("endTableRow\n");)
m_t << "</row>" << endl;
}
void nextTableColumn()
{
+ XML_DB(("nextTableColumn\n");)
m_t << "<entry>";
+
+ // we need manually add a para here because cells are
+ // parsed before the table is generated, and thus
+ // are already parsed as if they are inside a paragraph.
+ m_t << "<para>";
}
void endTableColumn()
{
+ XML_DB(("endTableColumn\n");)
+ // we need manually add a para here because cells are
+ // parsed before the table is generated, and thus
+ // are already parsed as if they are inside a paragraph.
+ m_t << "</para>";
m_t << "</entry>";
}
@@ -614,13 +649,16 @@ class XMLGenerator : public OutputDocInterface
void endPageRef(const char *,const char *)
{
}
- void startLineNumber()
- {
- m_t << "<linenumber>";
- }
- void endLineNumber()
+ void writeLineNumber(const char *,const char *file, // TODO: support external references
+ const char *anchor,int l)
{
- m_t << "</linenumber>";
+ m_t << "<linenumber";
+ m_t << " line=\"" << l << "\"";
+ if (file)
+ {
+ m_t << " refid=\"" << file << "_1" << anchor << "\"";
+ }
+ m_t << "/>";
}
void startCodeLine()
{
@@ -665,15 +703,7 @@ class XMLGenerator : public OutputDocInterface
{
const XMLGenerator *xg = (const XMLGenerator *)g;
- //if (m_inPar && !mifgen->m_inParStart)
- //{
- // endParMode();
- //}
- //else if (!m_inPar && mifgen->m_inParStart)
- //{
- // startParMode();
- //}
- //printf("Appending \n>>>>\n`%s'\n<<<<\n and \n>>>>\n`%s'\n<<<<\n",getContents().data(),mifgen->getContents().data());
+ //printf("Appending \n>>>>\n`%s'\n<<<<\n and \n>>>>\n`%s'\n<<<<\n",getContents().data(),xg->getContents().data());
m_t << xg->getContents();
m_inParStack = xg->m_inParStack;
m_inListStack = xg->m_inListStack;
@@ -697,6 +727,9 @@ class XMLGenerator : public OutputDocInterface
m_t.setDevice(&m_b);
m_t.setEncoding(QTextStream::Latin1);
+ //printf("Cloning >>%s<< m_parStack.count()=%d\n",
+ // xg->getContents().data(),xg->m_inParStack.count());
+
// copy state variables
m_inParStack = xg->m_inParStack;
m_inListStack = xg->m_inListStack;
@@ -779,6 +812,18 @@ void writeXMLCodeBlock(QTextStream &t,FileDef *fd)
void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
{
+
+ // + declaration
+ // - reimplements
+ // - reimplementedBy
+ // - exceptions
+ // - const/volatile specifiers
+ // - examples
+ // + source definition
+ // - source references
+ // - source referenced by
+ // - include code
+
if (md->memberType()==MemberDef::EnumValue) return;
QCString scopeName;
@@ -942,9 +987,67 @@ void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md->name(),md->documentation());
t << " </detaileddescription>" << endl;
- t << " <location file=\""
- << md->getDefFileName() << "\" line=\""
- << md->getDefLine() << "\"/>" << endl;
+ if (md->getDefLine()!=-1)
+ {
+ t << " <location file=\""
+ << md->getDefFileName() << "\" line=\""
+ << md->getDefLine() << "\"/>" << endl;
+ }
+
+ printf("md->getReferencesMembers()=%p\n",md->getReferencesMembers());
+ if (md->getReferencesMembers())
+ {
+ MemberSDict::Iterator mdi(*md->getReferencesMembers());
+ MemberDef *rmd;
+ for (mdi.toFirst();(rmd=mdi.current());++mdi)
+ {
+ if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
+ {
+ t << " <references id=\"";
+ t << rmd->getBodyDef()->getOutputFileBase()
+ << "_1" // encoded `:' character (see util.cpp:convertNameToFile)
+ << rmd->anchor()
+ << "\" line=\""
+ << rmd->getStartBodyLine()
+ << "\">";
+ QCString scope = rmd->getScopeString();
+ QCString name = rmd->name();
+ if (!scope.isEmpty() && scope!=def->name())
+ {
+ name.prepend(scope+"::");
+ }
+ writeXMLString(t,name);
+ t << "</references>" << endl;
+ }
+ }
+ }
+ if (md->getReferencedByMembers())
+ {
+ MemberSDict::Iterator mdi(*md->getReferencedByMembers());
+ MemberDef *rmd;
+ for (mdi.toFirst();(rmd=mdi.current());++mdi)
+ {
+ if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
+ {
+ t << " <referencedby id=\"";
+ t << rmd->getBodyDef()->getOutputFileBase()
+ << "_1" // encoded `:' character (see util.cpp:convertNameToFile)
+ << rmd->anchor()
+ << "\" line=\""
+ << rmd->getStartBodyLine()
+ << "\">";
+ QCString scope = rmd->getScopeString();
+ QCString name = rmd->name();
+ if (!scope.isEmpty() && scope!=def->name())
+ {
+ name.prepend(scope+"::");
+ }
+ writeXMLString(t,name);
+ t << "</referencedby>" << endl;
+ }
+ }
+ }
+
t << " </memberdef>" << endl;
}
@@ -980,6 +1083,7 @@ void generateXMLForClass(ClassDef *cd,QTextStream &t)
// + user defined member sections
// + standard member sections
// + detailed member documentation
+ // - examples
if (cd->isReference()) return; // skip external references.
if (cd->name().find('@')!=-1) return; // skip anonymous compounds.
d class='add' style='width: 0.5%;'/> -rw-r--r--src/diagram.h2
-rw-r--r--src/dirdef.cpp2
-rw-r--r--src/dirdef.h2
-rw-r--r--src/docparser.cpp6
-rw-r--r--src/docparser.h2
-rw-r--r--src/doctokenizer.h2
-rw-r--r--src/doctokenizer.l5
-rw-r--r--src/docvisitor.h2
-rw-r--r--src/dot.cpp48
-rw-r--r--src/dot.h2
-rw-r--r--src/doxygen.cpp139
-rw-r--r--src/doxygen.h2
-rw-r--r--src/doxygen.pro.in8
-rw-r--r--src/doxytag.l4
-rw-r--r--src/doxytag.pro.in2
-rw-r--r--src/doxytag.t2
-rw-r--r--src/entry.cpp2
-rw-r--r--src/entry.h2
-rw-r--r--src/example.h2
-rw-r--r--src/filedef.cpp15
-rw-r--r--src/filedef.h2
-rw-r--r--src/filename.cpp2
-rw-r--r--src/filename.h2
-rw-r--r--src/formula.cpp21
-rw-r--r--src/formula.h2
-rw-r--r--src/groupdef.cpp9
-rw-r--r--src/groupdef.h2
-rw-r--r--src/htags.cpp5
-rw-r--r--src/htags.h2
-rw-r--r--src/htmlattrib.h2
-rw-r--r--src/htmldocvisitor.cpp4
-rw-r--r--src/htmldocvisitor.h2
-rw-r--r--src/htmlgen.cpp11
-rw-r--r--src/htmlgen.h2
-rw-r--r--src/htmlhelp.cpp2
-rw-r--r--src/htmlhelp.h2
-rw-r--r--src/image.cpp2
-rw-r--r--src/image.h2
-rw-r--r--src/index.cpp2
-rw-r--r--src/index.h2
-rw-r--r--src/instdox.cpp2
-rw-r--r--src/instdox.h2
-rw-r--r--src/language.cpp67
-rw-r--r--src/language.h2
-rw-r--r--src/latexdocvisitor.cpp2
-rw-r--r--src/latexdocvisitor.h2
-rw-r--r--src/latexgen.cpp21
-rw-r--r--src/latexgen.h2
-rw-r--r--src/libdoxycfg.pro.in6
-rw-r--r--src/libdoxycfg.t2
-rw-r--r--src/libdoxygen.pro.in2
-rw-r--r--src/libdoxygen.t2
-rw-r--r--src/lockingptr.h2
-rw-r--r--src/logos.cpp2
-rw-r--r--src/logos.h2
-rw-r--r--src/main.cpp2
-rw-r--r--src/mandocvisitor.cpp2
-rw-r--r--src/mandocvisitor.h2
-rw-r--r--src/mangen.cpp2
-rw-r--r--src/mangen.h2
-rw-r--r--src/memberdef.cpp18
-rw-r--r--src/memberdef.h4
-rw-r--r--src/membergroup.cpp2
-rw-r--r--src/membergroup.h2
-rw-r--r--src/memberlist.cpp2
-rw-r--r--src/memberlist.h2
-rw-r--r--src/membername.cpp2
-rw-r--r--src/membername.h2
-rw-r--r--src/message.cpp2
-rw-r--r--src/message.h2
-rw-r--r--src/namespacedef.cpp3
-rw-r--r--src/namespacedef.h2
-rw-r--r--src/objcache.cpp2
-rw-r--r--src/objcache.h2
-rw-r--r--src/outputgen.cpp35
-rw-r--r--src/outputgen.h5
-rw-r--r--src/outputlist.cpp2
-rw-r--r--src/outputlist.h2
-rw-r--r--src/pagedef.h2
-rw-r--r--src/parserintf.h2
-rw-r--r--src/perlmodgen.cpp2
-rw-r--r--src/perlmodgen.h2
-rw-r--r--src/pngenc.cpp2
-rw-r--r--src/pngenc.h2
-rw-r--r--src/portable.cpp385
-rw-r--r--src/portable.h38
-rw-r--r--src/pre.h2
-rw-r--r--src/pre.l16
-rw-r--r--src/printdocvisitor.h2
-rw-r--r--src/pycode.h2
-rw-r--r--src/pycode.l2
-rw-r--r--src/pyscanner.h2
-rw-r--r--src/pyscanner.l2
-rw-r--r--src/qtbc.h2
-rw-r--r--src/reflist.cpp2
-rw-r--r--src/reflist.h2
-rw-r--r--src/rtfdocvisitor.cpp44
-rw-r--r--src/rtfdocvisitor.h2
-rw-r--r--src/rtfgen.cpp48
-rw-r--r--src/rtfgen.h5
-rw-r--r--src/rtfstyle.cpp2
-rw-r--r--src/rtfstyle.h2
-rw-r--r--src/scanner.h2
-rw-r--r--src/scanner.l2
-rw-r--r--src/searchindex.cpp2
-rw-r--r--src/searchindex.h2
-rw-r--r--src/section.h2
-rw-r--r--src/sortdict.h2
-rw-r--r--src/store.cpp71
-rw-r--r--src/store.h15
-rw-r--r--src/tagreader.cpp2
-rw-r--r--src/tagreader.h2
-rw-r--r--src/textdocvisitor.cpp2
-rw-r--r--src/textdocvisitor.h2
-rw-r--r--src/translator.h2
-rw-r--r--src/translator_ar.h4
-rw-r--r--src/translator_br.h4
-rw-r--r--src/translator_ca.h5
-rw-r--r--src/translator_cn.h2
-rw-r--r--src/translator_cz.h35
-rw-r--r--src/translator_de.h7
-rw-r--r--src/translator_dk.h3
-rw-r--r--src/translator_en.h2
-rw-r--r--src/translator_es.h422
-rw-r--r--src/translator_fa.h2
-rw-r--r--src/translator_fi.h2
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_gr.h5
-rw-r--r--src/translator_hr.h30
-rw-r--r--src/translator_hu.h5
-rw-r--r--src/translator_id.h4
-rw-r--r--src/translator_it.h2
-rw-r--r--src/translator_je.h16
-rw-r--r--src/translator_jp.h36
-rw-r--r--src/translator_ke.h2
-rw-r--r--src/translator_kr.h6
-rw-r--r--src/translator_lt.h5
-rw-r--r--src/translator_nl.h2
-rw-r--r--src/translator_no.h3
-rw-r--r--src/translator_pl.h33
-rw-r--r--src/translator_pt.h2
-rw-r--r--src/translator_ro.h4
-rw-r--r--src/translator_ru.h46
-rw-r--r--src/translator_se.h4
-rw-r--r--src/translator_si.h12
-rw-r--r--src/translator_sk.h20
-rw-r--r--src/translator_sr.h241
-rw-r--r--src/translator_tw.h2
-rw-r--r--src/translator_ua.h28
-rw-r--r--src/translator_za.h2
-rw-r--r--src/translatordecoder.h658
-rw-r--r--src/unistd.h7
-rw-r--r--src/util.cpp325
-rw-r--r--src/util.h10
-rw-r--r--src/version.h2
-rw-r--r--src/xmldocvisitor.cpp2
-rw-r--r--src/xmldocvisitor.h2
-rw-r--r--src/xmlgen.cpp10
-rw-r--r--src/xmlgen.h2
193 files changed, 2528 insertions, 1112 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index e9decc4..bef323e 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -2,7 +2,7 @@
#
#
#
-# Copyright (C) 1997-2006 by Dimitri van Heesch.
+# Copyright (C) 1997-2007 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
diff --git a/src/bufstr.h b/src/bufstr.h
index 3fcdd1d..3d33cce 100644
--- a/src/bufstr.h
+++ b/src/bufstr.h
@@ -3,7 +3,7 @@
*
*
*
- * Copyright (C) 1997-2006 by Dimitri van Heesch.
+ * Copyright (C) 1997-2007 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
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 6d00ea5..e815517 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2006 by Dimitri van Heesch.
+ * Copyright (C) 1997-2007 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
@@ -359,6 +359,8 @@ void ClassDef::internalInsertMember(MemberDef *md,
bool addToAllList
)
{
+ if (md->isHidden()) return;
+
//printf("adding %s::%s\n",name().data(),md->name().data());
if (!isReference())
{
@@ -2043,6 +2045,7 @@ bool ClassDef::isBaseClass(ClassDef *bcd, bool followInstances,int level)
if (level>256)
{
err("Possible recursive class relation while inside %s and looking for %s\n",name().data(),bcd->name().data());
+ abort();
return FALSE;
}
if (baseClasses())
diff --git a/src/classdef.h b/src/classdef.h
index 5d745bf..2153def 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2006 by Dimitri van Heesch.
+ * Copyright (C) 1997-2007 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
diff --git a/src/classlist.cpp b/src/classlist.cpp
index 67507d6..0e9de89 100644
--- a/src/classlist.cpp
+++ b/src/classlist.cpp
@@ -2,7 +2,7 @@
*
*
*
- * Copyright (C) 1997-2006 by Dimitri van Heesch.
+ * Copyright (C) 1997-2007 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
diff --git a/src/classlist.h b/src/classlist.h