summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doxyfile4
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--addon/doxmlparser/doxygen.dtd225
-rw-r--r--addon/doxmlparser/include/doxmlintf.h52
-rw-r--r--addon/doxmlparser/src/compoundhandler.cpp4
-rw-r--r--addon/doxmlparser/src/dochandler.cpp95
-rw-r--r--addon/doxmlparser/src/dochandler.h207
-rw-r--r--addon/doxmlparser/src/doxmlintf.h52
-rw-r--r--addon/doxmlparser/src/linkedtexthandler.cpp7
-rw-r--r--addon/doxmlparser/test/main.cpp198
-rw-r--r--addon/doxywizard/Makefile.in11
-rw-r--r--addon/doxywizard/Makefile.win_nmake.in3
-rw-r--r--addon/doxywizard/doxywizard.cpp6
-rw-r--r--addon/doxywizard/doxywizard.pro.in12
-rwxr-xr-xconfigure8
-rw-r--r--doc/htmlcmds.doc2
-rw-r--r--doc/language.doc17
-rw-r--r--doc/lists.doc29
-rw-r--r--doc/maintainers.txt3
-rw-r--r--packages/rpm/doxygen.spec2
-rw-r--r--src/classdef.cpp120
-rw-r--r--src/config.l1
-rw-r--r--src/doc.l147
-rw-r--r--src/dot.cpp33
-rw-r--r--src/dot.h6
-rw-r--r--src/doxygen.cpp6
-rw-r--r--src/groupdef.cpp9
-rw-r--r--src/groupdef.h2
-rw-r--r--src/htmlgen.cpp1
-rw-r--r--src/htmlgen.h10
-rw-r--r--src/index.cpp124
-rw-r--r--src/latexgen.h22
-rw-r--r--src/mangen.h6
-rw-r--r--src/memberdef.cpp13
-rw-r--r--src/memberdef.h6
-rw-r--r--src/membergroup.cpp10
-rw-r--r--src/membergroup.h4
-rw-r--r--src/outputgen.h6
-rw-r--r--src/outputlist.h12
-rw-r--r--src/pre.l13
-rw-r--r--src/rtfgen.h14
-rw-r--r--src/scanner.l48
-rw-r--r--src/translator.cpp78
-rw-r--r--src/translator.h3
-rw-r--r--src/translator_jp.h995
-rw-r--r--src/translator_sk.h17
-rw-r--r--src/util.cpp34
-rw-r--r--src/util.h5
-rw-r--r--src/xmlgen.cpp47
51 files changed, 1901 insertions, 838 deletions
diff --git a/Doxyfile b/Doxyfile
index e42f3d6..692f99d 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -140,7 +140,7 @@ MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
-GENERATE_XML = NO
+GENERATE_XML = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
@@ -168,7 +168,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
-HAVE_DOT = NO
+HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
diff --git a/INSTALL b/INSTALL
index 91de7e1..2cba327 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,6 +1,6 @@
-DOXYGEN Version 1.2.13
+DOXYGEN Version 1.2.13.1
Please read the installation section of the manual for instructions.
--------
-Dimitri van Heesch (29 December 2001)
+Dimitri van Heesch (05 January 2002)
diff --git a/README b/README
index 68d7eab..c6e56f8 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.2.13
+DOXYGEN Version 1.2.13.1
Please read INSTALL for compilation instructions.
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
-Dimitri van Heesch (dimitri@stack.nl) (29 December 2001)
+Dimitri van Heesch (dimitri@stack.nl) (05 January 2002)
diff --git a/VERSION b/VERSION
index 0b1f1ed..ed9d0d3 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.13
+1.2.13.1
diff --git a/addon/doxmlparser/doxygen.dtd b/addon/doxmlparser/doxygen.dtd
index 5b293d0..319b776 100644
--- a/addon/doxmlparser/doxygen.dtd
+++ b/addon/doxmlparser/doxygen.dtd
@@ -1,37 +1,79 @@
-<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-<!-- NOTE: THIS DTD IS NOT UP TO DATE!!! DO NOT DEPEND ON IT -->
-<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- DTD describing the grammar used in doxygen's XML output -->
+<!-- Version 0.1 December 25, 2001 -->
+<!-- Defined by Angelo Hulshout, based on works of Dimitri van Heesch -->
<!-- standard character entities -->
-<!ENTITY lt "&#38;#60;">
-<!ENTITY gt "&#62;">
-<!ENTITY amp "&#38;#38;">
-<!ENTITY apos "&#39;">
-<!ENTITY quot "&#34;">
-
-<!-- required attributes for compounds -->
-<!ENTITY % compound-req.att
+<!ENTITY lt "&#38;#60;">
+<!ENTITY gt "&#62;">
+<!ENTITY amp "&#38;#38;">
+<!ENTITY apos "&#39;">
+<!ENTITY quot "&#34;">
+
+<!--
+ Document root
+-->
+<!ELEMENT doxygen (compounddef)*>
+
+<!--
+ Compound related entities and elements
+-->
+<!ENTITY % compound-req.att
'id ID #REQUIRED
- type (group|file|namespace|
+ kind (group|file|namespace|
class|struct|union|
interface|dispinterface|
valuetype|library) #REQUIRED'
>
-<!-- required attributes for references -->
<!ENTITY % ref-req.att 'idref IDREF #REQUIRED'
>
-<!-- required attributes for inheritance relations -->
<!ENTITY % inheritcompref-req.att
'%ref-req.att;
prot (public|protected|private) #REQUIRED
virt (non-virtual|virtual) #REQUIRED'
>
+<!ELEMENT compounddef (compoundname,
+ basecompoundref*,
+ derivedcompoundref*,
+ sectiondef*,
+ briefdescription,
+ detaileddescription,
+ inheritancegraph?,
+ collaborationgraph?,
+ programlisting?,
+ sourcecode?,
+ location?
+ )
+>
+<!ATTLIST compounddef %compound-req.att;>
+
+<!ELEMENT compoundname (#PCDATA)>
+
+<!ELEMENT location (#PCDATA)>
+<!ATTLIST location file CDATA #REQUIRED line CDATA #REQUIRED >
+
+<!ELEMENT compoundref EMPTY>
+<!ATTLIST compoundref %ref-req.att;>
+
+<!ELEMENT basecompoundref EMPTY>
+<!ATTLIST basecompoundref %inheritcompref-req.att;>
+
+<!ELEMENT derivedcompoundref EMPTY>
+<!ATTLIST derivedcompoundref %inheritcompref-req.att;>
+
+<!ELEMENT memberdef (#PCDATA|type|name|briefdescription|detaileddescription|location|param|initializer|enumvalue)*>
+<!ATTLIST memberdef kind (define|property|variable|typedef|enum|function|signal|prototype|friend|dcop|slot) #REQUIRED id CDATA #REQUIRED virt (normal|virtual|pure-virtual) #REQUIRED prot (public|protected|private) #REQUIRED>
+
+<!ELEMENT briefdescription (#PCDATA|para)*>
+
+<!ELEMENT detaileddescription (#PCDATA|para)*>
+
+<!--
+ Compound attributes related entities and elements
+-->
<!-- required attributes for member sections -->
-<!ENTITY % sec-req.att 'type (user
+<!ENTITY % sec-req.att 'kind (user
|public-type
|public-func
|public-attrib
@@ -59,65 +101,148 @@
) #REQUIRED
'
>
-<!-- required attributes for members -->
<!ENTITY % mem-req.att 'id ID #REQUIRED'>
<!-- optional attributes for function -->
<!ENTITY % func-opt.att 'virt (virtual|pure-virtual) #IMPLIED'>
-<!-- elements -->
-<!ELEMENT doxygen (compounddef)*>
-<!ELEMENT compounddef (compoundname,
- basecompoundref*,
- derivedcompoundref*,
- sectiondef*,
- briefdescription,
- detaileddescription,
- inheritancegraph?,
- collaborationgraph?,
- sourcecode?
- )
->
-<!ATTLIST compounddef %compound-req.att;>
-<!ELEMENT compoundref (#PCDATA)>
-<!ATTLIST compoundref %ref-req.att;>
<!ELEMENT memberref (#PCDATA)>
<!ATTLIST memberref %ref-req.att;>
-<!ELEMENT basecompoundref EMPTY>
-<!ATTLIST basecompoundref %inheritcompref-req.att;>
-<!ELEMENT derivedcompoundref EMPTY>
-<!ATTLIST derivedcompoundref %inheritcompref-req.att;>
+
<!ELEMENT sectionlist (sectiondef)+>
-<!ELEMENT sectiondef (memberlist)>
+
+<!ELEMENT sectiondef (memberdef|memberlist)*>
<!ATTLIST sectiondef %sec-req.att;>
+
<!ELEMENT memberlist (functiondef|variabledef|typedef|definedef|enumdef)+>
-<!ELEMENT functiondef (type?,name,paramlist)>
+
+<!ELEMENT functiondef (type?,name,parameterlist)>
<!ATTLIST functiondef %mem-req.att; %func-opt.att;>
+
<!ELEMENT variabledef (type,name,array?,initializer?)>
<!ATTLIST variabledef %mem-req.att;>
+
+<!ELEMENT parameterlist (title|parametername|parameterdescription)*>
+<!ATTLIST parameterlist kind (param|retval|exception) #REQUIRED>
+
+<!ELEMENT param (attributes?,type?,declname?,defname?,array?,defval?)>
+
+<!ELEMENT parametername (#PCDATA)>
+
+<!ELEMENT parameterdescription (#PCDATA|para)*>
+
+<!ELEMENT defparameterlist (defarg)*>
+
+<!ELEMENT defarg (#PCDATA)>
+
+<!--
+ Programming language declaration related entities and elements
+-->
+<!ELEMENT name (#PCDATA)>
+
<!ELEMENT typedef (type,name)>
<!ATTLIST typedef %mem-req.att;>
-<!ELEMENT definedef (name,defparamlist?,initializer?)>
+
+<!ELEMENT definedef (name,defparameterlist?,initializer?)>
<!ATTLIST definedef %mem-req.att;>
+
<!ELEMENT enumdef (name,enumvaluelist)>
<!ATTLIST enumdef %mem-req.att;>
-<!ELEMENT slotdef (type,name,paramlist)>
+
+<!ELEMENT slotdef (type,name,parameterlist)>
<!ATTLIST slotdef %mem-req.att;>
-<!ELEMENT signaldef (type,name,paramlist)>
+
+<!ELEMENT signaldef (type,name,parameterlist)>
<!ATTLIST signaldef %mem-req.att;>
-<!ELEMENT paramlist (param)*>
-<!ELEMENT param (attributes?,type,declname?,defname?,array?,defval?)>
-<!ELEMENT defparamlist (defarg)*>
-<!ELEMENT defarg (#PCDATA)>
+
<!ELEMENT enumvaluelist (enumvalue)*>
+
<!ELEMENT enumvalue (name,initializer?)>
-<!ELEMENT name (#PCDATA)>
-<!ELEMENT compoundname (#PCDATA)>
+
<!ELEMENT declname (#PCDATA)>
+
<!ELEMENT defname (#PCDATA)>
-<!ELEMENT type (#PCDATA|memberref|compoundref|compounddef)*>
+
+<!ELEMENT type (#PCDATA|memberref|compoundref|compounddef|ref)*>
+
<!ELEMENT defval (#PCDATA|memberref|compoundref)*>
-<!ELEMENT initializer (#PCDATA|memberref|compoundref)*>
+
+<!ELEMENT initializer (#PCDATA|memberref|compoundref|ref)*>
+
<!ELEMENT array (#PCDATA)>
+
<!ELEMENT attributes (#PCDATA)>
+<!--
+ Graph related entities and elements
+-->
+<!ELEMENT collaborationgraph (node)*>
+
+<!ELEMENT inheritancegraph (node)*>
+
+<!ELEMENT node (label|link|childnode)*>
+<!ATTLIST node id CDATA #REQUIRED>
+
+<!ELEMENT childnode (edgelabel)*>
+<!ATTLIST childnode id CDATA #REQUIRED relation CDATA #REQUIRED>
+
+<!ELEMENT label (#PCDATA)>
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link id CDATA #REQUIRED>
+
+<!ELEMENT edgelabel (#PCDATA)>
+
+<!--
+ Source code listing related entities and elements
+-->
+<!ELEMENT codeline (#PCDATA|highlight|ref)*>
+
+<!ELEMENT linenumber (#PCDATA|anchor)*>
+<!ATTLIST linenumber line CDATA #IMPLIED refid CDATA #IMPLIED>
+
+<!ELEMENT sourcecode (linenumber|codeline|highlight|ref)*>
+
+<!ELEMENT itemizedlist (listitem)*>
+
+<!ELEMENT listitem (#PCDATA|para)*>
+
+<!ELEMENT programlisting (#PCDATA|linenumber|codeline|linebreak|highlight)*>
+
+<!--
+ Hypertext related entities and elements
+-->
+<!ELEMENT ulink (#PCDATA)>
+<!ATTLIST ulink url CDATA #REQUIRED>
+
+<!ELEMENT anchor (ref)>
+<!ATTLIST anchor id CDATA #REQUIRED>
+
+<!ELEMENT ref (#PCDATA)>
+<!ATTLIST ref idref CDATA #REQUIRED anchor CDATA #IMPLIED>
+
+<!--
+ Documentation layout entities and elements
+-->
+<!--ELEMENT highlight (#PCDATA|ref)*-->
+<!ELEMENT highlight ANY>
+<!ATTLIST highlight class (preprocessor|keyword|keywordtype|keywordflow|stringliteral|charliteral|comment) #REQUIRED>
+
+<!ELEMENT linebreak EMPTY>
+
+<!--ELEMENT simplesect (title|para)*-->
+<!ELEMENT simplesect ANY>
+<!ATTLIST simplesect kind (see|return|author|version|since|date|bug|note|warning|par|deprecated|pre|post|invariant|remark|attention|todo|test|rcs|enumvalues|examples) #REQUIRED>
+
+<!--ELEMENT computeroutput (#PCDATA)-->
+<!ELEMENT computeroutput ANY>
+
+<!--ELEMENT emphasis (#PCDATA|ref)*-->
+<!ELEMENT emphasis ANY>
+
+<!--ELEMENT title (#PCDATA|ref)*-->
+<!ELEMENT title ANY>
+
+<!--ELEMENT para (#PCDATA|computeroutput|ref|emphasis|parameterlist|simplesect|ulink|programlisting|itemizedlist|linebreak)*-->
+<!ELEMENT para ANY>
+
diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h
index ec2950c..390e9bb 100644
--- a/addon/doxmlparser/include/doxmlintf.h
+++ b/addon/doxmlparser/include/doxmlintf.h
@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText
class ILT_Ref : public ILinkedText
{
public:
+ enum TargetKind { Member, Compound };
virtual QString id() const = 0;
+ virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
};
@@ -104,8 +106,8 @@ class IDoc
Para, // 0 -> IDocPara
Text, // 1 -> IDocText
MarkupModifier, // 2 -> IDocMarkupModifier
- ItemizedList, // 3 -> IDocList
- OrderedList, // 4 -> IDocList
+ ItemizedList, // 3 -> IDocItemizedList
+ OrderedList, // 4 -> IDocOrderedList
ListItem, // 5 -> IDocListItem
ParameterList, // 6 -> IDocParameterList
Parameter, // 7 -> IDocParameter
@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup
class IDocMarkupModifier : public IDoc
{
+ public:
+ virtual bool enabled() const = 0;
+ virtual int markup() const = 0;
+};
+
+class IDocItemizedList : public IDoc
+{
+ public:
+ virtual IDocIterator *elements() const = 0;
};
-class IDocList : public IDoc
+class IDocOrderedList : public IDoc
{
+ public:
+ virtual IDocIterator *elements() const = 0;
};
class IDocListItem : public IDoc
{
+ public:
+ virtual IDocIterator *contents() const = 0;
};
class IDocParameterList : public IDoc
{
+ public:
+ enum Types { Param, RetVal, Exception };
+ virtual Types listType() const = 0;
+ virtual IDocIterator *params() const = 0;
};
class IDocParameter : public IDoc
{
+ public:
+ virtual QString name() const = 0;
+ virtual IDocPara *description() const = 0;
};
-class IDocSimpleSect : public IDoc
+class IDocTitle : public IDoc
{
+ public:
+ virtual IDocIterator *title() const = 0;
};
-class IDocTitle : public IDoc
+class IDocSimpleSect : public IDoc
{
public:
- virtual IDocIterator *title() const = 0;
+ enum Types { Invalid = 0,
+ See, Return, Author, Version,
+ Since, Date, Bug, Note,
+ Warning, Par, Deprecated, Pre,
+ Post, Invar, Remark, Attention,
+ Todo, Test, RCS, EnumValues,
+ Examples
+ };
+ virtual Types sectionType() const = 0;
+ virtual IDocTitle *title() const = 0;
+ virtual IDocPara *description() const = 0;
};
class IDocRef : public IDoc
{
+ public:
+ enum TargetKind { Member, Compound };
+ virtual QString id() const = 0;
+ virtual TargetKind targetKind() const = 0;
+ virtual QString external() const = 0;
+ virtual QString text() const = 0;
};
class IDocVariableList : public IDoc
diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp
index 0b420bf..1ce6c6b 100644
--- a/addon/doxmlparser/src/compoundhandler.cpp
+++ b/addon/doxmlparser/src/compoundhandler.cpp
@@ -111,7 +111,7 @@ void CompoundHandler::endCompoundName()
void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
{
SuperClass *sc=new SuperClass(
- attrib.value("idref"),
+ attrib.value("refid"),
attrib.value("prot"),
attrib.value("virt")
);
@@ -125,7 +125,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
void CompoundHandler::addSubClass(const QXmlAttributes& attrib)
{
SubClass *sc = new SubClass(
- attrib.value("idref"),
+ attrib.value("refid"),
attrib.value("prot"),
attrib.value("virt")
);
diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp
index 3350cf4..b670de2 100644
--- a/addon/doxmlparser/src/dochandler.cpp
+++ b/addon/doxmlparser/src/dochandler.cpp
@@ -232,47 +232,85 @@ void ListItemHandler::startParagraph(const QXmlAttributes& attrib)
m_children.append(parHandler);
}
+IDocIterator *ListItemHandler::contents() const
+{
+ return new ListItemIterator(*this);
+}
+
//----------------------------------------------------------------------
-// ListHandler
+// OrderedListHandler
//----------------------------------------------------------------------
-ListHandler::ListHandler(Kind k,IBaseHandler *parent)
- : m_parent(parent), m_kind(k)
+OrderedListHandler::OrderedListHandler(IBaseHandler *parent) : m_parent(parent)
{
m_children.setAutoDelete(TRUE);
- const char *endListName=0;
- switch(k)
- {
- case ItemizedList : endListName="itemizedlist"; break;
- case OrderedList : endListName="orderedlist"; break;
- default: ASSERT(0);
- }
- addEndHandler(endListName,this,&ListHandler::endList);
+ addEndHandler("orderedlist",this,&OrderedListHandler::endOrderedList);
+ addStartHandler("listitem",this,&OrderedListHandler::startOrderedListItem);
+}
- addStartHandler("listitem",this,&ListHandler::startListItem);
+OrderedListHandler::~OrderedListHandler()
+{
+}
+
+void OrderedListHandler::startOrderedList(const QXmlAttributes& /*attrib*/)
+{
+ m_parent->setDelegate(this);
}
-ListHandler::~ListHandler()
+void OrderedListHandler::endOrderedList()
{
+ m_parent->setDelegate(0);
}
-void ListHandler::startList(const QXmlAttributes& /*attrib*/)
+void OrderedListHandler::startOrderedListItem(const QXmlAttributes& attrib)
+{
+ ListItemHandler *liHandler = new ListItemHandler(this);
+ liHandler->startListItem(attrib);
+ m_children.append(liHandler);
+}
+
+IDocIterator *OrderedListHandler::elements() const
+{
+ return new OrderedListIterator(*this);
+}
+
+//----------------------------------------------------------------------
+// ItemizedListHandler
+//----------------------------------------------------------------------
+
+ItemizedListHandler::ItemizedListHandler(IBaseHandler *parent) : m_parent(parent)
+{
+ m_children.setAutoDelete(TRUE);
+ addEndHandler("itemizedlist",this,&ItemizedListHandler::endItemizedList);
+ addStartHandler("listitem",this,&ItemizedListHandler::startItemizedListItem);
+}
+
+ItemizedListHandler::~ItemizedListHandler()
+{
+}
+
+void ItemizedListHandler::startItemizedList(const QXmlAttributes& /*attrib*/)
{
m_parent->setDelegate(this);
}
-void ListHandler::endList()
+void ItemizedListHandler::endItemizedList()
{
m_parent->setDelegate(0);
}
-void ListHandler::startListItem(const QXmlAttributes& attrib)
+void ItemizedListHandler::startItemizedListItem(const QXmlAttributes& attrib)
{
ListItemHandler *liHandler = new ListItemHandler(this);
liHandler->startListItem(attrib);
m_children.append(liHandler);
}
+IDocIterator *ItemizedListHandler::elements() const
+{
+ return new ItemizedListIterator(*this);
+}
+
//----------------------------------------------------------------------
// ParameterHandler
//----------------------------------------------------------------------
@@ -372,6 +410,11 @@ void ParameterListHandler::startParameterDescription(const QXmlAttributes& attri
m_curParam->startParameterDescription(attrib);
}
+IDocIterator *ParameterListHandler::params() const
+{
+ return new ParameterListIterator(*this);
+}
+
//----------------------------------------------------------------------
// LinkHandler
//----------------------------------------------------------------------
@@ -1116,6 +1159,8 @@ TableHandler::TableHandler(IBaseHandler *parent)
m_children.setAutoDelete(TRUE);
addEndHandler("table",this,&TableHandler::endTable);
addStartHandler("row",this,&TableHandler::startRow);
+ addStartHandler("caption",this,&TableHandler::startCaption);
+ addEndHandler("caption",this,&TableHandler::endCaption);
}
TableHandler::~TableHandler()
@@ -1141,6 +1186,16 @@ void TableHandler::startRow(const QXmlAttributes& attrib)
m_children.append(rh);
}
+void TableHandler::startCaption(const QXmlAttributes& /*attrib*/)
+{
+ m_curString="";
+}
+
+void TableHandler::endCaption()
+{
+ m_caption = m_curString;
+}
+
//----------------------------------------------------------------------
// ParagraphHandler
//----------------------------------------------------------------------
@@ -1195,16 +1250,16 @@ void ParagraphHandler::endParagraph()
void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib)
{
addTextNode();
- ListHandler *listHandler = new ListHandler(ItemizedList,this);
- listHandler->startList(attrib);
+ ItemizedListHandler *listHandler = new ItemizedListHandler(this);
+ listHandler->startItemizedList(attrib);
m_children.append(listHandler);
}
void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib)
{
addTextNode();
- ListHandler *listHandler = new ListHandler(OrderedList,this);
- listHandler->startList(attrib);
+ OrderedListHandler *listHandler = new OrderedListHandler(this);
+ listHandler->startOrderedList(attrib);
m_children.append(listHandler);
}
diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h
index 3425288..e72ad41 100644
--- a/addon/doxmlparser/src/dochandler.h
+++ b/addon/doxmlparser/src/dochandler.h
@@ -63,6 +63,8 @@ class MarkupModifierNode : public IDocMarkupModifier
// IDocMarkupModifier
virtual Kind kind() const { return MarkupModifier; }
+ virtual bool enabled() const { return m_enabled; }
+ virtual int markup() const { return m_markup; }
private:
int m_markup;
@@ -106,6 +108,59 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
int m_curMarkup;
};
+//-----------------------------------------------------------------------------
+
+/*! \brief Node representing a paragraph of text and commands.
+ *
+ */
+// children: itemizedlist, orderedlist, parameterlist, simplesect, ref,
+// variablelist, hruler, linebreak, ulink, email, link
+// programlisting, formula, image, dotfile, indexentry,
+// table
+//
+// children handled by MarkupHandler:
+// bold, computeroutput, emphasis, center,
+// small, subscript, superscript.
+//
+class ParagraphHandler : public IDocPara,
+ public BaseHandler<ParagraphHandler>
+{
+ friend class ParagraphIterator;
+
+ public:
+ virtual void startParagraph(const QXmlAttributes& attrib);
+ virtual void endParagraph();
+ virtual void startItemizedList(const QXmlAttributes& attrib);
+ virtual void startOrderedList(const QXmlAttributes& attrib);
+ virtual void startParameterList(const QXmlAttributes& attrib);
+ virtual void startSimpleSect(const QXmlAttributes& attrib);
+ virtual void startRef(const QXmlAttributes& attrib);
+ virtual void startVariableList(const QXmlAttributes& attrib);
+ virtual void startHRuler(const QXmlAttributes& attrib);
+ virtual void startLineBreak(const QXmlAttributes& attrib);
+ virtual void startULink(const QXmlAttributes& attrib);
+ virtual void startEMail(const QXmlAttributes& attrib);
+ virtual void startLink(const QXmlAttributes& attrib);
+ virtual void startProgramListing(const QXmlAttributes& attrib);
+ virtual void startFormula(const QXmlAttributes& attrib);
+ virtual void startImage(const QXmlAttributes& attrib);
+ virtual void startDotFile(const QXmlAttributes& attrib);
+ virtual void startIndexEntry(const QXmlAttributes& attrib);
+ virtual void startTable(const QXmlAttributes& attrib);
+
+ ParagraphHandler(IBaseHandler *parent);
+ virtual ~ParagraphHandler();
+
+ // IDocPara
+ virtual Kind kind() const { return Para; }
+ virtual IDocIterator *contents() const;
+
+ private:
+ void addTextNode();
+ IBaseHandler *m_parent;
+ QList<IDoc> m_children;
+ MarkupHandler *m_markupHandler;
+};
//-----------------------------------------------------------------------------
@@ -114,6 +169,7 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
*/
class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler>
{
+ friend class ListItemIterator;
public:
ListItemHandler(IBaseHandler *parent);
virtual ~ListItemHandler();
@@ -123,39 +179,86 @@ class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler>
// IDocItem
virtual Kind kind() const { return ListItem; }
+ virtual IDocIterator *contents() const;
private:
IBaseHandler *m_parent;
QList<IDoc> m_children;
};
+class ListItemIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
+{
+ public:
+ ListItemIterator(const ListItemHandler &handler) :
+ BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
+};
+
//-----------------------------------------------------------------------------
/*! \brief Node representing list of items.
*
*/
-class ListHandler : public IDocList, public BaseHandler<ListHandler>
+class OrderedListHandler : public IDocOrderedList, public BaseHandler<OrderedListHandler>
{
+ friend class OrderedListIterator;
public:
- ListHandler(Kind k,IBaseHandler *parent);
- virtual ~ListHandler();
- virtual void startList(const QXmlAttributes& attrib);
- virtual void endList();
- virtual void startListItem(const QXmlAttributes& attrib);
+ OrderedListHandler(IBaseHandler *parent);
+ virtual ~OrderedListHandler();
+ virtual void startOrderedList(const QXmlAttributes& attrib);
+ virtual void endOrderedList();
+ virtual void startOrderedListItem(const QXmlAttributes& attrib);
- // IDocList
- virtual Kind kind() const { return m_kind; }
+ // IDocOrderedList
+ virtual Kind kind() const { return OrderedList; }
+ virtual IDocIterator *elements() const;
private:
IBaseHandler *m_parent;
QList<IDoc> m_children;
- Kind m_kind;
+};
+
+class OrderedListIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
+{
+ public:
+ OrderedListIterator(const OrderedListHandler &handler) :
+ BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
};
//-----------------------------------------------------------------------------
+/*! \brief Node representing list of items.
+ *
+ */
+class ItemizedListHandler : public IDocItemizedList, public BaseHandler<ItemizedListHandler>
+{
+ friend class ItemizedListIterator;
+ public:
+ ItemizedListHandler(IBaseHandler *parent);
+ virtual ~ItemizedListHandler();
+ virtual void startItemizedList(const QXmlAttributes& attrib);
+ virtual void endItemizedList();
+ virtual void startItemizedListItem(const QXmlAttributes& attrib);
+
+ // IDocItemizedList
+ virtual Kind kind() const { return ItemizedList; }
+ virtual IDocIterator *elements() const;
+
+ private:
+ IBaseHandler *m_parent;
+ QList<IDoc> m_children;
+};
+
+class ItemizedListIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
+{
+ public:
+ ItemizedListIterator(const ItemizedListHandler &handler) :
+ BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
+};
+
+
+//-----------------------------------------------------------------------------
/*! \brief Node representing a parameter.
*
*/
@@ -173,6 +276,8 @@ class ParameterHandler : public IDocParameter,
// IDocParameter
virtual Kind kind() const { return Parameter; }
+ virtual QString name() const { return m_name; }
+ virtual IDocPara *description() const { return m_description; }
private:
IBaseHandler *m_parent;
@@ -180,17 +285,16 @@ class ParameterHandler : public IDocParameter,
ParagraphHandler *m_description;
};
-
//-----------------------------------------------------------------------------
/* \brief Node representing a parameter list.
*
*/
-class ParameterListHandler : public IDocParameter,
+class ParameterListHandler : public IDocParameterList,
public BaseHandler<ParameterListHandler>
{
+ friend class ParameterListIterator;
public:
- enum Types { Param, RetVal, Exception };
ParameterListHandler(IBaseHandler *parent);
virtual ~ParameterListHandler();
virtual void startParameterList(const QXmlAttributes& attrib);
@@ -200,6 +304,8 @@ class ParameterListHandler : public IDocParameter,
// IDocParameterList
virtual Kind kind() const { return ParameterList; }
+ virtual Types listType() const { return m_type; }
+ virtual IDocIterator *params() const;
private:
IBaseHandler *m_parent;
@@ -208,6 +314,13 @@ class ParameterListHandler : public IDocParameter,
Types m_type;
};
+class ParameterListIterator : public BaseIterator<IDocIterator,IDoc,ParameterHandler>
+{
+ public:
+ ParameterListIterator(const ParameterListHandler &handler) :
+ BaseIterator<IDocIterator,IDoc,ParameterHandler>(handler.m_parameters) {}
+};
+
//-----------------------------------------------------------------------------
/* \brief Node representing a horizontal ruler
@@ -335,11 +448,11 @@ class RefHandler : public IDocRef, public BaseHandler<RefHandler>
// IDocRef
virtual Kind kind() const { return Ref; }
+ virtual QString refId() const { return m_refId; }
private:
IBaseHandler *m_parent;
QString m_refId;
- QString m_anchor;
QString m_linkText;
};
@@ -390,14 +503,6 @@ class SimpleSectHandler : public IDocSimpleSect,
public BaseHandler<SimpleSectHandler>
{
public:
- enum Types { Invalid = 0,
- See, Return, Author, Version,
- Since, Date, Bug, Note,
- Warning, Par, Deprecated, Pre,
- Post, Invar, Remark, Attention,
- Todo, Test, RCS, EnumValues,
- Examples
- };
SimpleSectHandler(IBaseHandler *parent);
virtual ~SimpleSectHandler();
virtual void startSimpleSect(const QXmlAttributes& attrib);
@@ -407,6 +512,9 @@ class SimpleSectHandler : public IDocSimpleSect,
// IDocSimpleSect
virtual Kind kind() const { return SimpleSect; }
+ virtual Types sectionType() const { return m_type; }
+ virtual IDocTitle *title() const { return m_title; }
+ virtual IDocPara *description() const { return m_paragraph; }
private:
IBaseHandler *m_parent;
@@ -697,7 +805,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
/*! \brief Node representing an entry in the table.
*
*/
-// children: row
+// children: row, caption
class TableHandler : public IDocTable, public BaseHandler<TableHandler>
{
public:
@@ -706,6 +814,8 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
void startTable(const QXmlAttributes& attrib);
void endTable();
void startRow(const QXmlAttributes& attrib);
+ void startCaption(const QXmlAttributes& attrib);
+ void endCaption();
// IDocTable
virtual Kind kind() const { return Table; }
@@ -714,62 +824,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
IBaseHandler *m_parent;
QList<RowHandler> m_children;
int m_numColumns;
+ QString m_caption;
};
//-----------------------------------------------------------------------------
-/*! \brief Node representing a paragraph of text and commands.
- *
- */
-// children: itemizedlist, orderedlist, parameterlist, simplesect, ref,
-// variablelist, hruler, linebreak, ulink, email, link
-// programlisting, formula, image, dotfile, indexentry,
-// table
-//
-// children handled by MarkupHandler:
-// bold, computeroutput, emphasis, center,
-// small, subscript, superscript.
-//
-class ParagraphHandler : public IDocPara,
- public BaseHandler<ParagraphHandler>
-{
- friend class ParagraphIterator;
-
- public:
- virtual void startParagraph(const QXmlAttributes& attrib);
- virtual void endParagraph();
- virtual void startItemizedList(const QXmlAttributes& attrib);
- virtual void startOrderedList(const QXmlAttributes& attrib);
- virtual void startParameterList(const QXmlAttributes& attrib);
- virtual void startSimpleSect(const QXmlAttributes& attrib);
- virtual void startRef(const QXmlAttributes& attrib);
- virtual void startVariableList(const QXmlAttributes& attrib);
- virtual void startHRuler(const QXmlAttributes& attrib);
- virtual void startLineBreak(const QXmlAttributes& attrib);
- virtual void startULink(const QXmlAttributes& attrib);
- virtual void startEMail(const QXmlAttributes& attrib);
- virtual void startLink(const QXmlAttributes& attrib);
- virtual void startProgramListing(const QXmlAttributes& attrib);
- virtual void startFormula(const QXmlAttributes& attrib);
- virtual void startImage(const QXmlAttributes& attrib);
- virtual void startDotFile(const QXmlAttributes& attrib);
- virtual void startIndexEntry(const QXmlAttributes& attrib);
- virtual void startTable(const QXmlAttributes& attrib);
-
- ParagraphHandler(IBaseHandler *parent);
- virtual ~ParagraphHandler();
-
- // IDocPara
- virtual Kind kind() const { return Para; }
- virtual IDocIterator *contents() const;
-
- private:
- void addTextNode();
- IBaseHandler *m_parent;
- QList<IDoc> m_children;
- MarkupHandler *m_markupHandler;
-};
-
class ParagraphIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{
public:
diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h
index ec2950c..390e9bb 100644
--- a/addon/doxmlparser/src/doxmlintf.h
+++ b/addon/doxmlparser/src/doxmlintf.h
@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText
class ILT_Ref : public ILinkedText
{
public:
+ enum TargetKind { Member, Compound };
virtual QString id() const = 0;
+ virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
};
@@ -104,8 +106,8 @@ class IDoc
Para, // 0 -> IDocPara
Text, // 1 -> IDocText
MarkupModifier, // 2 -> IDocMarkupModifier
- ItemizedList, // 3 -> IDocList
- OrderedList, // 4 -> IDocList
+ ItemizedList, // 3 -> IDocItemizedList
+ OrderedList, // 4 -> IDocOrderedList
ListItem, // 5 -> IDocListItem
ParameterList, // 6 -> IDocParameterList
Parameter, // 7 -> IDocParameter
@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup
class IDocMarkupModifier : public IDoc
{
+ public:
+ virtual bool enabled() const = 0;
+ virtual int markup() const = 0;
+};
+
+class IDocItemizedList : public IDoc
+{
+ public:
+ virtual IDocIterator *elements() const = 0;
};
-class IDocList : public IDoc
+class IDocOrderedList : public IDoc
{
+ public:
+ virtual IDocIterator *elements() const = 0;
};
class IDocListItem : public IDoc
{
+ public:
+ virtual IDocIterator *contents() const = 0;
};
class IDocParameterList : public IDoc
{
+ public:
+ enum Types { Param, RetVal, Exception };
+ virtual Types listType() const = 0;
+ virtual IDocIterator *params() const = 0;
};
class IDocParameter : public IDoc
{
+ public:
+ virtual QString name() const = 0;
+ virtual IDocPara *description() const = 0;
};
-class IDocSimpleSect : public IDoc
+class IDocTitle : public IDoc
{
+ public:
+ virtual IDocIterator *title() const = 0;
};
-class IDocTitle : public IDoc
+class IDocSimpleSect : public IDoc
{
public:
- virtual IDocIterator *title() const = 0;
+ enum Types { Invalid = 0,
+ See, Return, Author, Version,
+ Since, Date, Bug, Note,
+ Warning, Par, Deprecated, Pre,
+ Post, Invar, Remark, Attention,
+ Todo, Test, RCS, EnumValues,
+ Examples
+ };
+ virtual Types sectionType() const = 0;
+ virtual IDocTitle *title() const = 0;
+ virtual IDocPara *description() const = 0;
};
class IDocRef : public IDoc
{
+ public:
+ enum TargetKind { Member, Compound };
+ virtual QString id() const = 0;
+ virtual TargetKind targetKind() const = 0;
+ virtual QString external() const = 0;
+ virtual QString text() const = 0;
};
class IDocVariableList : public IDoc
diff --git a/addon/doxmlparser/src/linkedtexthandler.cpp b/addon/doxmlparser/src/linkedtexthandler.cpp
index b142188..fabd0c1 100644
--- a/addon/doxmlparser/src/linkedtexthandler.cpp
+++ b/addon/doxmlparser/src/linkedtexthandler.cpp
@@ -36,10 +36,12 @@ class LT_Ref : public ILT_Ref
void setRefId(const QString &refId) { m_refId=refId; }
void setText(const QString &text) { m_text=text; }
void setExtId(const QString &extId) { m_extId=extId; }
+ void setTargetKind(TargetKind k) { m_targetKind=k; }
// ILT_Ref
virtual QString text() const { return m_text; }
virtual QString id() const { return m_refId; }
+ virtual TargetKind targetKind() const { return m_targetKind; }
virtual QString external() const { return m_extId; }
virtual Kind kind() const { return Kind_Ref; }
@@ -47,6 +49,7 @@ class LT_Ref : public ILT_Ref
QString m_refId;
QString m_extId;
QString m_text;
+ TargetKind m_targetKind;
};
LinkedTextHandler::LinkedTextHandler(IBaseHandler *parent,
@@ -92,8 +95,10 @@ void LinkedTextHandler::startRef(const QXmlAttributes& attrib)
}
ASSERT(m_ref==0);
m_ref = new LT_Ref;
- m_ref->setRefId(attrib.value("idref"));
+ m_ref->setRefId(attrib.value("refid"));
m_ref->setExtId(attrib.value("external"));
+ ASSERT(attrib.value("kindref")=="compound" || attrib.value("kindref")=="member");
+ m_ref->setTargetKind(attrib.value("kindref")=="compound" ? Compound : Member);
}
void LinkedTextHandler::endRef()
diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp
index 9af575a..b94bc0a 100644
--- a/addon/doxmlparser/test/main.cpp
+++ b/addon/doxmlparser/test/main.cpp
@@ -60,6 +60,90 @@ void DumpDoc(IDoc *doc)
printf(" --- text `%s' markup=%d --- \n",txt->text().data(),txt->markup());
}
break;
+ case IDoc::MarkupModifier:
+ {
+ IDocMarkupModifier *md = dynamic_cast<IDocMarkupModifier*>(doc);
+ ASSERT(md!=0);
+ printf(" --- markup modifier enabled=%d markup=%d\n",md->enabled(),md->markup());
+ }
+ break;
+ case IDoc::ItemizedList:
+ {
+ printf(" --- itemized list --- \n");
+ IDocItemizedList *list = dynamic_cast<IDocItemizedList*>(doc);
+ ASSERT(list!=0);
+ IDocIterator *di = list->elements();
+ IDoc *pdoc;
+ for (di->toFirst();(pdoc=di->current());di->toNext())
+ {
+ DumpDoc(pdoc);
+ }
+ di->release();
+ printf(" --- end itemized list --- \n");
+ }
+ break;
+ case IDoc::OrderedList:
+ {
+ printf(" --- ordered list --- \n");
+ IDocOrderedList *list = dynamic_cast<IDocOrderedList*>(doc);
+ ASSERT(list!=0);
+ IDocIterator *di = list->elements();
+ IDoc *pdoc;
+ for (di->toFirst();(pdoc=di->current());di->toNext())
+ {
+ DumpDoc(pdoc);
+ }
+ di->release();
+ printf(" --- end ordered list --- \n");
+ }
+ break;
+ case IDoc::ListItem:
+ {
+ printf(" --- list item --- \n");
+ IDocListItem *li = dynamic_cast<IDocListItem*>(doc);
+ ASSERT(li!=0);
+ IDocIterator *di = li->contents();
+ IDoc *pdoc;
+ for (di->toFirst();(pdoc=di->current());di->toNext())
+ {
+ DumpDoc(pdoc);
+ }
+ di->release();
+ printf(" --- end list item --- \n");
+ }
+ break;
+ case IDoc::ParameterList:
+ {
+ IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc);
+ printf(" --- parameter list type=%d --- \n",list->listType());
+ IDocListItem *li = dynamic_cast<IDocListItem*>(doc);
+ ASSERT(li!=0);
+ IDocIterator *di = li->contents();
+ IDoc *pdoc;
+ for (di->toFirst();(pdoc=di->current());di->toNext())
+ {
+ DumpDoc(pdoc);
+ }
+ di->release();
+ printf(" --- parameter list item --- \n");
+ ASSERT(list!=0);
+ }
+ break;
+ case IDoc::Parameter:
+ {
+ IDocParameter *par = dynamic_cast<IDocParameter*>(doc);
+ ASSERT(par!=0);
+ printf(" --- parameter name=%s --- \n",par->name().data());
+ DumpDoc(par->description());
+ printf(" --- end parameter --- \n");
+ }
+ break;
+ case IDoc::SimpleSect:
+ {
+ IDocSimpleSect *ss = dynamic_cast<IDocSimpleSect*>(ss);
+ ASSERT(ss!=0);
+ }
+ break;
case IDoc::Title:
{
printf(" --- title --- \n");
@@ -74,6 +158,120 @@ void DumpDoc(IDoc *doc)
printf(" --- end title --- \n");
}
break;
+ case IDoc::Ref:
+ {
+ IDocRef *ref = dynamic_cast<IDocRef*>(ref);
+ ASSERT(ref!=0);
+ }
+ break;
+ case IDoc::VariableList:
+ {
+ IDocVariableList *vl = dynamic_cast<IDocVariableList*>(vl);
+ ASSERT(vl!=0);
+ }
+ break;
+ case IDoc::VariableListEntry:
+ {
+ IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(vle);
+ ASSERT(vle!=0);
+ }
+ break;
+ case IDoc::HRuler:
+ {
+ IDocHRuler *hr = dynamic_cast<IDocHRuler*>(hr);
+ ASSERT(hr!=0);
+ }
+ break;
+ case IDoc::LineBreak:
+ {
+ IDocLineBreak *lb = dynamic_cast<IDocLineBreak*>(lb);
+ ASSERT(lb!=0);
+ }
+ break;
+ case IDoc::ULink:
+ {
+ IDocULink *ul = dynamic_cast<IDocULink*>(ul);
+ ASSERT(ul!=0);
+ }
+ break;
+ case IDoc::EMail:
+ {
+ IDocEMail *em = dynamic_cast<IDocEMail*>(em);
+ ASSERT(em!=0);
+ }
+ break;
+ case IDoc::Link:
+ {
+ IDocLink *lk = dynamic_cast<IDocLink*>(lk);
+ ASSERT(lk!=0);
+ }
+ break;
+ case IDoc::ProgramListing:
+ {
+ IDocProgramListing *pl = dynamic_cast<IDocProgramListing*>(pl);
+ ASSERT(pl!=0);
+ }
+ break;
+ case IDoc::CodeLine:
+ {
+ IDocCodeLine *cl = dynamic_cast<IDocCodeLine*>(cl);
+ ASSERT(cl!=0);
+ }
+ break;
+ case IDoc::Highlight:
+ {
+ IDocHighlight *hl = dynamic_cast<IDocHighlight*>(hl);
+ ASSERT(hl!=0);
+ }
+ break;
+ case IDoc::Anchor:
+ {
+ IDocAnchor *anc = dynamic_cast<IDocAnchor*>(anc);
+ ASSERT(anc!=0);
+ }
+ break;
+ case IDoc::Formula:
+ {
+ IDocFormula *fm = dynamic_cast<IDocFormula*>(fm);
+ ASSERT(fm!=0);
+ }
+ break;
+ case IDoc::Image:
+ {
+ IDocImage *img = dynamic_cast<IDocImage*>(img);
+ ASSERT(img!=0);
+ }
+ break;
+ case IDoc::DotFile:
+ {
+ IDocDotFile *df = dynamic_cast<IDocDotFile*>(df);
+ ASSERT(df!=0);
+ }
+ break;
+ case IDoc::IndexEntry:
+ {
+ IDocIndexEntry *ie = dynamic_cast<IDocIndexEntry*>(ie);
+ ASSERT(ie!=0);
+ }
+ break;
+ case IDoc::Table:
+ {
+ IDocTable *tbl = dynamic_cast<IDocTable*>(tbl);
+ ASSERT(tbl!=0);
+ }
+ break;
+ case IDoc::Row:
+ {
+ IDocRow *row = dynamic_cast<IDocRow*>(row);
+ ASSERT(row!=0);
+ }
+ break;
+ case IDoc::Entry:
+ {
+ IDocEntry *ent = dynamic_cast<IDocEntry*>(ent);
+ ASSERT(ent!=0);
+ }
+ break;
case IDoc::Section:
{
IDocSection *sec = dynamic_cast<IDocSection*>(doc);
diff --git a/addon/doxywizard/Makefile.in b/addon/doxywizard/Makefile.in
index ca5e11d..31ed5e3 100644
--- a/addon/doxywizard/Makefile.in
+++ b/addon/doxywizard/Makefile.in
@@ -10,9 +10,15 @@
# See the GNU General Public License for more details.
#
-all: Makefile.doxywizard
+all: config.h config.l Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard $@
+config.h:
+ $(CP) ../../src/config.h config.h
+
+config.l:
+ $(CP) ../../src/config.l config.l
+
Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
@@ -21,9 +27,10 @@ tmake:
clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean
+ $(RM) config.cpp
distclean: clean
- $(RM) Makefile.doxywizard
+ $(RM) Makefile.doxywizard config.l config.h
install:
$(INSTTOOL) -d $(INSTALL)/bin
diff --git a/addon/doxywizard/Makefile.win_nmake.in b/addon/doxywizard/Makefile.win_nmake.in
index a9f86a9..5cb4e1c 100644
--- a/addon/doxywizard/Makefile.win_nmake.in
+++ b/addon/doxywizard/Makefile.win_nmake.in
@@ -30,8 +30,9 @@ tmake:
clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean
+ $(RM) config.cpp
distclean: clean
- $(RM) Makefile.doxywizard config.cpp
+ $(RM) Makefile.doxywizard config.l config.h
FORCE:
diff --git a/addon/doxywizard/doxywizard.cpp b/addon/doxywizard/doxywizard.cpp
index 1a31b1a..54b592e 100644
--- a/addon/doxywizard/doxywizard.cpp
+++ b/addon/doxywizard/doxywizard.cpp
@@ -179,7 +179,7 @@ void Wizard::newFile()
if (hasChanged)
{
switch( QMessageBox::warning( this, "DoxyWizard",
- "Start a new file and lose changes?\n",
+ "Start a new file and lose changes?",
"Yes", "No", 0, 0, 1 ))
{
case 0:
@@ -219,7 +219,7 @@ void Wizard::loadFile()
if (hasChanged)
{
switch( QMessageBox::warning(
- this, "DoxyWizard", "Load a new file and lose changes?\n",
+ this, "DoxyWizard", "Load a new file and lose changes?",
"Yes", "No", 0, 0, 1 ))
{
case 0:
@@ -278,7 +278,7 @@ void Wizard::quit()
{
if (hasChanged)
{
- switch( QMessageBox::warning( this, "DoxyWizard", "Quit and lose changes?\n",
+ switch( QMessageBox::warning( this, "DoxyWizard", "Quit and lose changes?",
"Yes", "No", 0, 0, 1 ))
{
case 0:
diff --git a/addon/doxywizard/doxywizard.pro.in b/addon/doxywizard/doxywizard.pro.in
index 5337781..d36db53 100644
--- a/addon/doxywizard/doxywizard.pro.in
+++ b/addon/doxywizard/doxywizard.pro.in
@@ -12,8 +12,7 @@
# project file for the doxywizard project
# special template configuration file because we use flex
-unix:TEMPLATE = app.t
-win32:TEMPLATE = doxywizard.t
+TEMPLATE = doxywizard.t
# executable to generate
TARGET = ../../bin/doxywizard
@@ -29,8 +28,8 @@ HEADERS = doxywizard.h \
inputbool.h \
inputstrlist.h \
inputint.h \
- pixmaps.h
-win32:HEADERS += config.h
+ pixmaps.h \
+ config.h
# source flle for the project
SOURCES = doxywizard.cpp \
@@ -40,8 +39,8 @@ SOURCES = doxywizard.cpp \
inputbool.cpp \
inputstrlist.cpp \
inputint.cpp \
- pixmaps.cpp
-win32:SOURCES += config.cpp
+ pixmaps.cpp \
+ config.cpp
# where to put the objects
OBJECTS_DIR = obj
@@ -57,5 +56,4 @@ win32:INCLUDEPATH += .
# extra link options
win32:TMAKE_LIBS = $(QTDIR)\lib\qtmain.lib $(QTDIR)\lib\qt-mt230nc.lib user32.lib gdi32.lib comdlg32.lib imm32.lib ole32.lib uuid.lib wsock32.lib
win32:TMAKE_LIBS_QT =
-unix:LIBS = -L../../lib -ldoxycfg
diff --git a/configure b/configure
index 5a5dc88..d48cf16 100755
--- a/configure
+++ b/configure
@@ -139,6 +139,9 @@ if test -z "$f_platform"; then
dgux:*)
f_platform=dgux-g++
;;
+ Darwin:*)
+ f_platform=macosx-c++
+ ;;
FreeBSD:*)
f_platform=freebsd-g++
;;
@@ -290,10 +293,13 @@ fi
if test "$f_insttool" = NO; then
if test "$install_found" = YES; then
- echo "GNU version of install is required!"
+ echo;
else
echo "not found!";
+ echo
fi
+ echo "GNU version of install is required: this is part of the fileutils package: "
+ echo "see http://www.gnu.org/software/fileutils/fileutils.html"
echo
exit 2
fi
diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc
index 79faf11..12d5356 100644
--- a/doc/htmlcmds.doc
+++ b/doc/htmlcmds.doc
@@ -31,6 +31,8 @@ documentation. Note that all attributes of a HTML tag are ignored
<li>\c <BR> Forces a line break.
<li>\c <CENTER> starts a section of centered text.
<li>\c </CENTER> ends a section of centered text.
+<li>\c <CAPTION> Starts a caption. Use within a table only.
+<li>\c </CAPTION> Ends a caption. Use within a table only.
<li>\c <CODE> Starts a piece of text displayed in a typewriter font.
<li>\c </CODE> End a \c <CODE> section.
<li>\c <DD> Starts an item description.
diff --git a/doc/language.doc b/doc/language.doc
index bc1a145..0815eea 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
-Currently (version 1.2.13), 25 languages
+Currently (version 1.2.13.1), 25 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German,
@@ -130,9 +130,9 @@ when the translator was updated.
</TR>
<TR BGCOLOR="#ffffff">
<TD>Japanese</TD>
- <TD>Kenji Nagamatsu</TD>
- <TD>naga@NOSPAM.joyful.club.ne.jp</TD>
- <TD>1.2.5</TD>
+ <TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD>
+ <TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD>
+ <TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Korean</TD>
@@ -173,8 +173,8 @@ when the translator was updated.
<TR BGCOLOR="#ffffff">
<TD>Slovak</TD>
<TD>Stanislav Kudl&aacute;&#x010d;</TD>
- <TD>qwerty1@NOSPAM.pobox.sk</TD>
- <TD>1.2.11</TD>
+ <TD>skudlac@NOSPAM.pobox.sk</TD>
+ <TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Slovene</TD>
@@ -240,7 +240,8 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline
- Japanese & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & 1.2.5 \\
+ Japanese & Ryunosuke Sato & {\tt puyo@mint.freemail.ne.jp} & up-to-date \\
+ & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} & \\
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & up-to-date \\
\hline
@@ -254,7 +255,7 @@ when the translator was updated.
\hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline
- Slovak & Stanislav Kudl\'{a}\v{c} & {\tt qwerty1@pobox.sk} & 1.2.11 \\
+ Slovak & Stanislav Kudl\'{a}\v{c} & {\tt skudlac@pobox.sk} & up-to-date \\
\hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & up-to-date \\
\hline
diff --git a/doc/lists.doc b/doc/lists.doc
index c7e275c..251160e 100644
--- a/doc/lists.doc
+++ b/doc/lists.doc
@@ -41,6 +41,35 @@ Doxygen has a number of ways to create lists of items.
If you use tabs within lists, please make sure that \ref cfg_tab_size "TAB_SIZE" in the
configuration file is set to the correct tab size.
+You can end a list by starting a new paragraph or
+by putting a dot (.) on an empty line at the same indent level as the
+list you would like to end.
+
+Here is an example that speaks for itself:
+
+\verbatim
+/**
+ * Text before the list
+ * - list item 1
+ * - sub item 1
+ * - sub sub item 1
+ * - sub sub item 2
+ * .
+ * The dot above ends the sub sub item list.
+ * More text for the first sub item
+ * .
+ * The dot above ends the first sub item.
+ * More text for the first list item
+ * - sub item 2
+ * - sub item 3
+ * - list item 2
+ * .
+ * More text in the same paragraph.
+ *
+ * More text in a new paragraph.
+ */
+\endverbatim
+
<b>Using HTML commands</b>
If you like you can also use HTML commands inside the documentation
diff --git a/doc/maintainers.txt b/doc/maintainers.txt
index c3eb204..93de235 100644
--- a/doc/maintainers.txt
+++ b/doc/maintainers.txt
@@ -44,6 +44,7 @@ Alessandro Falappa: alessandro@falappa.net
Ahmed Aldo Faisal: aaf23@cam.ac.uk
Japanese
+Ryunosuke Sato: puyo@mint.freemail.ne.jp
Kenji Nagamatsu: naga@joyful.club.ne.jp
Korean
@@ -65,7 +66,7 @@ Russian
Alexandr Chelpanov: cav@cryptopro.ru
Slovak
-Stanislav Kudl&aacute;&ccaron;: qwerty1@pobox.sk
+Stanislav Kudl&aacute;&ccaron;: skudlac@pobox.sk
Slovene
Matjaz Ostroversnik: matjaz.ostroversnik@zrs-tk.si
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index b386153..4b067aa 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,5 +1,5 @@
Name: doxygen
-Version: 1.2.13
+Version: 1.2.13.1
Summary: documentation system for C, C++ and IDL
Release: 4
Source: doxygen-%{version}.src.tar.gz
diff --git a/src/classdef.cpp b/src/classdef.cpp
index eb46b38..762f8aa 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -156,29 +156,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p,
void ClassDef::addMembersToMemberGroup()
{
- ::addMembersToMemberGroup(&pubTypes,memberGroupSDict);
- ::addMembersToMemberGroup(&pubMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&pubAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&pubSlots,memberGroupSDict);
- ::addMembersToMemberGroup(&signals,memberGroupSDict);
- ::addMembersToMemberGroup(&dcopMethods,memberGroupSDict);
- ::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&proTypes,memberGroupSDict);
- ::addMembersToMemberGroup(&proMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&proAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&proSlots,memberGroupSDict);
- ::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&priTypes,memberGroupSDict);
- ::addMembersToMemberGroup(&priMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&priAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&priSlots,memberGroupSDict);
- ::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict);
- ::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict);
- ::addMembersToMemberGroup(&friends,memberGroupSDict);
- ::addMembersToMemberGroup(&related,memberGroupSDict);
- ::addMembersToMemberGroup(&properties,memberGroupSDict);
+ ::addMembersToMemberGroup(&pubTypes,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&pubMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&pubAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&pubSlots,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&signals,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&dcopMethods,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proTypes,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proSlots,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priTypes,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priSlots,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&friends,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&related,memberGroupSDict,this);
+ ::addMembersToMemberGroup(&properties,memberGroupSDict,this);
}
// adds new member definition to the class
@@ -197,12 +197,12 @@ void ClassDef::internalInsertMember(MemberDef *md,
(Config_getBool("EXTRACT_PRIVATE") || prot!=Private))
{
related.append(md);
- md->setSectionList(&related);
+ md->setSectionList(this,&related);
}
else if (md->isFriend())
{
friends.append(md);
- md->setSectionList(&friends);
+ md->setSectionList(this,&friends);
}
else
{
@@ -210,30 +210,30 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case MemberDef::Signal: // Qt specific
signals.append(md);
- md->setSectionList(&signals);
+ md->setSectionList(this,&signals);
break;
case MemberDef::DCOP: // KDE2 specific
dcopMethods.append(md);
- md->setSectionList(&dcopMethods);
+ md->setSectionList(this,&dcopMethods);
break;
case MemberDef::Property:
properties.append(md);
- md->setSectionList(&properties);
+ md->setSectionList(this,&properties);
break;
case MemberDef::Slot: // Qt specific
switch (prot)
{
case Protected:
proSlots.append(md);
- md->setSectionList(&proSlots);
+ md->setSectionList(this,&proSlots);
break;
case Public:
pubSlots.append(md);
- md->setSectionList(&pubSlots);
+ md->setSectionList(this,&pubSlots);
break;
case Private:
priSlots.append(md);
- md->setSectionList(&priSlots);
+ md->setSectionList(this,&priSlots);
break;
}
break;
@@ -246,15 +246,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
proStaticAttribs.append(md);
- md->setSectionList(&proStaticAttribs);
+ md->setSectionList(this,&proStaticAttribs);
break;
case Public:
pubStaticAttribs.append(md);
- md->setSectionList(&pubStaticAttribs);
+ md->setSectionList(this,&pubStaticAttribs);
break;
case Private:
priStaticAttribs.append(md);
- md->setSectionList(&priStaticAttribs);
+ md->setSectionList(this,&priStaticAttribs);
break;
}
}
@@ -264,15 +264,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
proStaticMembers.append(md);
- md->setSectionList(&proStaticMembers);
+ md->setSectionList(this,&proStaticMembers);
break;
case Public:
pubStaticMembers.append(md);
- md->setSectionList(&pubStaticMembers);
+ md->setSectionList(this,&pubStaticMembers);
break;
case Private:
priStaticMembers.append(md);
- md->setSectionList(&priStaticMembers);
+ md->setSectionList(this,&priStaticMembers);
break;
}
}
@@ -285,15 +285,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
proAttribs.append(md);
- md->setSectionList(&proAttribs);
+ md->setSectionList(this,&proAttribs);
break;
case Public:
pubAttribs.append(md);
- md->setSectionList(&pubAttribs);
+ md->setSectionList(this,&pubAttribs);
break;
case Private:
priAttribs.append(md);
- md->setSectionList(&priAttribs);
+ md->setSectionList(this,&priAttribs);
break;
}
}
@@ -303,15 +303,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
proTypes.append(md);
- md->setSectionList(&proTypes);
+ md->setSectionList(this,&proTypes);
break;
case Public:
pubTypes.append(md);
- md->setSectionList(&pubTypes);
+ md->setSectionList(this,&pubTypes);
break;
case Private:
priTypes.append(md);
- md->setSectionList(&priTypes);
+ md->setSectionList(this,&priTypes);
break;
}
}
@@ -321,15 +321,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{
case Protected:
proMembers.append(md);
- md->setSectionList(&proMembers);
+ md->setSectionList(this,&proMembers);
break;
case Public:
pubMembers.append(md);
- md->setSectionList(&pubMembers);
+ md->setSectionList(this,&pubMembers);
break;
case Private:
priMembers.append(md);
- md->setSectionList(&priMembers);
+ md->setSectionList(this,&priMembers);
break;
}
}
@@ -485,27 +485,6 @@ void ClassDef::insertMember(MemberDef *md)
internalInsertMember(md,md->protection(),TRUE);
}
-//void ClassDef::computeMemberGroups()
-//{
-// MemberNameInfoListIterator mnili(*m_allMemberNameInfoList);
-// MemberNameInfo *mni;
-// for (;(mni=mnili.current());++mnili)
-// {
-// MemberNameInfoIterator mnii(*mni);
-// MemberInfo *mi;
-// for (mnii.toFirst();(mi=mnii.current());++mnii)
-// {
-// MemberDef *md=mi->memberDef;
-// MemberGroup *mg = md->getMemberGroup();
-// if (mg && m_memberGroupDict->find(mg->groupId())==0)
-// {
-// m_memberGroupDict->insert(mg->groupId(),mg);
-// m_memberGroupList->append(mg);
-// }
-// }
-// }
-//}
-
// compute the anchors for all members
void ClassDef::computeAnchors()
{
@@ -533,6 +512,12 @@ void ClassDef::computeAnchors()
setAnchors(context,'u',&priTypes);
setAnchors(context,'v',&dcopMethods);
setAnchors(context,'w',&properties);
+ MemberGroupSDict::Iterator mgli(*memberGroupSDict);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ mg->setAnchors(context);
+ }
}
void ClassDef::distributeMemberGroupDocumentation()
@@ -1006,6 +991,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
else // add this group to the corresponding member section
{
+ //printf("addToDeclarationSection(%s)\n",mg->header().data());
mg->addToDeclarationSection();
}
}
diff --git a/src/config.l b/src/config.l
index 3a1918d..466f1d1 100644
--- a/src/config.l
+++ b/src/config.l
@@ -31,6 +31,7 @@
#include <qstack.h>
#include "config.h"
+#include "lang_cfg.h"
#include "version.h"
#undef Config_getString
diff --git a/src/doc.l b/src/doc.l
index 3d7b7af..62283f5 100644
--- a/src/doc.l
+++ b/src/doc.l
@@ -99,6 +99,7 @@ static QCString curDotFileName;
static QCString curDotFileCaption;
static QCString internalRefFile;
static QCString internalRefAnchor;
+static QCString caption;
static QStack<char> currentListIndent; // indent stack of all list items
static bool insideItemList = FALSE;
@@ -185,72 +186,85 @@ class Table
~Table();
void newRow();
void newElem();
+ void setCaption(const char *s);
private:
- OutputDocInterface *parentDoc;
- QList<TableElem> *elemList;
- int curRow;
- int curCol;
- int rows;
- int cols;
+ OutputDocInterface *m_parentDoc;
+ QList<TableElem> *m_elemList;
+ QCString m_caption;
+ int m_curRow;
+ int m_curCol;
+ int m_rows;
+ int m_cols;
};
Table::Table()
{
- parentDoc=outDoc;
- elemList=new QList<TableElem>;
- elemList->setAutoDelete(TRUE);
- curRow=curCol=rows=cols=0;
+ m_parentDoc=outDoc;
+ m_elemList=new QList<TableElem>;
+ m_elemList->setAutoDelete(TRUE);
+ m_curRow=m_curCol=m_rows=m_cols=0;
}
Table::~Table()
{
//printf("Table::~Table()\n");
// use elemList & cols & rows
- if (cols>0 && rows>0)
+ if (m_cols>0 && m_rows>0)
{
- parentDoc->startTable(cols);
- TableElem *e=elemList->first();
+ m_parentDoc->startTable(!m_caption.isEmpty(),m_cols);
+ TableElem *e=m_elemList->first();
while (e)
{
if (e->getRow()>0)
{
if (e->getCol()==0)
{
- if (e->getRow()>1) parentDoc->endTableRow();
- parentDoc->nextTableRow();
+ if (e->getRow()>1) m_parentDoc->endTableRow();
+ m_parentDoc->nextTableRow();
}
else
{
- parentDoc->nextTableColumn();
+ m_parentDoc->nextTableColumn();
}
- parentDoc->append(e->outputDocInterface());
- parentDoc->endTableColumn();
+ m_parentDoc->append(e->outputDocInterface());
+ m_parentDoc->endTableColumn();
}
- e=elemList->next();
+ e=m_elemList->next();
}
- parentDoc->endTable();
+ if (!m_caption.isEmpty())
+ {
+ m_parentDoc->startCaption();
+ m_parentDoc->docify(m_caption);
+ m_parentDoc->endCaption();
+ }
+ m_parentDoc->endTable(!m_caption.isEmpty());
}
- delete elemList; elemList=0;
- outDoc=parentDoc;
+ delete m_elemList; m_elemList=0;
+ outDoc=m_parentDoc;
+}
+
+void Table::setCaption(const char *s)
+{
+ m_caption=s;
}
void Table::newRow()
{
//printf("Table::newRow()\n");
- curRow++;
- if (curRow>rows) rows=curRow;
- curCol=0;
+ m_curRow++;
+ if (m_curRow>m_rows) m_rows=m_curRow;
+ m_curCol=0;
}
void Table::newElem()
{
//printf("Table::newElem(%d,%d)\n",curRow,curCol);
- TableElem *te = new TableElem(curRow,curCol);
- elemList->append(te);
+ TableElem *te = new TableElem(m_curRow,m_curCol);
+ m_elemList->append(te);
- curCol++;
- if (curCol>cols) cols=curCol;
+ m_curCol++;
+ if (m_curCol>m_cols) m_cols=m_curCol;
}
static QStack<Table> tableStack;
@@ -531,19 +545,19 @@ struct IndentInfo
static QStack<IndentInfo> listIndentStack; // indent stack of - items
-static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
+static int computeIndent(const char *str,int length)
{
- // find the actual position at which the bullet was found
int i;
int indent=0;
- for (i=0;i<dashPos;i++)
+ int tabSize=Config_getInt("TAB_SIZE");
+ for (i=0;i<length;i++)
{
//printf("Parsed[%d]=%d\n",i,marker[i]);
- if (marker[i]=='\t')
+ if (str[i]=='\t')
{
- indent+=Config_getInt("TAB_SIZE") - (indent%Config_getInt("TAB_SIZE"));
+ indent+=tabSize - (indent%tabSize);
}
- else if (marker[i]=='\n')
+ else if (str[i]=='\n')
{
indent=0;
}
@@ -552,9 +566,17 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
indent++;
}
}
+ return indent;
+}
+
+static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
+{
+ // find the actual position at which the bullet was found
+ int indent=computeIndent(marker,dashPos);
//printf("list marker found at column %d enumerated %d\n",indent,enumerated);
if (!insideItemList)
{
+ //printf("startListMarker indent=%d\n",indent);
currentListIndent.push(enumerated ? "O" : "U");
listIndentStack.push(new IndentInfo(indent,enumerated));
listIndentStack.top()->startList();
@@ -580,6 +602,7 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
}
else if (pPrevInfo->indent<indent) // start sub item list
{
+ //printf("startListMarker indent=%d\n",indent);
currentListIndent.push(enumerated ? "O" : "U");
listIndentStack.push(new IndentInfo(indent,enumerated));
listIndentStack.top()->startList();
@@ -610,6 +633,32 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
}
}
+static void endListMarker(const char *marker,int dotPos)
+{
+ int indent=computeIndent(marker,dotPos);
+ //printf("endListMarker indent=%d "
+ // "insideItemList=%d listIndentStack.count()=%d\n",
+ // indent,insideItemList,listIndentStack.count());
+ if (insideItemList && !listIndentStack.isEmpty())
+ {
+ IndentInfo *ii = listIndentStack.top();
+ while (ii && indent<=ii->indent)
+ {
+ ii->endList();
+ listIndentStack.pop();
+ currentListIndent.pop();
+ delete ii;
+ ii = listIndentStack.top();
+ //printf("ending list new indent=%d\n",ii ? ii->indent : -1);
+ }
+ if (listIndentStack.isEmpty())
+ {
+ insideItemList=FALSE;
+ //printf("ending last list\n");
+ }
+ }
+}
+
// end the current (nested) list regardless of the nesting level.
static void forceEndItemList()
{
@@ -626,7 +675,7 @@ static void forceEndItemList()
case 'O': outDoc->endEnumList(); break;
case 'U': outDoc->endItemList(); break;
case 'D': outDoc->endDescription(); break;
- case 'P': break; // do not end paragraphs
+ case 'P': if (inBlock()) endBlock(); break;
default:
err("Unexpected list indent token `%c'\n",c);
}
@@ -899,6 +948,7 @@ SUB [sS][uU][bB]
SUP [sS][uU][pP]
SRC [sS][rR][cC]
TABLE [tT][aA][bB][lL][eE]
+CAPTION [cC][aA][pP][tT][iI][oO][nN]
TITLE [tT][iI][tT][lL][eE]
TD [tT][dD]
TR [tT][rR]
@@ -955,6 +1005,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
%x DocInternalRef
%x DocInternalRefText
%x DocImage
+%x DocCaption
%x DocHtmlImageName
%x DocHtmlImageOpt
%x DocLatexImageName
@@ -974,6 +1025,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext,dashPos+1,isEnumerated);
}
+<DocScan>^{B}*(("//"{B}*)?)"*"*{B}*"."{B}*/\n { /* found end list marker */
+ QCString text=yytext;
+ int dotPos = text.findRev('.');
+ endListMarker(yytext,dotPos+1);
+ }
<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */
QCString text=yytext;
int dashPos = text.findRev('-');
@@ -981,6 +1037,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext+1,dashPos,isEnumerated);
}
+<DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"."{B}*/\n { /* found end list marker */
+ QCString text=yytext;
+ int dotPos = text.findRev('.');
+ endListMarker(yytext+1,dotPos);
+ }
<DocScan,Text>"&copy;" { outDoc->writeCopyright(); }
<DocScan,Text>"&lt;" { outDoc->docify("<"); }
<DocScan,Text>"&gt;" { outDoc->docify(">"); }
@@ -2024,6 +2085,20 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocScan>"</"{CENTER}{ATTR}">" { outDoc->endCenter(); }
<DocScan>"<"{TABLE}{ATTR}">" { startTable(); }
<DocScan>"</"{TABLE}{ATTR}">" { endTable(); }
+<DocScan>"<"{CAPTION}{ATTR}">" { caption.resize(0);
+ BEGIN( DocCaption );
+ }
+<DocCaption>[^\n\<\>\/]+ {
+ caption+=yytext;
+ }
+<DocCaption>\n { caption+=" "; }
+<DocCaption>. { caption+=*yytext; }
+<DocCaption>"</"{CAPTION}{ATTR}">" { if (curTable)
+ {
+ curTable->setCaption(caption);
+ }
+ BEGIN( DocScan );
+ }
<DocScan>"<"{INPUT}{ATTR}">"
<DocScan>"<"{SMALL}{ATTR}">" { outDoc->startSmall(); }
<DocScan>"</"{SMALL}{ATTR}">" { outDoc->endSmall(); }
diff --git a/src/dot.cpp b/src/dot.cpp
index d1494a7..5f1b080 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -197,11 +197,12 @@ class DotNodeList : public QList<DotNode>
/*! helper function that deletes all nodes in a connected graph, given
* one of the graph's nodes
*/
-static void deleteNodes(DotNode *node)
+static void deleteNodes(DotNode *node,SIntDict<DotNode> *skipNodes=0)
{
+ //printf("deleteNodes skipNodes=%p\n",skipNodes);
static DotNodeList deletedNodes;
deletedNodes.setAutoDelete(TRUE);
- node->deleteNode(deletedNodes); // collect nodes to be deleted.
+ node->deleteNode(deletedNodes,skipNodes); // collect nodes to be deleted.
deletedNodes.clear(); // actually remove the nodes.
}
@@ -220,6 +221,7 @@ DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot)
DotNode::~DotNode()
{
+ //printf("DotNode::~DotNode() %s\n",m_label.data());
delete m_children;
delete m_parents;
delete m_edgeInfo;
@@ -276,7 +278,7 @@ void DotNode::removeParent(DotNode *n)
if (m_parents) m_parents->remove(n);
}
-void DotNode::deleteNode(DotNodeList &deletedList)
+void DotNode::deleteNode(DotNodeList &deletedList,SIntDict<DotNode> *skipNodes)
{
if (m_deleted) return; // avoid recursive loops in case the graph has cycles
m_deleted=TRUE;
@@ -287,7 +289,7 @@ void DotNode::deleteNode(DotNodeList &deletedList)
for (dnlip.toFirst();(pn=dnlip.current());++dnlip)
{
//pn->removeChild(this);
- pn->deleteNode(deletedList);
+ pn->deleteNode(deletedList,skipNodes);
}
}
if (m_children!=0) // delete all child nodes of this node
@@ -297,11 +299,16 @@ void DotNode::deleteNode(DotNodeList &deletedList)
for (dnlic.toFirst();(cn=dnlic.current());++dnlic)
{
//cn->removeParent(this);
- cn->deleteNode(deletedList);
+ cn->deleteNode(deletedList,skipNodes);
}
}
// add this node to the list of deleted nodes.
- deletedList.append(this);
+ //printf("skipNodes=%p find(%p)=%p\n",skipNodes,this,skipNodes ? skipNodes->find((int)this) : 0);
+ if (skipNodes==0 || skipNodes->find((int)this)==0)
+ {
+ //printf("deleting\n");
+ deletedList.append(this);
+ }
}
static QCString convertLabel(const QCString &l)
@@ -882,12 +889,22 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
DotGfxHierarchyTable::~DotGfxHierarchyTable()
{
+ //printf("DotGfxHierarchyTable::~DotGfxHierarchyTable\n");
+ SIntDict<DotNode> skipNodes(17);
+ skipNodes.setAutoDelete(TRUE);
DotNode *n = m_rootNodes->first();
while (n)
{
- DotNode *oldNode=n;
+ //printf("adding %s %p\n",n->label().data(),n);
+ skipNodes.append((int)n,n);
+ n=m_rootNodes->next();
+ }
+ n = m_rootNodes->first();
+ while (n)
+ {
+ //printf("Deleting root node %s\n",n->label().data());
+ deleteNodes(n,&skipNodes);
n=m_rootNodes->next();
- deleteNodes(oldNode);
}
delete m_rootNodes;
delete m_usedNodes;
diff --git a/src/dot.h b/src/dot.h
index 5dfa624..2b82b33 100644
--- a/src/dot.h
+++ b/src/dot.h
@@ -19,6 +19,7 @@
#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
+#include "sortdict.h"
class ClassDef;
class FileDef;
@@ -68,16 +69,17 @@ class DotNode
);
void setDistance(int distance);
void addParent(DotNode *n);
- void deleteNode(DotNodeList &deletedList);
+ void deleteNode(DotNodeList &deletedList,SIntDict<DotNode> *skipNodes=0);
void removeChild(DotNode *n);
void removeParent(DotNode *n);
- int number() const { return m_number; }
void write(QTextStream &t,GraphOutputFormat f,bool topDown,bool toChildren,
int maxDistance=1000,bool backArrows=TRUE);
int m_subgraphId;
void clearWriteFlag();
void writeXML(QTextStream &t);
void writeDEF(QTextStream &t);
+ QCString label() const { return m_label; }
+ int number() const { return m_number; }
private:
void colorConnectedNodes(int curColor);
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index c4fb21a..11c43b7 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -6968,6 +6968,9 @@ void parseInput()
msg("Adding classes to their packages...\n");
addClassesToPackages();
+ msg("Building full member lists recursively...\n");
+ buildCompleteMemberLists();
+
msg("Adding members to member groups.\n");
addMembersToMemberGroup();
@@ -6977,9 +6980,6 @@ void parseInput()
distributeMemberGroupDocumentation();
}
- msg("Building full member lists recursively...\n");
- buildCompleteMemberLists();
-
msg("Computing member references...\n");
computeMemberReferences();
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 7e2a54f..2886f73 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -309,6 +309,7 @@ bool GroupDef::containsGroup(const GroupDef *def)
void GroupDef::addGroup(const GroupDef *def)
{
+ //printf("adding group `%s' to group `%s'\n",def->name().data(),name().data());
//if (Config_getBool("SORT_MEMBER_DOCS"))
// groupList->inSort(def);
//else
@@ -317,10 +318,10 @@ void GroupDef::addGroup(const GroupDef *def)
void GroupDef::addParentGroup(const GroupDef *def)
{
- if (Config_getBool("SORT_MEMBER_DOCS"))
- parentGroupList->inSort(def);
- else
- parentGroupList->append(def);
+ //if (Config_getBool("SORT_MEMBER_DOCS"))
+ // parentGroupList->inSort(def);
+ //else
+ parentGroupList->append(def);
}
bool GroupDef::isASubGroup() const
diff --git a/src/groupdef.h b/src/groupdef.h
index d32f781..a9402b0 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -78,7 +78,7 @@ class GroupDef : public Definition
bool visited; // number of times accessed for output - KPW
- friend void writeGroupTreeNode(OutputList&, GroupDef*,bool);
+ friend void writeGroupTreeNode(OutputList&, GroupDef*, int);
// make accessible for writing tree view of group in index.cpp - KPW
// members in the declaration part of the documentation
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 54b815c..97752a2 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -38,6 +38,7 @@
static const char *defaultStyleSheet =
"H1 { text-align: center; }\n"
+ "CAPTION { font-weight: bold }\n"
"A.qindex {}\n"
"A.qindexRef {}\n"
"A.el { text-decoration: none; font-weight: bold }\n"
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 387065e..33ff992 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -165,8 +165,14 @@ class HtmlGenerator : public OutputGenerator
void endSubscript() { t << "</sub>"; }
void startSuperscript() { t << "<sup>"; }
void endSuperscript() { t << "</sup>"; }
- void startTable(int) { t << "<table border=1 cellspacing=3 cellpadding=3>"; }
- void endTable() { t << "</table>" << endl; }
+ void startTable(bool,int)
+ { t << "<table border=1 cellspacing=3 cellpadding=3>"; }
+ void endTable(bool hasCaption)
+ { if (!hasCaption) t << "</tr>";
+ t << "</table>" << endl;
+ }
+ void startCaption() { t << "</tr><caption align=\"bottom\">"; }
+ void endCaption() { t << "</caption>" << endl; }
void nextTableRow() { t << "<tr><td>"; }
void endTableRow() { t << "</tr>" << endl; }
void nextTableColumn() { t << "<td>"; }
diff --git a/src/index.cpp b/src/index.cpp
index cc1bc99..02c8f92 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -78,6 +78,34 @@ void countDataStructures()
documentedPackages = countPackages();
}
+static void startIndexHierarchy(OutputList &ol,int level)
+{
+ // UGLY HACK!
+ ol.pushGeneratorState();
+ ol.disable(OutputGenerator::Man);
+ ol.disable(OutputGenerator::Html);
+ if (level<6) ol.startIndexList();
+ ol.enableAll();
+ ol.disable(OutputGenerator::Latex);
+ ol.disable(OutputGenerator::RTF);
+ ol.startItemList();
+ ol.popGeneratorState();
+}
+
+static void endIndexHierarchy(OutputList &ol,int level)
+{
+ // UGLY HACK!
+ ol.pushGeneratorState();
+ ol.disable(OutputGenerator::Man);
+ ol.disable(OutputGenerator::Html);
+ if (level<6) ol.endIndexList();
+ ol.enableAll();
+ ol.disable(OutputGenerator::Latex);
+ ol.disable(OutputGenerator::RTF);
+ ol.endItemList();
+ ol.popGeneratorState();
+}
+
//----------------------------------------------------------------------------
static bool g_memberIndexLetterUsed[256];
@@ -347,18 +375,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
{
if (!started)
{
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.disable(OutputGenerator::Html);
- if (level<6) ol.startIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.startItemList();
- ol.popGeneratorState();
- }
+ startIndexHierarchy(ol,level);
if (hasHtmlHelp) htmlHelp->incContentsDepth();
if (hasFtvHelp) ftvHelp->incContentsDepth();
started=TRUE;
@@ -407,18 +424,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
}
if (started)
{
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.disable(OutputGenerator::Html);
- if (level<6) ol.endIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.endItemList();
- ol.popGeneratorState();
- }
+ endIndexHierarchy(ol,level);
if (hasHtmlHelp) htmlHelp->decContentsDepth();
if (hasFtvHelp) ftvHelp->decContentsDepth();
}
@@ -572,18 +578,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
{
if (!started)
{
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Html);
- ol.disable(OutputGenerator::Man);
- ol.startIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.startItemList();
- ol.popGeneratorState();
- }
+ startIndexHierarchy(ol,0);
if (hasHtmlHelp) htmlHelp->incContentsDepth();
if (hasFtvHelp) ftvHelp->incContentsDepth();
started=TRUE;
@@ -654,18 +649,7 @@ void writeClassHierarchy(OutputList &ol)
writeClassTreeForList(ol,&Doxygen::hiddenClasses,started);
if (started)
{
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Html);
- ol.disable(OutputGenerator::Man);
- ol.endIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.endItemList();
- ol.popGeneratorState();
- }
+ endIndexHierarchy(ol,0);
if (hasHtmlHelp) htmlHelp->decContentsDepth();
if (hasFtvHelp) ftvHelp->decContentsDepth();
}
@@ -2135,18 +2119,7 @@ void writePageIndex(OutputList &ol)
}
parseText(ol,theTranslator->trRelatedPagesDescription());
ol.endTextBlock();
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.disable(OutputGenerator::Html);
- ol.startIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.startItemList();
- ol.popGeneratorState();
- }
+ startIndexHierarchy(ol,0);
PageSDict::Iterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi)
@@ -2177,18 +2150,7 @@ void writePageIndex(OutputList &ol)
if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,pageName,0,pageTitle);
}
}
- {
- // UGLY HACK!
- ol.pushGeneratorState();
- ol.disable(OutputGenerator::Man);
- ol.disable(OutputGenerator::Html);
- ol.endIndexList();
- ol.enableAll();
- ol.disable(OutputGenerator::Latex);
- ol.disable(OutputGenerator::RTF);
- ol.endItemList();
- ol.popGeneratorState();
- }
+ endIndexHierarchy(ol,0);
if (hasHtmlHelp)
{
htmlHelp->decContentsDepth();
@@ -2247,7 +2209,7 @@ void writeGraphInfo(OutputList &ol)
* \author KPW
*/
-void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
+void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
{
HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp = 0;
@@ -2263,7 +2225,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
ftvHelp = FTVHelp::getInstance();
}
- if (!gd->visited && (!gd->isASubGroup() || subLevel))
+ if (!gd->visited && (!gd->isASubGroup() || level>0))
{
//printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info
@@ -2338,14 +2300,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
// write subgroups
if (hasSubGroups)
{
- ol.startIndexList();
+ startIndexHierarchy(ol,level+1);
QListIterator<GroupDef> gli(*gd->groupList);
GroupDef *subgd = 0;
- for (gli.toLast();(subgd=gli.current());--gli)
+ for (gli.toFirst();(subgd=gli.current());++gli)
{
- writeGroupTreeNode(ol,subgd,TRUE);
+ writeGroupTreeNode(ol,subgd,level+1);
}
- ol.endIndexList();
+ endIndexHierarchy(ol,level+1);
}
@@ -2544,14 +2506,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
void writeGroupHierarchy(OutputList &ol)
{
- ol.startIndexList();
+ startIndexHierarchy(ol,0);
GroupSDict::Iterator gli(Doxygen::groupSDict);
GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli)
{
- writeGroupTreeNode(ol,gd,FALSE);
+ writeGroupTreeNode(ol,gd,0);
}
- ol.endIndexList();
+ endIndexHierarchy(ol,0);
}
//----------------------------------------------------------------------------
diff --git a/src/latexgen.h b/src/latexgen.h
index 5d5eab8..ac6a68b 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -160,10 +160,26 @@ class LatexGenerator : public OutputGenerator
void endSubscript() { t << "}}$"; }
void startSuperscript() { t << "$^{\\mbox{"; }
void endSuperscript() { t << "}}$"; }
- void startTable(int c) { t << "\\begin{TabularC}{" << c
- << "}\n\\hline\n";
+ void startTable(bool hasCaption,int c)
+ {
+ if (hasCaption) t << "\\begin{table}[h]";
+ t << "\\begin{TabularC}{" << c << "}\n\\hline\n";
}
- void endTable() { t << "\\\\\\hline\n\\end{TabularC}\n"; }
+ void endTable(bool hasCaption)
+ {
+ if (hasCaption)
+ {
+ t << "\\end{table}\n";
+ }
+ else
+ {
+ t << "\\\\\\hline\n\\end{TabularC}\n";
+ }
+ }
+ void startCaption() { t << "\\\\\\hline\n\\end{TabularC}\n"
+ "\\centering\n\\caption{";
+ }
+ void endCaption() { t << "}\n"; }
void nextTableRow() {}
void endTableRow() { t << "\\\\\\hline\n"; }
void nextTableColumn() { t << "&"; }
diff --git a/src/mangen.h b/src/mangen.h
index 2b95de9..f3d2a2b 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -152,8 +152,10 @@ class ManGenerator : public OutputGenerator
void endSubscript() { t << "\\*>"; firstCol=FALSE; }
void startSuperscript() { t << "\\*{"; firstCol=FALSE; }
void endSuperscript() { t << "\\*}"; firstCol=FALSE; }
- void startTable(int) {}
- void endTable() {}
+ void startTable(bool,int) {}
+ void endTable(bool) {}
+ void startCaption() {}
+ void endCaption() {}
void nextTableRow() {}
void endTableRow() {}
void nextTableColumn() {}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index baa1452..a72add2 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -349,6 +349,7 @@ MemberDef::MemberDef(const char *df,int dl,
argList=0;
}
m_templateMaster=0;
+ classSectionSDict=0;
}
/*! Destroys the member definition. */
@@ -360,6 +361,7 @@ MemberDef::~MemberDef()
delete argList;
delete tArgList;
delete m_defTmpArgLists;
+ delete classSectionSDict;
}
void MemberDef::setReimplements(MemberDef *md)
@@ -1670,3 +1672,14 @@ void MemberDef::addListReference(Definition *d)
d->getOutputFileBase()+":"+anchor(),memName,argsString());
}
+MemberList *MemberDef::getSectionList(Definition *d) const
+{
+ return (d!=0 && classSectionSDict) ? classSectionSDict->find((int)d) : 0;
+}
+
+void MemberDef::setSectionList(Definition *d, MemberList *sl)
+{
+ if (classSectionSDict==0) classSectionSDict = new SIntDict<MemberList>(7);
+ classSectionSDict->append((int)d,sl);
+}
+
diff --git a/src/memberdef.h b/src/memberdef.h
index df4b794..362a82d 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -24,6 +24,7 @@
#include "entry.h"
#include "definition.h"
+#include "sortdict.h"
class ClassDef;
class NamespaceDef;
@@ -81,7 +82,7 @@ class MemberDef : public Definition
const QCString &initializer() const { return init; }
int initializerLines() const { return initLines; }
int getMemberSpecifiers() const { return memSpec; }
- MemberList *getSectionList() const { return section; }
+ MemberList *getSectionList(Definition *d) const;
// scope query members
ClassDef *getClassDef() const { return classDef; }
@@ -143,7 +144,7 @@ class MemberDef : public Definition
void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; }
void setMemberClass(ClassDef *cd);
- void setSectionList(MemberList *sl) { section=sl; }
+ void setSectionList(Definition *d,MemberList *sl);
void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; }
@@ -300,6 +301,7 @@ class MemberDef : public Definition
int groupStartLine; // line " " " " "
bool groupHasDocs; // true if the entry that caused the grouping was documented
MemberDef *m_templateMaster;
+ SIntDict<MemberList> *classSectionSDict;
// disable copying of member defs
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index 469ad0d..086a9f8 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -53,7 +53,7 @@ MemberGroup::~MemberGroup()
delete memberList;
}
-void MemberGroup::insertMember(MemberDef *md)
+void MemberGroup::insertMember(Definition *d,MemberDef *md)
{
//printf("MemberGroup::insertMember memberList=%p count=%d"
// " member section list: %p\n",
@@ -62,13 +62,13 @@ void MemberGroup::insertMember(MemberDef *md)
// md->getSectionList());
MemberDef *firstMd = memberList->first();
if (inSameSection && memberList->count()>0 &&
- firstMd->getSectionList()!=md->getSectionList())
+ firstMd->getSectionList(d)!=md->getSectionList(d))
{
inSameSection=FALSE;
}
else if (inDeclSection==0)
{
- inDeclSection = md->getSectionList();
+ inDeclSection = md->getSectionList(d);
}
memberList->append(md);
@@ -82,9 +82,9 @@ void MemberGroup::insertMember(MemberDef *md)
}
-void MemberGroup::setAnchors()
+void MemberGroup::setAnchors(ClassDef *context)
{
- ::setAnchors(0,'z',memberList,grpId);
+ ::setAnchors(context,'z',memberList,grpId);
}
void MemberGroup::writeDeclarations(OutputList &ol,
diff --git a/src/membergroup.h b/src/membergroup.h
index b1dce56..6eba22b 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -40,8 +40,8 @@ class MemberGroup
~MemberGroup();
QCString header() const { return grpHeader; }
int groupId() const { return grpId; }
- void insertMember(MemberDef *);
- void setAnchors();
+ void insertMember(Definition *d,MemberDef *md);
+ void setAnchors(ClassDef *);
void writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol,
diff --git a/src/outputgen.h b/src/outputgen.h
index 3d6bfae..1b060e8 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -198,8 +198,10 @@ class BaseOutputDocInterface
virtual void endSubscript() = 0;
virtual void startSuperscript() = 0;
virtual void endSuperscript() = 0;
- virtual void startTable(int cols) = 0;
- virtual void endTable() = 0;
+ virtual void startTable(bool hasCaption,int cols) = 0;
+ virtual void endTable(bool hasCaption) = 0;
+ virtual void startCaption() = 0;
+ virtual void endCaption() = 0;
virtual void nextTableRow() = 0;
virtual void endTableRow() = 0;
virtual void nextTableColumn() = 0;
diff --git a/src/outputlist.h b/src/outputlist.h
index 88f3cb4..d96feb7 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -277,10 +277,14 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startSuperscript); }
void endSuperscript()
{ forall(&OutputGenerator::endSuperscript); }
- void startTable(int cols)
- { forall(&OutputGenerator::startTable,cols); }
- void endTable()
- { forall(&OutputGenerator::endTable); }
+ void startTable(bool hasCaption,int cols)
+ { forall(&OutputGenerator::startTable,hasCaption,cols); }
+ void endTable(bool hasCaption)
+ { forall(&OutputGenerator::endTable,hasCaption); }
+ void startCaption()
+ { forall(&OutputGenerator::startCaption); }
+ void endCaption()
+ { forall(&OutputGenerator::endCaption); }
void nextTableRow()
{ forall(&OutputGenerator::nextTableRow); }
void endTableRow()
diff --git a/src/pre.l b/src/pre.l
index 8586270..fdce24b 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -1078,17 +1078,24 @@ BN [ \t\r\n]
BEGIN(CopyLine);
}
}
+<CopyLine>"extern"{BN}*"\"C\""*{BN}*"{" {
+ QCString text=yytext;
+ g_yyLineNr+=text.contains('\n');
+ outputArray(yytext,yyleng);
+ }
<CopyLine>"{" { // count brackets inside the main file
if (g_includeStack.isEmpty())
+ {
g_curlyCount++;
+ }
outputChar(*yytext);
}
<CopyLine>"}" { // count brackets inside the main file
- if (g_includeStack.isEmpty())
+ if (g_includeStack.isEmpty() && g_curlyCount>0)
+ {
g_curlyCount--;
+ }
outputChar(*yytext);
- // This should hold otherwise the preprocessor is confused
- //ASSERT(g_curlyCount>=0);
}
<CopyLine>"'"\\[0-7]{1,3}"'" {
outputArray(yytext,yyleng);
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 0f967b6..81633a6 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -152,12 +152,14 @@ class RTFGenerator : public OutputGenerator
void endSubscript() { t << "}"; }
void startSuperscript() { t << "{\\super " << endl;}
void endSuperscript() { t << "}"; }
- void startTable(int ) { }//t << "\\begin{TabularC}{" << c << "}\n\\hline\n";
- void endTable() { }//t << "\\\\\\hline\n\\end{TabularC}\n";
- void nextTableRow() { }
- void endTableRow() { }//t << "\\\\\\hline\n";
- void nextTableColumn() { }//t << "&";
- void endTableColumn() { }
+ void startTable(bool,int) { /* not implemented */ }
+ void endTable(bool) { /* not implemented */ }
+ void startCaption() { /* not implemented */ }
+ void endCaption() { /* not implemented */ }
+ void nextTableRow() { /* not implemented */ }
+ void endTableRow() { /* not implemented */ }
+ void nextTableColumn() { /* not implemented */ }
+ void endTableColumn() { /* not implemented */ }
void writeCopyright() { t << "\251"; }
void writeQuote() { t << "\""; }
void writeUmlaut(char c);
diff --git a/src/scanner.l b/src/scanner.l
index 6371b71..e70d3da 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -936,11 +936,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
}
<FindMembers>"template"({BN}*)"<"/[>]? {
lineCount();
- // class template specifier already found => member template specifier
- // already inside class => member template specifier
- //if (current->tArgList /*|| (current_root->section&Entry::COMPOUND_MASK)*/)
- //{
- // printf("-------> member template \n");
if (current->tArgLists==0)
{
current->tArgLists = new QList<ArgumentList>;
@@ -950,33 +945,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
al->setAutoDelete(TRUE);
current->tArgLists->append(al);
currentArgumentList = al;
- //if (current->mtArgList)
- // {
- // if (current->tArgList)
- // {
- // delete current->tArgList;
- // }
- // current->tArgList = current->mtArgList;
- // current->mtArgList = 0;
- // }
- // current->mtArgList = new ArgumentList;
- // current->mtArgList->setAutoDelete(TRUE);
- // currentArgumentList = current->mtArgList;
- //}
- //else // class template specifier
- //{
- // printf("-------> class template\n");
- // if (current->tArgList)
- // {
- // current->tArgList->clear();
- // }
- // else
- // {
- // current->tArgList = new ArgumentList;
- // current->tArgList->setAutoDelete(TRUE);
- // }
- // currentArgumentList = current->tArgList;
- //}
templateStr="<";
fullArgString = templateStr.copy();
copyArgString = &templateStr;
@@ -2198,7 +2166,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(SkipCPP);
}
*/
-<FuncQual>[{:;] { unput(*yytext); BEGIN( Function ); }
+<FuncQual>[{:;,] { unput(*yytext); BEGIN( Function ); }
<FuncQual>{BN}*"const"{BN}* {
lineCount() ;
current->args += " const ";
@@ -2263,7 +2231,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Function>":" {
BEGIN(SkipInits);
}
-<Function>[;{] {
+<Function>[;{,] {
current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace();
@@ -2325,7 +2293,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current = new Entry ;
initEntry();
lastCurlyContext = FindMembers;
- if( *yytext == '{' )
+ if ( *yytext == ',' )
+ {
+ current->type = previous->type.data();
+ }
+ if ( *yytext == '{' )
{
if (current_root->section & Entry::COMPOUND_MASK)
previous->memSpec = previous->memSpec | Entry::Inline;
@@ -4023,9 +3995,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->doc += yytext;
}
+<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
+ current->doc += yytext;
+ }
<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->brief += "-";
}
+<ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"."{B}*\n {
+ current->brief += ".";
+ }
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
current->doc+=' ';
diff --git a/src/translator.cpp b/src/translator.cpp
index 3cce9df..00b15b8 100644
--- a/src/translator.cpp
+++ b/src/translator.cpp
@@ -191,3 +191,81 @@ QCString Translator::Windows1251ToKoi8R( const QCString & sInput )
return result.local8Bit();
}
+/*! returns the caracter converted from hankaku-kana to zenkakukana.
+ Thanks Yongmao Ni http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/ */
+unsigned int hankaku2zen(int hankaku)
+{
+ static unsigned int z[64] = {
+ 0x2121,0x2123,0x2156,0x2157,0x2122,0x2126,0x2572,0x2521,
+ 0x2523,0x2525,0x2527,0x2529,0x2563,0x2565,0x2567,0x2543,
+ 0x213c,0x2522,0x2524,0x2526,0x2528,0x252a,0x252b,0x252d,
+ 0x252f,0x2531,0x2533,0x2535,0x2537,0x2539,0x253b,0x253d,
+ 0x253f,0x2541,0x2544,0x2546,0x2548,0x254a,0x254b,0x254c,
+ 0x254d,0x254e,0x254f,0x2552,0x2555,0x2558,0x255b,0x255e,
+ 0x255f,0x2560,0x2561,0x2562,0x2564,0x2566,0x2568,0x2569,
+ 0x256a,0x256b,0x256c,0x256d,0x256f,0x2573,0x212b,0x212c };
+
+ if (hankaku < 0xa0 || hankaku > 0xdf) return 0;
+ return z[hankaku - 0xa0];
+}
+
+/*! returns the character converted from japaneseEUC to SJIS
+ Thanks Yongmao Ni http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/ */
+unsigned int euc2sjis(unsigned int euc)
+{
+ unsigned int jis;
+ unsigned int hib, lob;
+
+ if ((euc & 0xff00) == 0x8e00)
+ jis = hankaku2zen(euc & 0xff);
+ else jis = euc & ~0x8080;
+
+ hib = (jis >> 8) & 0xff;
+ lob = jis & 0xff;
+ lob += (hib & 1) ? 0x1f : 0x7d;
+ if (lob >= 0x7f) lob++;
+ hib = ((hib - 0x21) >> 1) + 0x81;
+ if (hib > 0x9f) hib += 0x40;
+
+ return (hib << 8) | lob;
+}
+
+
+/*! returns the string converted from Japanese-EUC to SJIS */
+
+QCString Translator::JapaneseEucToSjis( const QCString & sInput )
+{
+ QString result;
+ int len = sInput.length();
+ int c1,c2,sj;
+
+ result.setUnicode(0, len);
+ QChar* uc = (QChar*)result.unicode(); // const_cast
+ const unsigned char * c = (const unsigned char *)(const char*)sInput;
+
+ for( int i=0; i<len;)
+ {
+ c1 = c[i];
+
+ if( c1 == EOF ) break;
+
+ /* if MSB=0 then the character is ascii */
+ if(!( c1 & 0x80))
+ {
+ uc[i] = c[i];
+ i=i+1;
+ }
+ else
+ {
+ c2 = c[i+1];
+ if( c2 == EOF ) break;
+ sj = euc2sjis( (c1 << 8) + c2 );
+ uc[i] = sj >> 8;
+ uc[i+1] = sj & 0xff;
+ i+=2;
+ }
+ }
+
+ return result.local8Bit();
+
+}
diff --git a/src/translator.h b/src/translator.h
index cc75d94..725c288 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -44,6 +44,9 @@ class Translator
/*! Returns the string converted from windows-1251 to koi8-r. */
QCString Windows1251ToKoi8R( const QCString & sInput );
+
+ /*! Returns the string converted from Japanese-EUC to SJIS. */
+ QCString JapaneseEucToSjis( const QCString & sInput );
public:
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 4786558..5c240f1 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -15,464 +15,559 @@
*
*/
+/*
+ * translator_jp.h
+ *
+ * 1.2.5)
+ * First Translation
+ * by Kenji Nagamatsu
+ * 1.2.12)
+ * Update and Shift-Jis(_WIN32)
+ * by Ryunosuke Sato (30-Dec-2001)
+ */
+
#ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H
-#include "translator_adapter.h"
-
-class TranslatorJapanese : public TranslatorAdapter_1_2_5
+class TranslatorJapanese : public Translator
{
+ private:
+ /*! The decode() can change euc into sjis */
+ inline QCString decode(const QCString & sInput)
+ {
+#ifdef _WIN32
+ return JapaneseEucToSjis(sInput);
+#else
+ return sInput;
+#endif
+ }
public:
- QCString idLanguage()
+ virtual QCString idLanguage()
{ return "japanese"; }
+ virtual QCString latexLanguageSupportCommand()
+ {
+ return "";
+ }
/*! returns the name of the package that is included by LaTeX */
- QCString latexBabelPackage()
- { return "english"; }
- QCString idLanguageCharset()
- { return "euc-jp"; }
+ virtual QCString idLanguageCharset()
+ {
+#ifdef _WIN32
+ return "ShiftJIS";
+#else
+ return "euc-jp";
+#endif
+ }
/*! used in the compound documentation before a list of related functions. */
- QCString trRelatedFunctions()
- { return "関連する関数"; }
+ virtual QCString trRelatedFunctions()
+ { return decode("関連する関数"); }
/*! subscript for the related functions. */
- QCString trRelatedSubscript()
- { return "(これらはメンバ関数でないことに注意)"; }
+ virtual QCString trRelatedSubscript()
+ { return decode("(これらはメンバ関数でないことに注意)"); }
/*! header that is put before the detailed description of files, classes and namespaces. */
- QCString trDetailedDescription()
- { return "解説"; }
+ virtual QCString trDetailedDescription()
+ { return decode("解説"); }
/*! header that is put before the list of typedefs. */
- QCString trMemberTypedefDocumentation()
- { return "メンバ型定義の解説"; }
+ virtual QCString trMemberTypedefDocumentation()
+ { return decode("メンバ型定義の解説"); }
/*! header that is put before the list of enumerations. */
- QCString trMemberEnumerationDocumentation()
- { return "メンバ列挙型の解説"; }
+ virtual QCString trMemberEnumerationDocumentation()
+ { return decode("メンバ列挙型の解説"); }
/*! header that is put before the list of member functions. */
- QCString trMemberFunctionDocumentation()
- { return "メンバ関数の解説"; }
+ virtual QCString trMemberFunctionDocumentation()
+ { return decode("メンバ関数の解説"); }
/*! header that is put before the list of member attributes. */
- QCString trMemberDataDocumentation()
- { return "メンバデータの解説"; }
+ virtual QCString trMemberDataDocumentation()
+ {
+ if( Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("構造体の解説");
+ }
+ else
+ {
+ return decode("メンバの解説");
+ }
+ }
/*! this is the text of a link put after brief descriptions. */
- QCString trMore()
- { return "より詳しく..."; }
+ virtual QCString trMore()
+ { return decode("より詳しく..."); }
/*! put in the class documentation */
- QCString trListOfAllMembers()
- { return "すべてのメンバリスト"; }
+ virtual QCString trListOfAllMembers()
+ { return decode("すべてのメンバリスト"); }
/*! used as the title of the "list of all members" page of a class */
- QCString trMemberList()
- { return "メンバリスト"; }
+ virtual QCString trMemberList()
+ { return decode("メンバリスト"); }
/*! this is the first part of a sentence that is followed by a class name */
- QCString trThisIsTheListOfAllMembers()
- { return "これは全メンバリストです。"; }
+ virtual QCString trThisIsTheListOfAllMembers()
+ { return decode("これは全メンバリストです。"); }
/*! this is the remainder of the sentence after the class name */
- QCString trIncludingInheritedMembers()
- { return "継承メンバもすべて含んでいます。"; }
+ virtual QCString trIncludingInheritedMembers()
+ { return decode("継承メンバもすべて含んでいます。"); }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
- QCString trGeneratedAutomatically(const char *s)
+ virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result;
if (s) result=(QCString)s+"の";
result+="ソースコードから Doxygen が自動的に生成しました。";
- return result;
+ return decode(result);
}
/*! put after an enum name in the list of all members */
- QCString trEnumName()
- { return "enum 型"; }
+ virtual QCString trEnumName()
+ { return decode("列挙型"); }
/*! put after an enum value in the list of all members */
- QCString trEnumValue()
- { return "enum 値"; }
+ virtual QCString trEnumValue()
+ { return decode("列挙値"); }
/*! put after an undocumented member in the list of all members */
- QCString trDefinedIn()
- { return "次で定義されました。"; }
-
- /*! put as in introduction in the verbatim header file of a class.
- * parameter f is the name of the include file.
- */
- QCString trVerbatimText(const char *f)
- { return (QCString)"これはインクルードファイル"+f+"の内容です。"; }
+ virtual QCString trDefinedIn()
+ { return decode("次で定義されました。"); }
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \group command).
*/
- QCString trModules()
- { return "モジュール"; }
+ virtual QCString trModules()
+ { return decode("モジュール"); }
/*! This is put above each page as a link to the class hierarchy */
- QCString trClassHierarchy()
- { return "クラス階層"; }
+ virtual QCString trClassHierarchy()
+ { return decode("クラス階層"); }
/*! This is put above each page as a link to the list of annotated classes */
- QCString trCompoundList()
- { return "データ構造リスト"; }
+ virtual QCString trCompoundList()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造");
+ }
+ else
+ {
+ return decode("構成");
+ }
+ }
/*! This is put above each page as a link to the list of documented files */
- QCString trFileList()
- { return "ファイルリスト"; }
+ virtual QCString trFileList()
+ { return decode("ファイルリスト"); }
/*! This is put above each page as a link to the list of all verbatim headers */
- QCString trHeaderFiles()
- { return "ヘッダファイル"; }
+ virtual QCString trHeaderFiles()
+ { return decode("ヘッダファイル"); }
/*! This is put above each page as a link to all members of compounds. */
- QCString trCompoundMembers()
- { return "データ構造メンバ"; }
+ virtual QCString trCompoundMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データフィールド");
+ }
+ else
+ {
+ return decode("構成メンバ");
+ }
+ }
/*! This is put above each page as a link to all members of files. */
- QCString trFileMembers()
- { return "ファイルメンバ"; }
-
+ virtual QCString trFileMembers()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("グローバル");
+ }
+ else
+ {
+ return decode("ファイルメンバ");
+ }
+ }
/*! This is put above each page as a link to all related pages. */
- QCString trRelatedPages()
- { return "関連ページ"; }
+ virtual QCString trRelatedPages()
+ { return decode("関連ページ"); }
/*! This is put above each page as a link to all examples. */
- QCString trExamples()
- { return "例"; }
+ virtual QCString trExamples()
+ { return decode("例"); }
/*! This is put above each page as a link to the search engine. */
- QCString trSearch()
- { return "検索"; }
+ virtual QCString trSearch()
+ { return decode("検索"); }
/*! This is an introduction to the class hierarchy. */
- QCString trClassHierarchyDescription()
- { return "この継承リストはおおまかにはソートされていますが、"
- "アルファベット順で完全にソートされてはいません。";
+ virtual QCString trClassHierarchyDescription()
+ { return decode("この継承リストはおおまかにはソートされていますが、"
+ "アルファベット順で完全にソートされてはいません。");
}
/*! This is an introduction to the list with all files. */
- QCString trFileListDescription(bool extractAll)
+ virtual QCString trFileListDescription(bool extractAll)
{
QCString result="このリストは、";
if (!extractAll) result+="ドキュメント化され、";
result+="簡易説明を持つファイルすべてのリストです。";
- return result;
+ return decode(result);
}
/*! This is an introduction to the annotated compound list. */
- QCString trCompoundListDescription()
- { return "これは簡易説明を持つ、クラス、構造体、共用体のリストです。";}
+ virtual QCString trCompoundListDescription()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造の簡単な説明です。");
+ }
+ else
+ {
+ return decode("クラス、構造体、共用体、インタフェースの簡単な説明です。");
+ }
+ }
/*! This is an introduction to the page with all class members. */
- QCString trCompoundMembersDescription(bool extractAll)
+ virtual QCString trCompoundMembersDescription(bool extractAll)
{
QCString result="これは";
if (!extractAll) result+="ドキュメント化された";
- result+="クラスメンバすべてのリストで、それぞれ";
- if (extractAll) result+="が属しているクラス";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="フィールドすべてのリストで、それぞれ";
+ if (extractAll) result+="が属している構造体/共用体";
+ }
+ else
+ {
+ result+="クラスメンバすべてのリストで、それぞれ";
+ if (extractAll) result+="が属しているクラス";
+ }
result+="の解説へのリンクが張られています。";
- return result;
+ return decode(result);
}
/*! This is an introduction to the page with all file members. */
- QCString trFileMembersDescription(bool extractAll)
+ virtual QCString trFileMembersDescription(bool extractAll)
{
QCString result="これは";
if (!extractAll) result+="ドキュメント化された";
- result+="ファイルメンバすべてのリストで、それぞれ";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ result+="関数、変数、マクロ、列挙型、型定義のリストで、それぞれ";
+ }
+ else
+ {
+ result+="ファイルメンバすべてのリストで、それぞれ";
+ }
if (extractAll) result+="が属しているファイル";
result+="の解説へのリンクが張られています。";
- return result;
+ return decode(result);
}
/*! This is an introduction to the page with the list of all header files. */
- QCString trHeaderFilesDescription()
- { return "APIを構成するヘッダファイルです。"; }
+ virtual QCString trHeaderFilesDescription()
+ { return decode("APIを構成するヘッダファイルです。"); }
/*! This is an introduction to the page with the list of all examples */
- QCString trExamplesDescription()
- { return "すべての例のリストです。"; }
+ virtual QCString trExamplesDescription()
+ { return decode("すべての例のリストです。"); }
/*! This is an introduction to the page with the list of related pages */
- QCString trRelatedPagesDescription()
- { return "関連するドキュメントページすべてのリストです。"; }
+ virtual QCString trRelatedPagesDescription()
+ { return decode("関連するドキュメントページすべてのリストです。"); }
/*! This is an introduction to the page with the list of class/file groups */
- QCString trModulesDescription()
- { return "すべてのモジュールのリストです。"; }
+ virtual QCString trModulesDescription()
+ { return decode("すべてのモジュールのリストです。"); }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
- QCString trNoDescriptionAvailable()
- { return "ドキュメントが記述されていません。"; }
+ virtual QCString trNoDescriptionAvailable()
+ { return decode("ドキュメントが記述されていません。"); }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
- QCString trDocumentation()
- { return "ドキュメント"; }
+ virtual QCString trDocumentation()
+ { return decode("ドキュメント"); }
/*! This is used in LaTeX as the title of the chapter with the
* index of all groups.
*/
- QCString trModuleIndex()
- { return "モジュール索引"; }
+ virtual QCString trModuleIndex()
+ { return decode("モジュール索引"); }
/*! This is used in LaTeX as the title of the chapter with the
* class hierarchy.
*/
- QCString trHierarchicalIndex()
- { return "階層索引"; }
+ virtual QCString trHierarchicalIndex()
+ { return decode("階層索引"); }
/*! This is used in LaTeX as the title of the chapter with the
* annotated compound index.
*/
- QCString trCompoundIndex()
- { return "データ構造索引"; }
+ virtual QCString trCompoundIndex()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造索引");
+ }
+ else
+ {
+ return decode("構成索引");
+ }
+ }
/*! This is used in LaTeX as the title of the chapter with the
* list of all files.
*/
- QCString trFileIndex()
- { return "ファイル索引"; }
+ virtual QCString trFileIndex()
+ { return decode("ファイル索引"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups.
*/
- QCString trModuleDocumentation()
- { return "モジュールの解説"; }
+ virtual QCString trModuleDocumentation()
+ { return decode("モジュールの解説"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
- QCString trClassDocumentation()
- { return "クラスの解説"; }
+ virtual QCString trClassDocumentation()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造の解説");
+ }
+ else
+ {
+ return decode("クラスの解説");
+ }
+ }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
- QCString trFileDocumentation()
- { return "ファイルの解説"; }
+ virtual QCString trFileDocumentation()
+ { return decode("ファイルの解説"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
- QCString trExampleDocumentation()
- { return "例題の解説"; }
+ virtual QCString trExampleDocumentation()
+ { return decode("例題の解説"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
- QCString trPageDocumentation()
- { return "ページの解説"; }
+ virtual QCString trPageDocumentation()
+ { return decode("ページの解説"); }
/*! This is used in LaTeX as the title of the document */
- QCString trReferenceManual()
- { return "リファレンスマニュアル"; }
+ virtual QCString trReferenceManual()
+ { return decode("リファレンスマニュアル"); }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
- QCString trDefines()
- { return "マクロ定義"; }
+ virtual QCString trDefines()
+ { return decode("マクロ定義"); }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
- QCString trFuncProtos()
- { return "関数プロトタイプ"; }
+ virtual QCString trFuncProtos()
+ { return decode("関数プロトタイプ"); }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
- QCString trTypedefs()
- { return "型定義"; }
+ virtual QCString trTypedefs()
+ { return decode("型定義"); }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
- QCString trEnumerations()
- { return "列挙型"; }
+ virtual QCString trEnumerations()
+ { return decode("列挙型"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
- QCString trFunctions()
- { return "関数"; }
+ virtual QCString trFunctions()
+ { return decode("関数"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trVariables()
- { return "変数"; }
+ virtual QCString trVariables()
+ { return decode("変数"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) variables
*/
- QCString trEnumerationValues()
- { return "列挙型値"; }
-
- /*! This is used in man pages as the author section. */
- QCString trAuthor()
- { return "作者"; }
-
+ virtual QCString trEnumerationValues()
+ { return decode("列挙型値"); }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
- QCString trDefineDocumentation()
- { return "マクロ定義の解説"; }
+ virtual QCString trDefineDocumentation()
+ { return decode("マクロ定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes
*/
- QCString trFunctionPrototypeDocumentation()
- { return "関数プロトタイプの解説"; }
+ virtual QCString trFunctionPrototypeDocumentation()
+ { return decode("関数プロトタイプの解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs
*/
- QCString trTypedefDocumentation()
- { return "型定義の解説"; }
+ virtual QCString trTypedefDocumentation()
+ { return decode("型定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
- QCString trEnumerationTypeDocumentation()
- { return "列挙型の解説"; }
+ virtual QCString trEnumerationTypeDocumentation()
+ { return decode("列挙型の解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
- QCString trEnumerationValueDocumentation()
- { return "列挙型値の解説"; }
+ virtual QCString trEnumerationValueDocumentation()
+ { return decode("列挙型値の解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
- QCString trFunctionDocumentation()
- { return "関数の解説"; }
+ virtual QCString trFunctionDocumentation()
+ { return decode("関数の解説"); }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
- QCString trVariableDocumentation()
- { return "変数の解説"; }
+ virtual QCString trVariableDocumentation()
+ { return decode("変数の解説"); }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
- QCString trCompounds()
- { return "データ構造"; }
-
- /*! This is used in the documentation of a group before the list of
- * links to documented files
- */
- QCString trFiles()
- { return "ファイル"; }
-
+ virtual QCString trCompounds()
+ {
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造");
+ }
+ else
+ {
+ return decode("構成");
+ }
+ }
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
- QCString trGeneratedAt(const char *date,const char *projName)
+ virtual QCString trGeneratedAt(const char *date,const char *projName)
{
QCString result;
if (projName) result+=(QCString)projName+"に対して";
result+=(QCString)date+"に生成されました。";
- return result;
+ return decode(result);
}
/*! This is part of the sentence used in the standard footer of each page.
*/
- QCString trWrittenBy()
+ virtual QCString trWrittenBy()
{
- return "の開発者:";
+ return decode("担当");
}
/*! this text is put before a class diagram */
- QCString trClassDiagram(const char *clName)
+ virtual QCString trClassDiagram(const char *clName)
{
- return (QCString)clName+"に対するクラス階層図";
+ return decode((QCString)clName+"に対する継承グラフ");
}
/*! this text is generated when the \\internal command is used. */
- QCString trForInternalUseOnly()
- { return "内部使用のみ。"; }
+ virtual QCString trForInternalUseOnly()
+ { return decode("内部使用のみ。"); }
/*! this text is generated when the \\reimp command is used. */
- QCString trReimplementedForInternalReasons()
- { return "内部的な理由により再実装されましたが、APIには影響しません。";
+ virtual QCString trReimplementedForInternalReasons()
+ { return decode("内部的な理由により再実装されましたが、APIには影響しません。");
}
/*! this text is generated when the \\warning command is used. */
- QCString trWarning()
- { return "警告"; }
+ virtual QCString trWarning()
+ { return decode("警告"); }
/*! this text is generated when the \\bug command is used. */
- QCString trBugsAndLimitations()
- { return "バグと制限"; }
+ virtual QCString trBugsAndLimitations()
+ { return decode("バグと制限"); }
/*! this text is generated when the \\version command is used. */
- QCString trVersion()
- { return "バージョン"; }
+ virtual QCString trVersion()
+ { return decode("バージョン"); }
/*! this text is generated when the \\date command is used. */
- QCString trDate()
- { return "日付"; }
+ virtual QCString trDate()
+ { return decode("日付"); }
/*! this text is generated when the \\author command is used. */
- QCString trAuthors()
- { return "作者"; }
+ virtual QCString trAuthors()
+ { return decode("作者"); }
/*! this text is generated when the \\return command is used. */
- QCString trReturns()
- { return "戻り値"; }
+ virtual QCString trReturns()
+ { return decode("戻り値"); }
/*! this text is generated when the \\sa command is used. */
- QCString trSeeAlso()
- { return "参照"; }
+ virtual QCString trSeeAlso()
+ { return decode("参照"); }
/*! this text is generated when the \\param command is used. */
- QCString trParameters()
- { return "引数"; }
+ virtual QCString trParameters()
+ { return decode("引数"); }
/*! this text is generated when the \\exception command is used. */
- QCString trExceptions()
- { return "例外"; }
+ virtual QCString trExceptions()
+ { return decode("例外"); }
/*! this text is used in the title page of a LaTeX document. */
- QCString trGeneratedBy()
- { return ""; }
+ virtual QCString trGeneratedBy()
+ { return decode(""); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */
- QCString trNamespaceList()
- { return "名前空間リスト"; }
+ virtual QCString trNamespaceList()
+ { return decode("名前空間リスト"); }
/*! used as an introduction to the namespace list */
- QCString trNamespaceListDescription(bool extractAll)
+ virtual QCString trNamespaceListDescription(bool extractAll)
{
QCString result="このリストは、簡易説明を持つすべての";
if (!extractAll) result+="ドキュメント化された";
result+="名前空間のリストです。";
- return result;
+ return decode(result);
}
/*! used in the class documentation as a header before the list of all
* friends of a class
*/
- QCString trFriends()
- { return "フレンド"; }
+ virtual QCString trFriends()
+ { return decode("フレンド"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
@@ -482,16 +577,16 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
- { return "フレンドと関連する関数の解説"; }
+ { return decode("フレンドと関連する関数の解説"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */
- QCString trCompoundReference(const char *clName,
+ virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType,
- bool /*isTemplate*/)
+ bool isTemplate)
{
QCString result="";
switch(compType)
@@ -500,52 +595,53 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
case ClassDef::Struct: result+="構造体 "; break;
case ClassDef::Union: result+="共用体 "; break;
case ClassDef::Interface: result+="インタフェース"; break;
- case ClassDef::Exception: result+="Exception "; break; //TODO:fixme
+ case ClassDef::Exception: result+="例外"; break; //TODO:fixme
}
+ if (isTemplate) result+=" テンプレート";
result+=(QCString)clName+" の解説";
- return result;
+ return decode(result);
}
/*! used as the title of the HTML page of a file */
- QCString trFileReference(const char *fileName)
+ virtual QCString trFileReference(const char *fileName)
{
QCString result="ファイル "+(QCString)fileName+" の解説";
- return result;
+ return decode(result);
}
/*! used as the title of the HTML page of a namespace */
- QCString trNamespaceReference(const char *namespaceName)
+ virtual QCString trNamespaceReference(const char *namespaceName)
{
QCString result="名前空間 "+(QCString)namespaceName+" の解説";
- return result;
+ return decode(result);
}
/* these are for the member sections of a class, struct or union */
- QCString trPublicMembers()
- { return "公開メンバ"; }
- QCString trPublicSlots()
- { return "公開スロット"; }
- QCString trSignals()
- { return "シグナル"; }
- QCString trStaticPublicMembers()
- { return "静的公開メンバ"; }
- QCString trProtectedMembers()
- { return "保護メンバ"; }
- QCString trProtectedSlots()
- { return "保護スロット"; }
- QCString trStaticProtectedMembers()
- { return "静的保護メンバ"; }
- QCString trPrivateMembers()
- { return "非公開メンバ"; }
- QCString trPrivateSlots()
- { return "非公開スロット"; }
- QCString trStaticPrivateMembers()
- { return "静的非公開メンバ"; }
+ virtual QCString trPublicMembers()
+ { return decode("公開メンバ"); }
+ virtual QCString trPublicSlots()
+ { return decode("公開スロット"); }
+ virtual QCString trSignals()
+ { return decode("シグナル"); }
+ virtual QCString trStaticPublicMembers()
+ { return decode("静的公開メンバ"); }
+ virtual QCString trProtectedMembers()
+ { return decode("保護メンバ"); }
+ virtual QCString trProtectedSlots()
+ { return decode("保護スロット"); }
+ virtual QCString trStaticProtectedMembers()
+ { return decode("静的保護メンバ"); }
+ virtual QCString trPrivateMembers()
+ { return decode("非公開メンバ"); }
+ virtual QCString trPrivateSlots()
+ { return decode("非公開スロット"); }
+ virtual QCString trStaticPrivateMembers()
+ { return decode("静的非公開メンバ"); }
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
*/
- QCString trWriteList(int numEntries)
+ virtual QCString trWriteList(int numEntries)
{
QCString result;
int i;
@@ -564,47 +660,47 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
result+=", と ";
}
}
- return result;
+ return decode(result);
}
/*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled.
*/
- QCString trInheritsList(int numEntries)
+ virtual QCString trInheritsList(int numEntries)
{
- return trWriteList(numEntries)+"を継承しています。";
+ return decode(trWriteList(numEntries)+"を継承しています。");
}
/*! used in class documentation to produce a list of super classes,
* if class diagrams are disabled.
*/
- QCString trInheritedByList(int numEntries)
+ virtual QCString trInheritedByList(int numEntries)
{
- return trWriteList(numEntries)+"に継承されています。";
+ return decode(trWriteList(numEntries)+"に継承されています。");
}
/*! used in member documentation blocks to produce a list of
* members that are hidden by this one.
*/
- QCString trReimplementedFromList(int numEntries)
+ virtual QCString trReimplementedFromList(int numEntries)
{
- return trWriteList(numEntries)+"を再定義しています。";
+ return decode(trWriteList(numEntries)+"を再定義しています。");
}
/*! used in member documentation blocks to produce a list of
* all member that overwrite the implementation of this member.
*/
- QCString trReimplementedInList(int numEntries)
+ virtual QCString trReimplementedInList(int numEntries)
{
- return trWriteList(numEntries)+"で再定義されています。";
+ return decode(trWriteList(numEntries)+"で再定義されています。");
}
/*! This is put above each page as a link to all members of namespaces. */
- QCString trNamespaceMembers()
- { return "名前空間メンバ"; }
+ virtual QCString trNamespaceMembers()
+ { return decode("名前空間メンバ"); }
/*! This is an introduction to the page with all namespace members */
- QCString trNamespaceMemberDescription(bool extractAll)
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
{
QCString result="これは";
if (!extractAll) result+="ドキュメント化された";
@@ -614,19 +710,19 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
else
result+="が属している名前空間";
result+="へのリンクが張られています。";
- return result;
+ return decode(result);
}
/*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces.
*/
- QCString trNamespaceIndex()
- { return "名前空間索引"; }
+ virtual QCString trNamespaceIndex()
+ { return decode("名前空間索引"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces.
*/
- QCString trNamespaceDocumentation()
- { return "名前空間の解説"; }
+ virtual QCString trNamespaceDocumentation()
+ { return decode("名前空間の解説"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990522
@@ -635,8 +731,8 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! This is used in the documentation before the list of all
* namespaces in a file.
*/
- QCString trNamespaces()
- { return "名前空間"; }
+ virtual QCString trNamespaces()
+ { return decode("名前空間"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990728
@@ -645,7 +741,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page.
*/
- QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
+ virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
bool)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
@@ -656,61 +752,61 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
case ClassDef::Struct: result+="構造体"; break;
case ClassDef::Union: result+="共用体"; break;
case ClassDef::Interface: result+="インタフェース"; break;
- case ClassDef::Exception: result+="Exception"; break; //TODO:fixme
+ case ClassDef::Exception: result+="例外"; break; //TODO:fixme
}
result+="の解説は次のファイルから生成されました:";
- return result;
+ return decode(result);
}
/*! This is in the (quick) index as a link to the alphabetical compound
* list.
*/
- QCString trAlphabeticalList()
- { return "アルファベット順リスト"; }
+ virtual QCString trAlphabeticalList()
+ { return decode("アルファベット順リスト"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
//////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */
- QCString trReturnValues()
- { return "戻り値"; }
+ virtual QCString trReturnValues()
+ { return decode("戻り値"); }
/*! This is in the (quick) index as a link to the main page (index.html)
*/
- QCString trMainPage()
- { return "メインページ"; }
+ virtual QCString trMainPage()
+ { return decode("メインページ"); }
/*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page.
*/
- QCString trPageAbbreviation()
- { return "p."; }
+ virtual QCString trPageAbbreviation()
+ { return decode("p."); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991003
//////////////////////////////////////////////////////////////////////////
- QCString trSources()
+ virtual QCString trSources()
{
- return "ソース";
+ return decode("ソース");
}
- QCString trDefinedAtLineInSourceFile()
+ virtual QCString trDefinedAtLineInSourceFile()
{
- return "ファイル @1 の @0 行で定義されています。";
+ return decode("ファイル @1 の @0 行で定義されています。");
}
- QCString trDefinedInSourceFile()
+ virtual QCString trDefinedInSourceFile()
{
- return "ファイル @0 で定義されています。";
+ return decode("ファイル @0 で定義されています。");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.0.0
//////////////////////////////////////////////////////////////////////////
- QCString trDeprecated()
+ virtual QCString trDeprecated()
{
- return "Deprecated";
+ return decode("非推奨");
}
//////////////////////////////////////////////////////////////////////////
@@ -718,115 +814,122 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */
- QCString trCollaborationDiagram(const char *clName)
+ virtual QCString trCollaborationDiagram(const char *clName)
{
- return (QCString)clName+"のコラボレーション図";
+ return decode((QCString)clName+"のコラボレーション図");
}
/*! this text is put before an include dependency graph */
- QCString trInclDepGraph(const char *fName)
+ virtual QCString trInclDepGraph(const char *fName)
{
- return (QCString)fName+"のインクルード依存関係図";
+ return decode((QCString)fName+"のインクルード依存関係図");
}
/*! header that is put before the list of constructor/destructors. */
- QCString trConstructorDocumentation()
+ virtual QCString trConstructorDocumentation()
{
- return "コンストラクタとデストラクタの解説";
+ return decode("コンストラクタとデストラクタの解説");
}
/*! Used in the file documentation to point to the corresponding sources. */
- QCString trGotoSourceCode()
+ virtual QCString trGotoSourceCode()
{
- return "このファイルのソースコードを見る。";
+ return decode("このファイルのソースコードを見る。");
}
/*! Used in the file sources to point to the corresponding documentation. */
- QCString trGotoDocumentation()
+ virtual QCString trGotoDocumentation()
{
- return "このファイルの解説を見る。";
+ return decode("このファイルの解説を見る。");
}
/*! Text for the \\pre command */
- QCString trPrecondition()
+ virtual QCString trPrecondition()
{
- return "事前条件";
+ return decode("事前条件");
}
/*! Text for the \\post command */
- QCString trPostcondition()
+ virtual QCString trPostcondition()
{
- return "事後条件";
+ return decode("事後条件");
}
/*! Text for the \\invariant command */
- QCString trInvariant()
+ virtual QCString trInvariant()
{
- return "Invariant";
+ return decode("不変");
}
/*! Text shown before a multi-line variable/enum initialization */
- QCString trInitialValue()
+ virtual QCString trInitialValue()
{
- return "初期値:";
+ return decode("初期値:");
}
/*! Text used the source code in the file index */
- QCString trCode()
+ virtual QCString trCode()
{
- return "コード";
+ return decode("コード");
}
- QCString trGraphicalHierarchy()
+ virtual QCString trGraphicalHierarchy()
{
- return "クラス階層図";
+ return decode("クラス階層図");
}
- QCString trGotoGraphicalHierarchy()
+ virtual QCString trGotoGraphicalHierarchy()
{
- return "クラス階層図を見る。";
+ return decode("クラス階層図を見る。");
}
- QCString trGotoTextualHierarchy()
+ virtual QCString trGotoTextualHierarchy()
{
- return "クラス階層図(テキスト)を見る。";
+ return decode("クラス階層図(テキスト)を見る。");
}
- QCString trPageIndex()
+ virtual QCString trPageIndex()
{
- return "ページ索引";
+ return decode("ページ索引");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
- QCString trNote()
+ virtual QCString trNote()
{
- return "覚え書き";
+ return decode("覚え書き");
}
- QCString trPublicTypes()
+ virtual QCString trPublicTypes()
{
- return "公開型";
+ return decode("公開型");
}
- QCString trPublicAttribs()
+ virtual QCString trPublicAttribs()
{
- return "公開属性";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データフィールド");
+ }
+ else
+ {
+ return decode("公開属性");
+ }
}
- QCString trStaticPublicAttribs()
+ virtual QCString trStaticPublicAttribs()
{
- return "静的公開属性";
+ return decode("静的公開属性");
}
- QCString trProtectedTypes()
+ virtual QCString trProtectedTypes()
{
- return "保護型";
+ return decode("保護型");
}
- QCString trProtectedAttribs()
+ virtual QCString trProtectedAttribs()
{
- return "保護属性";
+ return decode("保護属性");
}
- QCString trStaticProtectedAttribs()
+ virtual QCString trStaticProtectedAttribs()
{
- return "静的保護属性";
+ return decode("静的保護属性");
}
- QCString trPrivateTypes()
+ virtual QCString trPrivateTypes()
{
- return "非公開型";
+ return decode("非公開型");
}
- QCString trPrivateAttribs()
+ virtual QCString trPrivateAttribs()
{
- return "非公開属性";
+ return decode("非公開属性");
}
- QCString trStaticPrivateAttribs()
+ virtual QCString trStaticPrivateAttribs()
{
- return "静的非公開属性";
+ return decode("静的非公開属性");
}
//////////////////////////////////////////////////////////////////////////
@@ -834,40 +937,40 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a todo item */
- QCString trTodo()
+ virtual QCString trTodo()
{
- return "TODO";
+ return decode("TODO");
}
/*! Used as the header of the todo list */
- QCString trTodoList()
+ virtual QCString trTodoList()
{
- return "TODOリスト";
+ return decode("TODOリスト");
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.4
//////////////////////////////////////////////////////////////////////////
- QCString trReferencedBy()
+ virtual QCString trReferencedBy()
{
- return "次で参照されています。";
+ return decode("参照位置");
}
- QCString trRemarks()
+ virtual QCString trRemarks()
{
- return "意見";
+ return decode("意見");
}
- QCString trAttention()
+ virtual QCString trAttention()
{
- return "注意";
+ return decode("注意");
}
- QCString trInclByDepGraph()
+ virtual QCString trInclByDepGraph()
{
- return "このグラフは、このファイルがどのファイルから直接、間接的に"
- "インクルードされているかを示しています。";
+ return decode("このグラフは、このファイルがどのファイルから直接、間接的に"
+ "インクルードされているかを示しています。");
}
- QCString trSince()
+ virtual QCString trSince()
{
- return "Since";
+ return decode("から");
}
//////////////////////////////////////////////////////////////////////////
@@ -875,15 +978,15 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! title of the graph legend page */
- QCString trLegendTitle()
+ virtual QCString trLegendTitle()
{
- return "グラフの凡例";
+ return decode("グラフの凡例");
}
/*! page explaining how the dot graph's should be interpreted */
- QCString trLegendDocs()
+ virtual QCString trLegendDocs()
{
return
- "このページでは、doxygen で生成されたグラフをどのようにみたらよいかを"
+ decode("このページでは、doxygen で生成されたグラフをどのようにみたらよいかを"
"説明します。<p>\n"
"次の例を考えてみます。\n"
"\\code\n"
@@ -933,12 +1036,12 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
"<li>紫の破線矢印は、そのクラスが他のクラスに含まれていたり、"
"利用されていることを示します。また、矢印が指しているクラスや構造体を"
"どの変数でアクセスできるかを矢印のラベルとして示しています。\n"
- "</ul>\n";
+ "</ul>\n");
}
/*! text for the link to the legend page */
- QCString trLegend()
+ virtual QCString trLegend()
{
- return "凡例";
+ return decode("凡例");
}
//////////////////////////////////////////////////////////////////////////
@@ -946,14 +1049,14 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */
- QCString trTest()
+ virtual QCString trTest()
{
- return "テスト";
+ return decode("テスト");
}
/*! Used as the header of the test list */
- QCString trTestList()
+ virtual QCString trTestList()
{
- return "テストリスト";
+ return decode("テストリスト");
}
//////////////////////////////////////////////////////////////////////////
@@ -961,9 +1064,9 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
- QCString trDCOPMethods()
+ virtual QCString trDCOPMethods()
{
- return "DCOPメソッド";
+ return decode("DCOPメソッド");
}
//////////////////////////////////////////////////////////////////////////
@@ -971,14 +1074,14 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */
- QCString trProperties()
+ virtual QCString trProperties()
{
- return "プロパティ";
+ return decode("プロパティ");
}
/*! Used as a section header for IDL property documentation */
- QCString trPropertyDocumentation()
+ virtual QCString trPropertyDocumentation()
{
- return "プロパティの解説";
+ return decode("プロパティの解説");
}
@@ -989,43 +1092,241 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
- return "インターフェース";
+ return decode("インターフェース");
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
{
- return "クラス";
+ if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
+ {
+ return decode("データ構造");
+ }
+ else
+ {
+ return decode("クラス");
+ }
}
/*! Used as the title of a Java package */
virtual QCString trPackage(const char *name)
{
- return (QCString)"パッケージ "+name;
+ return decode((QCString)"パッケージ "+name);
}
/*! Title of the package index page */
virtual QCString trPackageList()
{
- return "パッケージリスト";
+ return decode("パッケージリスト");
}
/*! The description of the package index page */
virtual QCString trPackageListDescription()
{
- return "簡易説明を持つパッケージです。";
+ return decode("簡易説明を持つパッケージです。");
}
/*! The link name in the Quick links header for each page */
virtual QCString trPackages()
{
- return "パッケージ";
+ return decode("パッケージ");
}
/*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation()
{
- return "パッケージの解説";
+ return decode("パッケージの解説");
}
/*! Text shown before a multi-line define */
virtual QCString trDefineValue()
{
- return "値:";
+ return decode("値:");
+ }
+
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.5
+//////////////////////////////////////////////////////////////////////////
+
+ /*! Used as a marker that is put before a \\bug item */
+ virtual QCString trBug()
+ {
+ return decode("バグ");
+ }
+ /*! Used as the header of the bug list */
+ virtual QCString trBugList()
+ {
+ return decode("バグのリスト");
}
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.6
+//////////////////////////////////////////////////////////////////////////
+
+ /*! 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
+ * ------------------------------------------------------
+ * DEFAULT_CHARSET 1 (x01)
+ * SYMBOL_CHARSET 2 (x02)
+ * OEM_CHARSET 255 (xFF)
+ * ANSI_CHARSET 0 (x00) 1252
+ * RUSSIAN_CHARSET 204 (xCC) 1251
+ * EE_CHARSET 238 (xEE) 1250
+ * GREEK_CHARSET 161 (xA1) 1253
+ * TURKISH_CHARSET 162 (xA2) 1254
+ * BALTIC_CHARSET 186 (xBA) 1257
+ * HEBREW_CHARSET 177 (xB1) 1255
+ * ARABIC _CHARSET 178 (xB2) 1256
+ * SHIFTJIS_CHARSET 128 (x80) 932
+ * HANGEUL_CHARSET 129 (x81) 949
+ * GB2313_CHARSET 134 (x86) 936
+ * CHINESEBIG5_CHARSET 136 (x88) 950
+ * </pre>
+ *
+ */
+ virtual QCString trRTFansicp()
+ {
+ return "932";
+ }
+
+
+ /*! Used as ansicpg for RTF fcharset
+ * \see trRTFansicp() for a table of possible values.
+ */
+ virtual QCString trRTFCharSet()
+ {
+ return "128";
+ }
+
+ /*! Used as header RTF general index */
+ virtual QCString trRTFGeneralIndex()
+ {
+ return decode("索引");
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trClass(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("クラス");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trFile(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("ファイル");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trNamespace(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("名前空間");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trGroup(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("グループ");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trPage(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("ページ");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trMember(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("メンバ");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trField(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("フィールド");
+ return decode(result);
+ }
+
+ /*! This is used for translation of the word that will possibly
+ * be followed by a single name or by a list of names
+ * of the category.
+ */
+ virtual QCString trGlobal(bool first_capital, bool singular)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("グローバル");
+ return decode(result);
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.7
+//////////////////////////////////////////////////////////////////////////
+
+ /*! 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)
+ {
+ first_capital = first_capital;
+ singular = singular;
+ QCString result("作者");
+ return decode(result);
+ }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.11
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This text is put before the list of members referenced by a member
+ */
+ virtual QCString trReferences()
+ {
+ return decode("参照");
+ }
+
};
+
+
+
+
#endif
diff --git a/src/translator_sk.h b/src/translator_sk.h
index 77eb802..dfdfe3b 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -23,7 +23,7 @@
#ifndef TRANSLATOR_SK_H
#define TRANSLATOR_SK_H
-class TranslatorSlovak : public TranslatorAdapter_1_2_11
+class TranslatorSlovak : public Translator
{
private:
/*! The Decode() inline assumes the source written in the
@@ -1221,13 +1221,13 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11
/*! Used as ansicpg for RTF fcharset */
virtual QCString trRTFCharSet()
{
- return "0"; //???
+ return "3";
}
/*! Used as header RTF general index */
virtual QCString trRTFGeneralIndex()
{
- return "Index"; //???
+ return "Index";
}
/*! This is used for translation of the word that will possibly
@@ -1331,6 +1331,17 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11
result += (singular) ? "r" : "ri";
return result;
}
+
+//////////////////////////////////////////////////////////////////////////
+// new since 1.2.11
+//////////////////////////////////////////////////////////////////////////
+
+ /*! This text is put before the list of members referenced by a member
+ */
+ virtual QCString trReferences()
+ {
+ return Decode("Odkazuje sa na");
+ }
};
#endif // TRANSLATOR_SK_H
diff --git a/src/util.cpp b/src/util.cpp
index e73b45b..25b00e4 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -3102,7 +3102,8 @@ const char *getOverloadDocs()
"function only in what argument(s) it accepts.";
}
-void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict)
+void addMembersToMemberGroup(MemberList *ml,
+ MemberGroupSDict *memberGroupSDict,Definition *context)
{
MemberListIterator mli(*ml);
MemberDef *md;
@@ -3122,19 +3123,30 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict)
mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
memberGroupSDict->append(groupId,mg);
}
- md = ml->take(index);
- mg->insertMember(md);
+ md = ml->take(index); // remove from member list
+ //if (allMembers) // remove from all member list as well
+ //{
+ // MemberNameInfo *mni = allMembers->find(md->name());
+ // if (mni)
+ // {
+ // QListIterator<MemberInfo> mii(*mni);
+ // MemberInfo *mi;
+ // for (;(mi=mii.current());++mii)
+ // {
+ // if (mi->memberDef==md)
+ // {
+ // mni->remove(mi);
+ // break;
+ // }
+ // }
+ // }
+ //}
+ mg->insertMember(context,md); // insert in member group
md->setMemberGroup(mg);
+ continue;
}
- else
- {
- ++mli;++index;
- }
- }
- else
- {
- ++mli;++index;
}
+ ++mli;++index;
}
}
diff --git a/src/util.h b/src/util.h
index 2bf9de7..1572cb5 100644
--- a/src/util.h
+++ b/src/util.h
@@ -42,6 +42,7 @@ class ClassList;
class MemberGroupSDict;
class Definition;
struct TagInfo;
+class MemberNameInfoSDict;
//--------------------------------------------------------------------
@@ -148,7 +149,9 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s);
QCString convertToXML(const char *s);
const char * getOverloadDocs();
-void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict);
+void addMembersToMemberGroup(MemberList *ml,
+ MemberGroupSDict *memberGroupSDict,
+ Definition *context=0);
bool extractClassNameFromType(const QCString &type,int &pos,
QCString &name,QCString &templSpec);
QCString substituteTemplateArgumentsInString(
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 2c4087a..049e3d5 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -83,16 +83,12 @@ inline void writeXMLString(QTextStream &t,const char *s)
void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId,
const char *anchorId,const char *text)
{
- t << "<ref idref=\"" << compoundId;
- if (anchorId)
- {
- t << "_1" << anchorId;
- }
+ t << "<ref refid=\"" << compoundId;
+ if (anchorId) t << "_1" << anchorId;
+ t << "\" kindref=\"";
+ if (anchorId) t << "member"; else t << "compound";
t << "\"";
- if (extRef)
- {
- t << " external=\"" << extRef << "\"";
- }
+ if (extRef) t << " external=\"" << extRef << "\"";
t << ">";
writeXMLString(t,text);
t << "</ref>";
@@ -613,17 +609,27 @@ class XMLGenerator : public OutputDocInterface
XML_DB(("(endSuperscript)\n"));
m_t << "</superscript>";
}
- void startTable(int cols)
+ void startTable(bool,int cols)
{
XML_DB(("startTable\n"));
startParMode();
m_t << "<table cols=\"" << cols << "\">\n";
}
- void endTable()
+ void endTable(bool)
{
XML_DB(("endTable\n"));
m_t << "</row>\n</table>";
}
+ void startCaption()
+ {
+ XML_DB(("startCaption"));
+ m_t << "<caption>";
+ }
+ void endCaption()
+ {
+ XML_DB(("encCaption"));
+ m_t << "</caption";
+ }
void nextTableRow()
{
XML_DB(("(nextTableRow)\n"));
@@ -764,15 +770,20 @@ class XMLGenerator : public OutputDocInterface
{
XML_DB(("(endPageRef)\n"));
}
- void writeLineNumber(const char *,const char *file, // TODO: support external references
- const char *anchor,int l)
+ void writeLineNumber(const char *extRef,const char *compId,
+ const char *anchorId,int l)
{
XML_DB(("(writeLineNumber)\n"));
m_t << "<linenumber";
m_t << " line=\"" << l << "\"";
- if (file)
+ if (compId)
{
- m_t << " refid=\"" << file << "_1" << anchor << "\"";
+ m_t << " refid=\"" << compId;
+ if (anchorId) m_t << "_1" << anchorId;
+ m_t << "\" kindref=\"";
+ if (anchorId) m_t << "member"; else m_t << "compound";
+ m_t << "\"";
+ if (extRef) m_t << " external=\"" << extRef << "\"";
}
m_t << "/>";
}
@@ -1172,7 +1183,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
{
t << " <exceptions>";
linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),md->excpString());
- t << "</exception>" << endl;
+ t << "</exceptions>" << endl;
}
if (md->memberType()==MemberDef::Enumeration) // enum
@@ -1293,7 +1304,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli)
{
- t << " <basecompoundref idref=\""
+ t << " <basecompoundref refid=\""
<< bcd->classDef->getOutputFileBase()
<< "\" prot=\"";
switch (bcd->prot)
@@ -1318,7 +1329,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli)
{
- t << " <derivedcompoundref idref=\""
+ t << " <derivedcompoundref refid=\""
<< bcd->classDef->getOutputFileBase()
<< "\" prot=\"";
switch (bcd->prot)