Commit 9d4d8095 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.13.1

parent ad53b7be
...@@ -140,7 +140,7 @@ MAN_LINKS = NO ...@@ -140,7 +140,7 @@ MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
...@@ -168,7 +168,7 @@ PERL_PATH = /usr/bin/perl ...@@ -168,7 +168,7 @@ PERL_PATH = /usr/bin/perl
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO CLASS_DIAGRAMS = NO
HAVE_DOT = NO HAVE_DOT = YES
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES TEMPLATE_RELATIONS = YES
......
DOXYGEN Version 1.2.13 DOXYGEN Version 1.2.13.1
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (29 December 2001) Dimitri van Heesch (05 January 2002)
DOXYGEN Version 1.2.13 DOXYGEN Version 1.2.13.1
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (29 December 2001) Dimitri van Heesch (dimitri@stack.nl) (05 January 2002)
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- NOTE: THIS DTD IS NOT UP TO DATE!!! DO NOT DEPEND ON IT -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!-- DTD describing the grammar used in doxygen's XML output --> <!-- 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 --> <!-- standard character entities -->
<!ENTITY lt "&#38;#60;"> <!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;"> <!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;"> <!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;"> <!ENTITY apos "&#39;">
<!ENTITY quot "&#34;"> <!ENTITY quot "&#34;">
<!-- required attributes for compounds --> <!--
<!ENTITY % compound-req.att Document root
-->
<!ELEMENT doxygen (compounddef)*>
<!--
Compound related entities and elements
-->
<!ENTITY % compound-req.att
'id ID #REQUIRED 'id ID #REQUIRED
type (group|file|namespace| kind (group|file|namespace|
class|struct|union| class|struct|union|
interface|dispinterface| interface|dispinterface|
valuetype|library) #REQUIRED' valuetype|library) #REQUIRED'
> >
<!-- required attributes for references -->
<!ENTITY % ref-req.att 'idref IDREF #REQUIRED' <!ENTITY % ref-req.att 'idref IDREF #REQUIRED'
> >
<!-- required attributes for inheritance relations -->
<!ENTITY % inheritcompref-req.att <!ENTITY % inheritcompref-req.att
'%ref-req.att; '%ref-req.att;
prot (public|protected|private) #REQUIRED prot (public|protected|private) #REQUIRED
virt (non-virtual|virtual) #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 --> <!-- required attributes for member sections -->
<!ENTITY % sec-req.att 'type (user <!ENTITY % sec-req.att 'kind (user
|public-type |public-type
|public-func |public-func
|public-attrib |public-attrib
...@@ -59,65 +101,148 @@ ...@@ -59,65 +101,148 @@
) #REQUIRED ) #REQUIRED
' '
> >
<!-- required attributes for members -->
<!ENTITY % mem-req.att 'id ID #REQUIRED'> <!ENTITY % mem-req.att 'id ID #REQUIRED'>
<!-- optional attributes for function --> <!-- optional attributes for function -->
<!ENTITY % func-opt.att 'virt (virtual|pure-virtual) #IMPLIED'> <!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)> <!ELEMENT memberref (#PCDATA)>
<!ATTLIST memberref %ref-req.att;> <!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 sectionlist (sectiondef)+>
<!ELEMENT sectiondef (memberlist)>
<!ELEMENT sectiondef (memberdef|memberlist)*>
<!ATTLIST sectiondef %sec-req.att;> <!ATTLIST sectiondef %sec-req.att;>
<!ELEMENT memberlist (functiondef|variabledef|typedef|definedef|enumdef)+> <!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;> <!ATTLIST functiondef %mem-req.att; %func-opt.att;>
<!ELEMENT variabledef (type,name,array?,initializer?)> <!ELEMENT variabledef (type,name,array?,initializer?)>
<!ATTLIST variabledef %mem-req.att;> <!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)> <!ELEMENT typedef (type,name)>
<!ATTLIST typedef %mem-req.att;> <!ATTLIST typedef %mem-req.att;>
<!ELEMENT definedef (name,defparamlist?,initializer?)>
<!ELEMENT definedef (name,defparameterlist?,initializer?)>
<!ATTLIST definedef %mem-req.att;> <!ATTLIST definedef %mem-req.att;>
<!ELEMENT enumdef (name,enumvaluelist)> <!ELEMENT enumdef (name,enumvaluelist)>
<!ATTLIST enumdef %mem-req.att;> <!ATTLIST enumdef %mem-req.att;>
<!ELEMENT slotdef (type,name,paramlist)>
<!ELEMENT slotdef (type,name,parameterlist)>
<!ATTLIST slotdef %mem-req.att;> <!ATTLIST slotdef %mem-req.att;>
<!ELEMENT signaldef (type,name,paramlist)>
<!ELEMENT signaldef (type,name,parameterlist)>
<!ATTLIST signaldef %mem-req.att;> <!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 enumvaluelist (enumvalue)*>
<!ELEMENT enumvalue (name,initializer?)> <!ELEMENT enumvalue (name,initializer?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT compoundname (#PCDATA)>
<!ELEMENT declname (#PCDATA)> <!ELEMENT declname (#PCDATA)>
<!ELEMENT defname (#PCDATA)> <!ELEMENT defname (#PCDATA)>
<!ELEMENT type (#PCDATA|memberref|compoundref|compounddef)*>
<!ELEMENT type (#PCDATA|memberref|compoundref|compounddef|ref)*>
<!ELEMENT defval (#PCDATA|memberref|compoundref)*> <!ELEMENT defval (#PCDATA|memberref|compoundref)*>
<!ELEMENT initializer (#PCDATA|memberref|compoundref)*>
<!ELEMENT initializer (#PCDATA|memberref|compoundref|ref)*>
<!ELEMENT array (#PCDATA)> <!ELEMENT array (#PCDATA)>
<!ELEMENT attributes (#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>
...@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText ...@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText
class ILT_Ref : public ILinkedText class ILT_Ref : public ILinkedText
{ {
public: public:
enum TargetKind { Member, Compound };
virtual QString id() const = 0; virtual QString id() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0; virtual QString external() const = 0;
virtual QString text() const = 0; virtual QString text() const = 0;
}; };
...@@ -104,8 +106,8 @@ class IDoc ...@@ -104,8 +106,8 @@ class IDoc
Para, // 0 -> IDocPara Para, // 0 -> IDocPara
Text, // 1 -> IDocText Text, // 1 -> IDocText
MarkupModifier, // 2 -> IDocMarkupModifier MarkupModifier, // 2 -> IDocMarkupModifier
ItemizedList, // 3 -> IDocList ItemizedList, // 3 -> IDocItemizedList
OrderedList, // 4 -> IDocList OrderedList, // 4 -> IDocOrderedList
ListItem, // 5 -> IDocListItem ListItem, // 5 -> IDocListItem
ParameterList, // 6 -> IDocParameterList ParameterList, // 6 -> IDocParameterList
Parameter, // 7 -> IDocParameter Parameter, // 7 -> IDocParameter
...@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup ...@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup
class IDocMarkupModifier : public IDoc 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 class IDocListItem : public IDoc
{ {
public:
virtual IDocIterator *contents() const = 0;
}; };
class IDocParameterList : public IDoc class IDocParameterList : public IDoc
{ {
public:
enum Types { Param, RetVal, Exception };
virtual Types listType() const = 0;
virtual IDocIterator *params() const = 0;
}; };
class IDocParameter : public IDoc 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: 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 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 class IDocVariableList : public IDoc
......
...@@ -111,7 +111,7 @@ void CompoundHandler::endCompoundName() ...@@ -111,7 +111,7 @@ void CompoundHandler::endCompoundName()
void CompoundHandler::addSuperClass(const QXmlAttributes& attrib) void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
{ {
SuperClass *sc=new SuperClass( SuperClass *sc=new SuperClass(
attrib.value("idref"), attrib.value("refid"),
attrib.value("prot"), attrib.value("prot"),
attrib.value("virt") attrib.value("virt")
); );
...@@ -125,7 +125,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib) ...@@ -125,7 +125,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
void CompoundHandler::addSubClass(const QXmlAttributes& attrib) void CompoundHandler::addSubClass(const QXmlAttributes& attrib)
{ {
SubClass *sc = new SubClass( SubClass *sc = new SubClass(
attrib.value("idref"), attrib.value("refid"),
attrib.value("prot"), attrib.value("prot"),
attrib.value("virt") attrib.value("virt")
); );
......
...@@ -232,47 +232,85 @@ void ListItemHandler::startParagraph(const QXmlAttributes& attrib) ...@@ -232,47 +232,85 @@ void ListItemHandler::startParagraph(const QXmlAttributes& attrib)
m_children.append(parHandler); m_children.append(parHandler);
} }
IDocIterator *ListItemHandler::contents() const
{
return new ListItemIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ListHandler // OrderedListHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
ListHandler::ListHandler(Kind k,IBaseHandler *parent) OrderedListHandler::OrderedListHandler(IBaseHandler *parent) : m_parent(parent)
: m_parent(parent), m_kind(k)
{ {
m_children.setAutoDelete(TRUE); m_children.setAutoDelete(TRUE);
const char *endListName=0; addEndHandler("orderedlist",this,&OrderedListHandler::endOrderedList);
switch(k) addStartHandler("listitem",this,&OrderedListHandler::startOrderedListItem);
{ }
case ItemizedList : endListName="itemizedlist"; break;
case OrderedList : endListName="orderedlist"; break;
default: ASSERT(0);
}
addEndHandler(endListName,this,&ListHandler::endList);
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); m_parent->setDelegate(this);
} }
void ListHandler::endList() void ItemizedListHandler::endItemizedList()
{ {
m_parent->setDelegate(0); m_parent->setDelegate(0);
} }
void ListHandler::startListItem(const QXmlAttributes& attrib) void ItemizedListHandler::startItemizedListItem(const QXmlAttributes& attrib)
{ {
ListItemHandler *liHandler = new ListItemHandler(this); ListItemHandler *liHandler = new ListItemHandler(this);
liHandler->startListItem(attrib); liHandler->startListItem(attrib);
m_children.append(liHandler); m_children.append(liHandler);
} }
IDocIterator *ItemizedListHandler::elements() const
{
return new ItemizedListIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ParameterHandler // ParameterHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -372,6 +410,11 @@ void ParameterListHandler::startParameterDescription(const QXmlAttributes& attri ...@@ -372,6 +410,11 @@ void ParameterListHandler::startParameterDescription(const QXmlAttributes& attri
m_curParam->startParameterDescription(attrib); m_curParam->startParameterDescription(attrib);
} }
IDocIterator *ParameterListHandler::params() const
{
return new ParameterListIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// LinkHandler // LinkHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1116,6 +1159,8 @@ TableHandler::TableHandler(IBaseHandler *parent) ...@@ -1116,6 +1159,8 @@ TableHandler::TableHandler(IBaseHandler *parent)
m_children.setAutoDelete(TRUE); m_children.setAutoDelete(TRUE);
addEndHandler("table",this,&TableHandler::endTable); addEndHandler("table",this,&TableHandler::endTable);
addStartHandler("row",this,&TableHandler::startRow); addStartHandler("row",this,&TableHandler::startRow);
addStartHandler("caption",this,&TableHandler::startCaption);
addEndHandler("caption",this,&TableHandler::endCaption);
} }
TableHandler::~TableHandler() TableHandler::~TableHandler()
...@@ -1141,6 +1186,16 @@ void TableHandler::startRow(const QXmlAttributes& attrib) ...@@ -1141,6 +1186,16 @@ void TableHandler::startRow(const QXmlAttributes& attrib)
m_children.append(rh); m_children.append(rh);
} }
void TableHandler::startCaption(const QXmlAttributes& /*attrib*/)
{
m_curString="";
}
void TableHandler::endCaption()
{
m_caption = m_curString;
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ParagraphHandler // ParagraphHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1195,16 +1250,16 @@ void ParagraphHandler::endParagraph() ...@@ -1195,16 +1250,16 @@ void ParagraphHandler::endParagraph()
void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib) void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib)
{ {
addTextNode(); addTextNode();
ListHandler *listHandler = new ListHandler(ItemizedList,this); ItemizedListHandler *listHandler = new ItemizedListHandler(this);
listHandler->startList(attrib); listHandler->startItemizedList(attrib);
m_children.append(listHandler); m_children.append(listHandler);
} }
void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib) void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib)
{ {
addTextNode(); addTextNode();
ListHandler *listHandler = new ListHandler(OrderedList,this); OrderedListHandler *listHandler = new OrderedListHandler(this);
listHandler->startList(attrib); listHandler->startOrderedList(attrib);
m_children.append(listHandler); m_children.append(listHandler);
} }
......
...@@ -63,6 +63,8 @@ class MarkupModifierNode : public IDocMarkupModifier ...@@ -63,6 +63,8 @@ class MarkupModifierNode : public IDocMarkupModifier
// IDocMarkupModifier // IDocMarkupModifier
virtual Kind kind() const { return MarkupModifier; } virtual Kind kind() const { return MarkupModifier; }
virtual bool enabled() const { return m_enabled; }
virtual int markup() const { return m_markup; }
private: private:
int m_markup; int m_markup;
...@@ -106,6 +108,59 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler> ...@@ -106,6 +108,59 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
int m_curMarkup; 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> ...@@ -114,6 +169,7 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
*/ */
class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler> class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler>
{ {
friend class ListItemIterator;
public: public:
ListItemHandler(IBaseHandler *parent); ListItemHandler(IBaseHandler *parent);
virtual ~ListItemHandler(); virtual ~ListItemHandler();
...@@ -123,39 +179,86 @@ class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler> ...@@ -123,39 +179,86 @@ class ListItemHandler : public IDocListItem, public BaseHandler<ListItemHandler>
// IDocItem // IDocItem
virtual Kind kind() const { return ListItem; } virtual Kind kind() const { return ListItem; }
virtual IDocIterator *contents() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<IDoc> m_children; 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. /*! \brief Node representing list of items.
* *
*/ */
class ListHandler : public IDocList, public BaseHandler<ListHandler> class OrderedListHandler : public IDocOrderedList, public BaseHandler<OrderedListHandler>
{ {
friend class OrderedListIterator;
public: public:
ListHandler(Kind k,IBaseHandler *parent); OrderedListHandler(IBaseHandler *parent);
virtual ~ListHandler(); virtual ~OrderedListHandler();
virtual void startList(const QXmlAttributes& attrib); virtual void startOrderedList(const QXmlAttributes& attrib);
virtual void endList(); virtual void endOrderedList();
virtual void startListItem(const QXmlAttributes& attrib); virtual void startOrderedListItem(const QXmlAttributes& attrib);
// IDocList // IDocOrderedList
virtual Kind kind() const { return m_kind; } virtual Kind kind() const { return OrderedList; }
virtual IDocIterator *elements() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<IDoc> m_children; 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. /*! \brief Node representing a parameter.
* *
*/ */
...@@ -173,6 +276,8 @@ class ParameterHandler : public IDocParameter, ...@@ -173,6 +276,8 @@ class ParameterHandler : public IDocParameter,
// IDocParameter // IDocParameter
virtual Kind kind() const { return Parameter; } virtual Kind kind() const { return Parameter; }
virtual QString name() const { return m_name; }
virtual IDocPara *description() const { return m_description; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -180,17 +285,16 @@ class ParameterHandler : public IDocParameter, ...@@ -180,17 +285,16 @@ class ParameterHandler : public IDocParameter,
ParagraphHandler *m_description; ParagraphHandler *m_description;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/* \brief Node representing a parameter list. /* \brief Node representing a parameter list.
* *
*/ */
class ParameterListHandler : public IDocParameter, class ParameterListHandler : public IDocParameterList,
public BaseHandler<ParameterListHandler> public BaseHandler<ParameterListHandler>
{ {
friend class ParameterListIterator;
public: public:
enum Types { Param, RetVal, Exception };
ParameterListHandler(IBaseHandler *parent); ParameterListHandler(IBaseHandler *parent);
virtual ~ParameterListHandler(); virtual ~ParameterListHandler();
virtual void startParameterList(const QXmlAttributes& attrib); virtual void startParameterList(const QXmlAttributes& attrib);
...@@ -200,6 +304,8 @@ class ParameterListHandler : public IDocParameter, ...@@ -200,6 +304,8 @@ class ParameterListHandler : public IDocParameter,
// IDocParameterList // IDocParameterList
virtual Kind kind() const { return ParameterList; } virtual Kind kind() const { return ParameterList; }
virtual Types listType() const { return m_type; }
virtual IDocIterator *params() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -208,6 +314,13 @@ class ParameterListHandler : public IDocParameter, ...@@ -208,6 +314,13 @@ class ParameterListHandler : public IDocParameter,
Types m_type; 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 /* \brief Node representing a horizontal ruler
...@@ -335,11 +448,11 @@ class RefHandler : public IDocRef, public BaseHandler<RefHandler> ...@@ -335,11 +448,11 @@ class RefHandler : public IDocRef, public BaseHandler<RefHandler>
// IDocRef // IDocRef
virtual Kind kind() const { return Ref; } virtual Kind kind() const { return Ref; }
virtual QString refId() const { return m_refId; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QString m_refId; QString m_refId;
QString m_anchor;
QString m_linkText; QString m_linkText;
}; };
...@@ -390,14 +503,6 @@ class SimpleSectHandler : public IDocSimpleSect, ...@@ -390,14 +503,6 @@ class SimpleSectHandler : public IDocSimpleSect,
public BaseHandler<SimpleSectHandler> public BaseHandler<SimpleSectHandler>
{ {
public: 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); SimpleSectHandler(IBaseHandler *parent);
virtual ~SimpleSectHandler(); virtual ~SimpleSectHandler();
virtual void startSimpleSect(const QXmlAttributes& attrib); virtual void startSimpleSect(const QXmlAttributes& attrib);
...@@ -407,6 +512,9 @@ class SimpleSectHandler : public IDocSimpleSect, ...@@ -407,6 +512,9 @@ class SimpleSectHandler : public IDocSimpleSect,
// IDocSimpleSect // IDocSimpleSect
virtual Kind kind() const { return SimpleSect; } 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: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -697,7 +805,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler> ...@@ -697,7 +805,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
/*! \brief Node representing an entry in the table. /*! \brief Node representing an entry in the table.
* *
*/ */
// children: row // children: row, caption
class TableHandler : public IDocTable, public BaseHandler<TableHandler> class TableHandler : public IDocTable, public BaseHandler<TableHandler>
{ {
public: public:
...@@ -706,6 +814,8 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler> ...@@ -706,6 +814,8 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
void startTable(const QXmlAttributes& attrib); void startTable(const QXmlAttributes& attrib);
void endTable(); void endTable();
void startRow(const QXmlAttributes& attrib); void startRow(const QXmlAttributes& attrib);
void startCaption(const QXmlAttributes& attrib);
void endCaption();
// IDocTable // IDocTable
virtual Kind kind() const { return Table; } virtual Kind kind() const { return Table; }
...@@ -714,62 +824,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler> ...@@ -714,62 +824,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<RowHandler> m_children; QList<RowHandler> m_children;
int m_numColumns; 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> class ParagraphIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{ {
public: public:
......
...@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText ...@@ -22,7 +22,9 @@ class ILT_Text : public ILinkedText
class ILT_Ref : public ILinkedText class ILT_Ref : public ILinkedText
{ {
public: public:
enum TargetKind { Member, Compound };
virtual QString id() const = 0; virtual QString id() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0; virtual QString external() const = 0;
virtual QString text() const = 0; virtual QString text() const = 0;
}; };
...@@ -104,8 +106,8 @@ class IDoc ...@@ -104,8 +106,8 @@ class IDoc
Para, // 0 -> IDocPara Para, // 0 -> IDocPara
Text, // 1 -> IDocText Text, // 1 -> IDocText
MarkupModifier, // 2 -> IDocMarkupModifier MarkupModifier, // 2 -> IDocMarkupModifier
ItemizedList, // 3 -> IDocList ItemizedList, // 3 -> IDocItemizedList
OrderedList, // 4 -> IDocList OrderedList, // 4 -> IDocOrderedList
ListItem, // 5 -> IDocListItem ListItem, // 5 -> IDocListItem
ParameterList, // 6 -> IDocParameterList ParameterList, // 6 -> IDocParameterList
Parameter, // 7 -> IDocParameter Parameter, // 7 -> IDocParameter
...@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup ...@@ -168,36 +170,74 @@ class IDocText : public IDocMarkup
class IDocMarkupModifier : public IDoc 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 class IDocListItem : public IDoc
{ {
public:
virtual IDocIterator *contents() const = 0;
}; };
class IDocParameterList : public IDoc class IDocParameterList : public IDoc
{ {
public:
enum Types { Param, RetVal, Exception };
virtual Types listType() const = 0;
virtual IDocIterator *params() const = 0;
}; };
class IDocParameter : public IDoc 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: 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 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 class IDocVariableList : public IDoc
......
...@@ -36,10 +36,12 @@ class LT_Ref : public ILT_Ref ...@@ -36,10 +36,12 @@ class LT_Ref : public ILT_Ref
void setRefId(const QString &refId) { m_refId=refId; } void setRefId(const QString &refId) { m_refId=refId; }
void setText(const QString &text) { m_text=text; } void setText(const QString &text) { m_text=text; }
void setExtId(const QString &extId) { m_extId=extId; } void setExtId(const QString &extId) { m_extId=extId; }
void setTargetKind(TargetKind k) { m_targetKind=k; }
// ILT_Ref // ILT_Ref
virtual QString text() const { return m_text; } virtual QString text() const { return m_text; }
virtual QString id() const { return m_refId; } virtual QString id() const { return m_refId; }
virtual TargetKind targetKind() const { return m_targetKind; }
virtual QString external() const { return m_extId; } virtual QString external() const { return m_extId; }
virtual Kind kind() const { return Kind_Ref; } virtual Kind kind() const { return Kind_Ref; }
...@@ -47,6 +49,7 @@ class LT_Ref : public ILT_Ref ...@@ -47,6 +49,7 @@ class LT_Ref : public ILT_Ref
QString m_refId; QString m_refId;
QString m_extId; QString m_extId;
QString m_text; QString m_text;
TargetKind m_targetKind;
}; };
LinkedTextHandler::LinkedTextHandler(IBaseHandler *parent, LinkedTextHandler::LinkedTextHandler(IBaseHandler *parent,
...@@ -92,8 +95,10 @@ void LinkedTextHandler::startRef(const QXmlAttributes& attrib) ...@@ -92,8 +95,10 @@ void LinkedTextHandler::startRef(const QXmlAttributes& attrib)
} }
ASSERT(m_ref==0); ASSERT(m_ref==0);
m_ref = new LT_Ref; m_ref = new LT_Ref;
m_ref->setRefId(attrib.value("idref")); m_ref->setRefId(attrib.value("refid"));
m_ref->setExtId(attrib.value("external")); 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() void LinkedTextHandler::endRef()
......
...@@ -60,6 +60,90 @@ void DumpDoc(IDoc *doc) ...@@ -60,6 +60,90 @@ void DumpDoc(IDoc *doc)
printf(" --- text `%s' markup=%d --- \n",txt->text().data(),txt->markup()); printf(" --- text `%s' markup=%d --- \n",txt->text().data(),txt->markup());
} }
break; 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: case IDoc::Title:
{ {
printf(" --- title --- \n"); printf(" --- title --- \n");
...@@ -74,6 +158,120 @@ void DumpDoc(IDoc *doc) ...@@ -74,6 +158,120 @@ void DumpDoc(IDoc *doc)
printf(" --- end title --- \n"); printf(" --- end title --- \n");
} }
break; 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: case IDoc::Section:
{ {
IDocSection *sec = dynamic_cast<IDocSection*>(doc); IDocSection *sec = dynamic_cast<IDocSection*>(doc);
......
...@@ -10,9 +10,15 @@ ...@@ -10,9 +10,15 @@
# See the GNU General Public License for more details. # See the GNU General Public License for more details.
# #
all: Makefile.doxywizard all: config.h config.l Makefile.doxywizard
$(MAKE) -f 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 Makefile.doxywizard: doxywizard.pro
$(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard $(ENV) $(PERL) $(TMAKE) doxywizard.pro >Makefile.doxywizard
...@@ -21,9 +27,10 @@ tmake: ...@@ -21,9 +27,10 @@ tmake:
clean: Makefile.doxywizard clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean $(MAKE) -f Makefile.doxywizard clean
$(RM) config.cpp
distclean: clean distclean: clean
$(RM) Makefile.doxywizard $(RM) Makefile.doxywizard config.l config.h
install: install:
$(INSTTOOL) -d $(INSTALL)/bin $(INSTTOOL) -d $(INSTALL)/bin
......
...@@ -30,8 +30,9 @@ tmake: ...@@ -30,8 +30,9 @@ tmake:
clean: Makefile.doxywizard clean: Makefile.doxywizard
$(MAKE) -f Makefile.doxywizard clean $(MAKE) -f Makefile.doxywizard clean
$(RM) config.cpp
distclean: clean distclean: clean
$(RM) Makefile.doxywizard config.cpp $(RM) Makefile.doxywizard config.l config.h
FORCE: FORCE:
...@@ -179,7 +179,7 @@ void Wizard::newFile() ...@@ -179,7 +179,7 @@ void Wizard::newFile()
if (hasChanged) if (hasChanged)
{ {
switch( QMessageBox::warning( this, "DoxyWizard", 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 )) "Yes", "No", 0, 0, 1 ))
{ {
case 0: case 0:
...@@ -219,7 +219,7 @@ void Wizard::loadFile() ...@@ -219,7 +219,7 @@ void Wizard::loadFile()
if (hasChanged) if (hasChanged)
{ {
switch( QMessageBox::warning( 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 )) "Yes", "No", 0, 0, 1 ))
{ {
case 0: case 0:
...@@ -278,7 +278,7 @@ void Wizard::quit() ...@@ -278,7 +278,7 @@ void Wizard::quit()
{ {
if (hasChanged) 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 )) "Yes", "No", 0, 0, 1 ))
{ {
case 0: case 0:
......
...@@ -12,8 +12,7 @@ ...@@ -12,8 +12,7 @@
# project file for the doxywizard project # project file for the doxywizard project
# special template configuration file because we use flex # special template configuration file because we use flex
unix:TEMPLATE = app.t TEMPLATE = doxywizard.t
win32:TEMPLATE = doxywizard.t
# executable to generate # executable to generate
TARGET = ../../bin/doxywizard TARGET = ../../bin/doxywizard
...@@ -29,8 +28,8 @@ HEADERS = doxywizard.h \ ...@@ -29,8 +28,8 @@ HEADERS = doxywizard.h \
inputbool.h \ inputbool.h \
inputstrlist.h \ inputstrlist.h \
inputint.h \ inputint.h \
pixmaps.h pixmaps.h \
win32:HEADERS += config.h config.h
# source flle for the project # source flle for the project
SOURCES = doxywizard.cpp \ SOURCES = doxywizard.cpp \
...@@ -40,8 +39,8 @@ SOURCES = doxywizard.cpp \ ...@@ -40,8 +39,8 @@ SOURCES = doxywizard.cpp \
inputbool.cpp \ inputbool.cpp \
inputstrlist.cpp \ inputstrlist.cpp \
inputint.cpp \ inputint.cpp \
pixmaps.cpp pixmaps.cpp \
win32:SOURCES += config.cpp config.cpp
# where to put the objects # where to put the objects
OBJECTS_DIR = obj OBJECTS_DIR = obj
...@@ -57,5 +56,4 @@ win32:INCLUDEPATH += . ...@@ -57,5 +56,4 @@ win32:INCLUDEPATH += .
# extra link options # 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 = $(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 = win32:TMAKE_LIBS_QT =
unix:LIBS = -L../../lib -ldoxycfg
...@@ -139,6 +139,9 @@ if test -z "$f_platform"; then ...@@ -139,6 +139,9 @@ if test -z "$f_platform"; then
dgux:*) dgux:*)
f_platform=dgux-g++ f_platform=dgux-g++
;; ;;
Darwin:*)
f_platform=macosx-c++
;;
FreeBSD:*) FreeBSD:*)
f_platform=freebsd-g++ f_platform=freebsd-g++
;; ;;
...@@ -290,10 +293,13 @@ fi ...@@ -290,10 +293,13 @@ fi
if test "$f_insttool" = NO; then if test "$f_insttool" = NO; then
if test "$install_found" = YES; then if test "$install_found" = YES; then
echo "GNU version of install is required!" echo;
else else
echo "not found!"; echo "not found!";
echo
fi 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 echo
exit 2 exit 2
fi fi
......
...@@ -31,6 +31,8 @@ documentation. Note that all attributes of a HTML tag are ignored ...@@ -31,6 +31,8 @@ documentation. Note that all attributes of a HTML tag are ignored
<li>\c <BR> Forces a line break. <li>\c <BR> Forces a line break.
<li>\c <CENTER> starts a section of centered text. <li>\c <CENTER> starts a section of centered text.
<li>\c </CENTER> ends 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> Starts a piece of text displayed in a typewriter font.
<li>\c </CODE> End a \c <CODE> section. <li>\c </CODE> End a \c <CODE> section.
<li>\c <DD> Starts an item description. <li>\c <DD> Starts an item description.
......
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -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 that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. 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): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German, Dutch, English, Finnish, French, German,
...@@ -130,9 +130,9 @@ when the translator was updated. ...@@ -130,9 +130,9 @@ when the translator was updated.
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Japanese</TD> <TD>Japanese</TD>
<TD>Kenji Nagamatsu</TD> <TD>Ryunosuke Sato<br>Kenji Nagamatsu</TD>
<TD>naga@NOSPAM.joyful.club.ne.jp</TD> <TD>puyo@NOSPAM.mint.freemail.ne.jp<br>naga@NOSPAM.joyful.club.ne.jp</TD>
<TD>1.2.5</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Korean</TD> <TD>Korean</TD>
...@@ -173,8 +173,8 @@ when the translator was updated. ...@@ -173,8 +173,8 @@ when the translator was updated.
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Slovak</TD> <TD>Slovak</TD>
<TD>Stanislav Kudl&aacute;&#x010d;</TD> <TD>Stanislav Kudl&aacute;&#x010d;</TD>
<TD>qwerty1@NOSPAM.pobox.sk</TD> <TD>skudlac@NOSPAM.pobox.sk</TD>
<TD>1.2.11</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Slovene</TD> <TD>Slovene</TD>
...@@ -240,7 +240,8 @@ when the translator was updated. ...@@ -240,7 +240,8 @@ when the translator was updated.
Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\ Italian & Alessandro Falappa & {\tt alessandro@falappa.net} & up-to-date \\
& Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\ & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} & \\
\hline \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 \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & up-to-date \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & up-to-date \\
\hline \hline
...@@ -254,7 +255,7 @@ when the translator was updated. ...@@ -254,7 +255,7 @@ when the translator was updated.
\hline \hline
Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\ Russian & Alexandr Chelpanov & {\tt cav@cryptopro.ru} & up-to-date \\
\hline \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 \hline
Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & up-to-date \\ Slovene & Matjaz Ostroversnik & {\tt matjaz.ostroversnik@zrs-tk.si} & up-to-date \\
\hline \hline
......
...@@ -41,6 +41,35 @@ Doxygen has a number of ways to create lists of items. ...@@ -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 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. 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> <b>Using HTML commands</b>
If you like you can also use HTML commands inside the documentation If you like you can also use HTML commands inside the documentation
......
...@@ -44,6 +44,7 @@ Alessandro Falappa: alessandro@falappa.net ...@@ -44,6 +44,7 @@ Alessandro Falappa: alessandro@falappa.net
Ahmed Aldo Faisal: aaf23@cam.ac.uk Ahmed Aldo Faisal: aaf23@cam.ac.uk
Japanese Japanese
Ryunosuke Sato: puyo@mint.freemail.ne.jp
Kenji Nagamatsu: naga@joyful.club.ne.jp Kenji Nagamatsu: naga@joyful.club.ne.jp
Korean Korean
...@@ -65,7 +66,7 @@ Russian ...@@ -65,7 +66,7 @@ Russian
Alexandr Chelpanov: cav@cryptopro.ru Alexandr Chelpanov: cav@cryptopro.ru
Slovak Slovak
Stanislav Kudl&aacute;&ccaron;: qwerty1@pobox.sk Stanislav Kudl&aacute;&ccaron;: skudlac@pobox.sk
Slovene Slovene
Matjaz Ostroversnik: matjaz.ostroversnik@zrs-tk.si Matjaz Ostroversnik: matjaz.ostroversnik@zrs-tk.si
......
Name: doxygen Name: doxygen
Version: 1.2.13 Version: 1.2.13.1
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 4 Release: 4
Source: doxygen-%{version}.src.tar.gz Source: doxygen-%{version}.src.tar.gz
......
...@@ -156,29 +156,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p, ...@@ -156,29 +156,29 @@ void ClassDef::insertSubClass(ClassDef *cd,Protection p,
void ClassDef::addMembersToMemberGroup() void ClassDef::addMembersToMemberGroup()
{ {
::addMembersToMemberGroup(&pubTypes,memberGroupSDict); ::addMembersToMemberGroup(&pubTypes,memberGroupSDict,this);
::addMembersToMemberGroup(&pubMembers,memberGroupSDict); ::addMembersToMemberGroup(&pubMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&pubAttribs,memberGroupSDict); ::addMembersToMemberGroup(&pubAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&pubSlots,memberGroupSDict); ::addMembersToMemberGroup(&pubSlots,memberGroupSDict,this);
::addMembersToMemberGroup(&signals,memberGroupSDict); ::addMembersToMemberGroup(&signals,memberGroupSDict,this);
::addMembersToMemberGroup(&dcopMethods,memberGroupSDict); ::addMembersToMemberGroup(&dcopMethods,memberGroupSDict,this);
::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict); ::addMembersToMemberGroup(&pubStaticMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict); ::addMembersToMemberGroup(&pubStaticAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&proTypes,memberGroupSDict); ::addMembersToMemberGroup(&proTypes,memberGroupSDict,this);
::addMembersToMemberGroup(&proMembers,memberGroupSDict); ::addMembersToMemberGroup(&proMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&proAttribs,memberGroupSDict); ::addMembersToMemberGroup(&proAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&proSlots,memberGroupSDict); ::addMembersToMemberGroup(&proSlots,memberGroupSDict,this);
::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict); ::addMembersToMemberGroup(&proStaticMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict); ::addMembersToMemberGroup(&proStaticAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&priTypes,memberGroupSDict); ::addMembersToMemberGroup(&priTypes,memberGroupSDict,this);
::addMembersToMemberGroup(&priMembers,memberGroupSDict); ::addMembersToMemberGroup(&priMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&priAttribs,memberGroupSDict); ::addMembersToMemberGroup(&priAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&priSlots,memberGroupSDict); ::addMembersToMemberGroup(&priSlots,memberGroupSDict,this);
::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict); ::addMembersToMemberGroup(&priStaticMembers,memberGroupSDict,this);
::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict); ::addMembersToMemberGroup(&priStaticAttribs,memberGroupSDict,this);
::addMembersToMemberGroup(&friends,memberGroupSDict); ::addMembersToMemberGroup(&friends,memberGroupSDict,this);
::addMembersToMemberGroup(&related,memberGroupSDict); ::addMembersToMemberGroup(&related,memberGroupSDict,this);
::addMembersToMemberGroup(&properties,memberGroupSDict); ::addMembersToMemberGroup(&properties,memberGroupSDict,this);
} }
// adds new member definition to the class // adds new member definition to the class
...@@ -197,12 +197,12 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -197,12 +197,12 @@ void ClassDef::internalInsertMember(MemberDef *md,
(Config_getBool("EXTRACT_PRIVATE") || prot!=Private)) (Config_getBool("EXTRACT_PRIVATE") || prot!=Private))
{ {
related.append(md); related.append(md);
md->setSectionList(&related); md->setSectionList(this,&related);
} }
else if (md->isFriend()) else if (md->isFriend())
{ {
friends.append(md); friends.append(md);
md->setSectionList(&friends); md->setSectionList(this,&friends);
} }
else else
{ {
...@@ -210,30 +210,30 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -210,30 +210,30 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case MemberDef::Signal: // Qt specific case MemberDef::Signal: // Qt specific
signals.append(md); signals.append(md);
md->setSectionList(&signals); md->setSectionList(this,&signals);
break; break;
case MemberDef::DCOP: // KDE2 specific case MemberDef::DCOP: // KDE2 specific
dcopMethods.append(md); dcopMethods.append(md);
md->setSectionList(&dcopMethods); md->setSectionList(this,&dcopMethods);
break; break;
case MemberDef::Property: case MemberDef::Property:
properties.append(md); properties.append(md);
md->setSectionList(&properties); md->setSectionList(this,&properties);
break; break;
case MemberDef::Slot: // Qt specific case MemberDef::Slot: // Qt specific
switch (prot) switch (prot)
{ {
case Protected: case Protected:
proSlots.append(md); proSlots.append(md);
md->setSectionList(&proSlots); md->setSectionList(this,&proSlots);
break; break;
case Public: case Public:
pubSlots.append(md); pubSlots.append(md);
md->setSectionList(&pubSlots); md->setSectionList(this,&pubSlots);
break; break;
case Private: case Private:
priSlots.append(md); priSlots.append(md);
md->setSectionList(&priSlots); md->setSectionList(this,&priSlots);
break; break;
} }
break; break;
...@@ -246,15 +246,15 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -246,15 +246,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
proStaticAttribs.append(md); proStaticAttribs.append(md);
md->setSectionList(&proStaticAttribs); md->setSectionList(this,&proStaticAttribs);
break; break;
case Public: case Public:
pubStaticAttribs.append(md); pubStaticAttribs.append(md);
md->setSectionList(&pubStaticAttribs); md->setSectionList(this,&pubStaticAttribs);
break; break;
case Private: case Private:
priStaticAttribs.append(md); priStaticAttribs.append(md);
md->setSectionList(&priStaticAttribs); md->setSectionList(this,&priStaticAttribs);
break; break;
} }
} }
...@@ -264,15 +264,15 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -264,15 +264,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
proStaticMembers.append(md); proStaticMembers.append(md);
md->setSectionList(&proStaticMembers); md->setSectionList(this,&proStaticMembers);
break; break;
case Public: case Public:
pubStaticMembers.append(md); pubStaticMembers.append(md);
md->setSectionList(&pubStaticMembers); md->setSectionList(this,&pubStaticMembers);
break; break;
case Private: case Private:
priStaticMembers.append(md); priStaticMembers.append(md);
md->setSectionList(&priStaticMembers); md->setSectionList(this,&priStaticMembers);
break; break;
} }
} }
...@@ -285,15 +285,15 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -285,15 +285,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
proAttribs.append(md); proAttribs.append(md);
md->setSectionList(&proAttribs); md->setSectionList(this,&proAttribs);
break; break;
case Public: case Public:
pubAttribs.append(md); pubAttribs.append(md);
md->setSectionList(&pubAttribs); md->setSectionList(this,&pubAttribs);
break; break;
case Private: case Private:
priAttribs.append(md); priAttribs.append(md);
md->setSectionList(&priAttribs); md->setSectionList(this,&priAttribs);
break; break;
} }
} }
...@@ -303,15 +303,15 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -303,15 +303,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
proTypes.append(md); proTypes.append(md);
md->setSectionList(&proTypes); md->setSectionList(this,&proTypes);
break; break;
case Public: case Public:
pubTypes.append(md); pubTypes.append(md);
md->setSectionList(&pubTypes); md->setSectionList(this,&pubTypes);
break; break;
case Private: case Private:
priTypes.append(md); priTypes.append(md);
md->setSectionList(&priTypes); md->setSectionList(this,&priTypes);
break; break;
} }
} }
...@@ -321,15 +321,15 @@ void ClassDef::internalInsertMember(MemberDef *md, ...@@ -321,15 +321,15 @@ void ClassDef::internalInsertMember(MemberDef *md,
{ {
case Protected: case Protected:
proMembers.append(md); proMembers.append(md);
md->setSectionList(&proMembers); md->setSectionList(this,&proMembers);
break; break;
case Public: case Public:
pubMembers.append(md); pubMembers.append(md);
md->setSectionList(&pubMembers); md->setSectionList(this,&pubMembers);
break; break;
case Private: case Private:
priMembers.append(md); priMembers.append(md);
md->setSectionList(&priMembers); md->setSectionList(this,&priMembers);
break; break;
} }
} }
...@@ -485,27 +485,6 @@ void ClassDef::insertMember(MemberDef *md) ...@@ -485,27 +485,6 @@ void ClassDef::insertMember(MemberDef *md)
internalInsertMember(md,md->protection(),TRUE); 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 // compute the anchors for all members
void ClassDef::computeAnchors() void ClassDef::computeAnchors()
{ {
...@@ -533,6 +512,12 @@ void ClassDef::computeAnchors() ...@@ -533,6 +512,12 @@ void ClassDef::computeAnchors()
setAnchors(context,'u',&priTypes); setAnchors(context,'u',&priTypes);
setAnchors(context,'v',&dcopMethods); setAnchors(context,'v',&dcopMethods);
setAnchors(context,'w',&properties); setAnchors(context,'w',&properties);
MemberGroupSDict::Iterator mgli(*memberGroupSDict);
MemberGroup *mg;
for (;(mg=mgli.current());++mgli)
{
mg->setAnchors(context);
}
} }
void ClassDef::distributeMemberGroupDocumentation() void ClassDef::distributeMemberGroupDocumentation()
...@@ -1006,6 +991,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1006,6 +991,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
} }
else // add this group to the corresponding member section else // add this group to the corresponding member section
{ {
//printf("addToDeclarationSection(%s)\n",mg->header().data());
mg->addToDeclarationSection(); mg->addToDeclarationSection();
} }
} }
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <qstack.h> #include <qstack.h>
#include "config.h" #include "config.h"
#include "lang_cfg.h"
#include "version.h" #include "version.h"
#undef Config_getString #undef Config_getString
......
...@@ -99,6 +99,7 @@ static QCString curDotFileName; ...@@ -99,6 +99,7 @@ static QCString curDotFileName;
static QCString curDotFileCaption; static QCString curDotFileCaption;
static QCString internalRefFile; static QCString internalRefFile;
static QCString internalRefAnchor; static QCString internalRefAnchor;
static QCString caption;
static QStack<char> currentListIndent; // indent stack of all list items static QStack<char> currentListIndent; // indent stack of all list items
static bool insideItemList = FALSE; static bool insideItemList = FALSE;
...@@ -185,72 +186,85 @@ class Table ...@@ -185,72 +186,85 @@ class Table
~Table(); ~Table();
void newRow(); void newRow();
void newElem(); void newElem();
void setCaption(const char *s);
private: private:
OutputDocInterface *parentDoc; OutputDocInterface *m_parentDoc;
QList<TableElem> *elemList; QList<TableElem> *m_elemList;
int curRow; QCString m_caption;
int curCol; int m_curRow;
int rows; int m_curCol;
int cols; int m_rows;
int m_cols;
}; };
Table::Table() Table::Table()
{ {
parentDoc=outDoc; m_parentDoc=outDoc;
elemList=new QList<TableElem>; m_elemList=new QList<TableElem>;
elemList->setAutoDelete(TRUE); m_elemList->setAutoDelete(TRUE);
curRow=curCol=rows=cols=0; m_curRow=m_curCol=m_rows=m_cols=0;
} }
Table::~Table() Table::~Table()
{ {
//printf("Table::~Table()\n"); //printf("Table::~Table()\n");
// use elemList & cols & rows // use elemList & cols & rows
if (cols>0 && rows>0) if (m_cols>0 && m_rows>0)
{ {
parentDoc->startTable(cols); m_parentDoc->startTable(!m_caption.isEmpty(),m_cols);
TableElem *e=elemList->first(); TableElem *e=m_elemList->first();
while (e) while (e)
{ {
if (e->getRow()>0) if (e->getRow()>0)
{ {
if (e->getCol()==0) if (e->getCol()==0)
{ {
if (e->getRow()>1) parentDoc->endTableRow(); if (e->getRow()>1) m_parentDoc->endTableRow();
parentDoc->nextTableRow(); m_parentDoc->nextTableRow();
} }
else else
{ {
parentDoc->nextTableColumn(); m_parentDoc->nextTableColumn();
} }
parentDoc->append(e->outputDocInterface()); m_parentDoc->append(e->outputDocInterface());
parentDoc->endTableColumn(); 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; delete m_elemList; m_elemList=0;
outDoc=parentDoc; outDoc=m_parentDoc;
}
void Table::setCaption(const char *s)
{
m_caption=s;
} }
void Table::newRow() void Table::newRow()
{ {
//printf("Table::newRow()\n"); //printf("Table::newRow()\n");
curRow++; m_curRow++;
if (curRow>rows) rows=curRow; if (m_curRow>m_rows) m_rows=m_curRow;
curCol=0; m_curCol=0;
} }
void Table::newElem() void Table::newElem()
{ {
//printf("Table::newElem(%d,%d)\n",curRow,curCol); //printf("Table::newElem(%d,%d)\n",curRow,curCol);
TableElem *te = new TableElem(curRow,curCol); TableElem *te = new TableElem(m_curRow,m_curCol);
elemList->append(te); m_elemList->append(te);
curCol++; m_curCol++;
if (curCol>cols) cols=curCol; if (m_curCol>m_cols) m_cols=m_curCol;
} }
static QStack<Table> tableStack; static QStack<Table> tableStack;
...@@ -531,19 +545,19 @@ struct IndentInfo ...@@ -531,19 +545,19 @@ struct IndentInfo
static QStack<IndentInfo> listIndentStack; // indent stack of - items 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 i;
int indent=0; 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]); //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; indent=0;
} }
...@@ -552,9 +566,17 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated) ...@@ -552,9 +566,17 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
indent++; 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); //printf("list marker found at column %d enumerated %d\n",indent,enumerated);
if (!insideItemList) if (!insideItemList)
{ {
//printf("startListMarker indent=%d\n",indent);
currentListIndent.push(enumerated ? "O" : "U"); currentListIndent.push(enumerated ? "O" : "U");
listIndentStack.push(new IndentInfo(indent,enumerated)); listIndentStack.push(new IndentInfo(indent,enumerated));
listIndentStack.top()->startList(); listIndentStack.top()->startList();
...@@ -580,6 +602,7 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated) ...@@ -580,6 +602,7 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated)
} }
else if (pPrevInfo->indent<indent) // start sub item list else if (pPrevInfo->indent<indent) // start sub item list
{ {
//printf("startListMarker indent=%d\n",indent);
currentListIndent.push(enumerated ? "O" : "U"); currentListIndent.push(enumerated ? "O" : "U");
listIndentStack.push(new IndentInfo(indent,enumerated)); listIndentStack.push(new IndentInfo(indent,enumerated));
listIndentStack.top()->startList(); listIndentStack.top()->startList();
...@@ -610,6 +633,32 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated) ...@@ -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. // end the current (nested) list regardless of the nesting level.
static void forceEndItemList() static void forceEndItemList()
{ {
...@@ -626,7 +675,7 @@ static void forceEndItemList() ...@@ -626,7 +675,7 @@ static void forceEndItemList()
case 'O': outDoc->endEnumList(); break; case 'O': outDoc->endEnumList(); break;
case 'U': outDoc->endItemList(); break; case 'U': outDoc->endItemList(); break;
case 'D': outDoc->endDescription(); break; case 'D': outDoc->endDescription(); break;
case 'P': break; // do not end paragraphs case 'P': if (inBlock()) endBlock(); break;
default: default:
err("Unexpected list indent token `%c'\n",c); err("Unexpected list indent token `%c'\n",c);
} }
...@@ -899,6 +948,7 @@ SUB [sS][uU][bB] ...@@ -899,6 +948,7 @@ SUB [sS][uU][bB]
SUP [sS][uU][pP] SUP [sS][uU][pP]
SRC [sS][rR][cC] SRC [sS][rR][cC]
TABLE [tT][aA][bB][lL][eE] TABLE [tT][aA][bB][lL][eE]
CAPTION [cC][aA][pP][tT][iI][oO][nN]
TITLE [tT][iI][tT][lL][eE] TITLE [tT][iI][tT][lL][eE]
TD [tT][dD] TD [tT][dD]
TR [tT][rR] TR [tT][rR]
...@@ -955,6 +1005,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -955,6 +1005,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
%x DocInternalRef %x DocInternalRef
%x DocInternalRefText %x DocInternalRefText
%x DocImage %x DocImage
%x DocCaption
%x DocHtmlImageName %x DocHtmlImageName
%x DocHtmlImageOpt %x DocHtmlImageOpt
%x DocLatexImageName %x DocLatexImageName
...@@ -974,6 +1025,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -974,6 +1025,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
bool isEnumerated = text.at(dashPos+1)=='#'; bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext,dashPos+1,isEnumerated); 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 */ <DocScan>\n{B}*(("//"{B}*)?)"*"*{B}*"-"("#")?{B}+ { /* found list item marker */
QCString text=yytext; QCString text=yytext;
int dashPos = text.findRev('-'); int dashPos = text.findRev('-');
...@@ -981,6 +1037,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -981,6 +1037,11 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
bool isEnumerated = text.at(dashPos+1)=='#'; bool isEnumerated = text.at(dashPos+1)=='#';
addListItemMarker(yytext+1,dashPos,isEnumerated); 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>"&copy;" { outDoc->writeCopyright(); }
<DocScan,Text>"&lt;" { outDoc->docify("<"); } <DocScan,Text>"&lt;" { outDoc->docify("<"); }
<DocScan,Text>"&gt;" { outDoc->docify(">"); } <DocScan,Text>"&gt;" { outDoc->docify(">"); }
...@@ -2024,6 +2085,20 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2024,6 +2085,20 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocScan>"</"{CENTER}{ATTR}">" { outDoc->endCenter(); } <DocScan>"</"{CENTER}{ATTR}">" { outDoc->endCenter(); }
<DocScan>"<"{TABLE}{ATTR}">" { startTable(); } <DocScan>"<"{TABLE}{ATTR}">" { startTable(); }
<DocScan>"</"{TABLE}{ATTR}">" { endTable(); } <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>"<"{INPUT}{ATTR}">"
<DocScan>"<"{SMALL}{ATTR}">" { outDoc->startSmall(); } <DocScan>"<"{SMALL}{ATTR}">" { outDoc->startSmall(); }
<DocScan>"</"{SMALL}{ATTR}">" { outDoc->endSmall(); } <DocScan>"</"{SMALL}{ATTR}">" { outDoc->endSmall(); }
......
...@@ -197,11 +197,12 @@ class DotNodeList : public QList<DotNode> ...@@ -197,11 +197,12 @@ class DotNodeList : public QList<DotNode>
/*! helper function that deletes all nodes in a connected graph, given /*! helper function that deletes all nodes in a connected graph, given
* one of the graph's nodes * 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; static DotNodeList deletedNodes;
deletedNodes.setAutoDelete(TRUE); 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. deletedNodes.clear(); // actually remove the nodes.
} }
...@@ -220,6 +221,7 @@ DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot) ...@@ -220,6 +221,7 @@ DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot)
DotNode::~DotNode() DotNode::~DotNode()
{ {
//printf("DotNode::~DotNode() %s\n",m_label.data());
delete m_children; delete m_children;
delete m_parents; delete m_parents;
delete m_edgeInfo; delete m_edgeInfo;
...@@ -276,7 +278,7 @@ void DotNode::removeParent(DotNode *n) ...@@ -276,7 +278,7 @@ void DotNode::removeParent(DotNode *n)
if (m_parents) m_parents->remove(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 if (m_deleted) return; // avoid recursive loops in case the graph has cycles
m_deleted=TRUE; m_deleted=TRUE;
...@@ -287,7 +289,7 @@ void DotNode::deleteNode(DotNodeList &deletedList) ...@@ -287,7 +289,7 @@ void DotNode::deleteNode(DotNodeList &deletedList)
for (dnlip.toFirst();(pn=dnlip.current());++dnlip) for (dnlip.toFirst();(pn=dnlip.current());++dnlip)
{ {
//pn->removeChild(this); //pn->removeChild(this);
pn->deleteNode(deletedList); pn->deleteNode(deletedList,skipNodes);
} }
} }
if (m_children!=0) // delete all child nodes of this node if (m_children!=0) // delete all child nodes of this node
...@@ -297,11 +299,16 @@ void DotNode::deleteNode(DotNodeList &deletedList) ...@@ -297,11 +299,16 @@ void DotNode::deleteNode(DotNodeList &deletedList)
for (dnlic.toFirst();(cn=dnlic.current());++dnlic) for (dnlic.toFirst();(cn=dnlic.current());++dnlic)
{ {
//cn->removeParent(this); //cn->removeParent(this);
cn->deleteNode(deletedList); cn->deleteNode(deletedList,skipNodes);
} }
} }
// add this node to the list of deleted nodes. // 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) static QCString convertLabel(const QCString &l)
...@@ -882,12 +889,22 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() ...@@ -882,12 +889,22 @@ DotGfxHierarchyTable::DotGfxHierarchyTable()
DotGfxHierarchyTable::~DotGfxHierarchyTable() DotGfxHierarchyTable::~DotGfxHierarchyTable()
{ {
//printf("DotGfxHierarchyTable::~DotGfxHierarchyTable\n");
SIntDict<DotNode> skipNodes(17);
skipNodes.setAutoDelete(TRUE);
DotNode *n = m_rootNodes->first(); DotNode *n = m_rootNodes->first();
while (n) 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(); n=m_rootNodes->next();
deleteNodes(oldNode);
} }
delete m_rootNodes; delete m_rootNodes;
delete m_usedNodes; delete m_usedNodes;
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qlist.h> #include <qlist.h>
#include <qdict.h> #include <qdict.h>
#include "sortdict.h"
class ClassDef; class ClassDef;
class FileDef; class FileDef;
...@@ -68,16 +69,17 @@ class DotNode ...@@ -68,16 +69,17 @@ class DotNode
); );
void setDistance(int distance); void setDistance(int distance);
void addParent(DotNode *n); void addParent(DotNode *n);
void deleteNode(DotNodeList &deletedList); void deleteNode(DotNodeList &deletedList,SIntDict<DotNode> *skipNodes=0);
void removeChild(DotNode *n); void removeChild(DotNode *n);
void removeParent(DotNode *n); void removeParent(DotNode *n);
int number() const { return m_number; }
void write(QTextStream &t,GraphOutputFormat f,bool topDown,bool toChildren, void write(QTextStream &t,GraphOutputFormat f,bool topDown,bool toChildren,
int maxDistance=1000,bool backArrows=TRUE); int maxDistance=1000,bool backArrows=TRUE);
int m_subgraphId; int m_subgraphId;
void clearWriteFlag(); void clearWriteFlag();
void writeXML(QTextStream &t); void writeXML(QTextStream &t);
void writeDEF(QTextStream &t); void writeDEF(QTextStream &t);
QCString label() const { return m_label; }
int number() const { return m_number; }
private: private:
void colorConnectedNodes(int curColor); void colorConnectedNodes(int curColor);
......
...@@ -6968,6 +6968,9 @@ void parseInput() ...@@ -6968,6 +6968,9 @@ void parseInput()
msg("Adding classes to their packages...\n"); msg("Adding classes to their packages...\n");
addClassesToPackages(); addClassesToPackages();
msg("Building full member lists recursively...\n");
buildCompleteMemberLists();
msg("Adding members to member groups.\n"); msg("Adding members to member groups.\n");
addMembersToMemberGroup(); addMembersToMemberGroup();
...@@ -6977,9 +6980,6 @@ void parseInput() ...@@ -6977,9 +6980,6 @@ void parseInput()
distributeMemberGroupDocumentation(); distributeMemberGroupDocumentation();
} }
msg("Building full member lists recursively...\n");
buildCompleteMemberLists();
msg("Computing member references...\n"); msg("Computing member references...\n");
computeMemberReferences(); computeMemberReferences();
......
...@@ -309,6 +309,7 @@ bool GroupDef::containsGroup(const GroupDef *def) ...@@ -309,6 +309,7 @@ bool GroupDef::containsGroup(const GroupDef *def)
void GroupDef::addGroup(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")) //if (Config_getBool("SORT_MEMBER_DOCS"))
// groupList->inSort(def); // groupList->inSort(def);
//else //else
...@@ -317,10 +318,10 @@ void GroupDef::addGroup(const GroupDef *def) ...@@ -317,10 +318,10 @@ void GroupDef::addGroup(const GroupDef *def)
void GroupDef::addParentGroup(const GroupDef *def) void GroupDef::addParentGroup(const GroupDef *def)
{ {
if (Config_getBool("SORT_MEMBER_DOCS")) //if (Config_getBool("SORT_MEMBER_DOCS"))
parentGroupList->inSort(def); // parentGroupList->inSort(def);
else //else
parentGroupList->append(def); parentGroupList->append(def);
} }
bool GroupDef::isASubGroup() const bool GroupDef::isASubGroup() const
......
...@@ -78,7 +78,7 @@ class GroupDef : public Definition ...@@ -78,7 +78,7 @@ class GroupDef : public Definition
bool visited; // number of times accessed for output - KPW 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 // make accessible for writing tree view of group in index.cpp - KPW
// members in the declaration part of the documentation // members in the declaration part of the documentation
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
static const char *defaultStyleSheet = static const char *defaultStyleSheet =
"H1 { text-align: center; }\n" "H1 { text-align: center; }\n"
"CAPTION { font-weight: bold }\n"
"A.qindex {}\n" "A.qindex {}\n"
"A.qindexRef {}\n" "A.qindexRef {}\n"
"A.el { text-decoration: none; font-weight: bold }\n" "A.el { text-decoration: none; font-weight: bold }\n"
......
...@@ -165,8 +165,14 @@ class HtmlGenerator : public OutputGenerator ...@@ -165,8 +165,14 @@ class HtmlGenerator : public OutputGenerator
void endSubscript() { t << "</sub>"; } void endSubscript() { t << "</sub>"; }
void startSuperscript() { t << "<sup>"; } void startSuperscript() { t << "<sup>"; }
void endSuperscript() { t << "</sup>"; } void endSuperscript() { t << "</sup>"; }
void startTable(int) { t << "<table border=1 cellspacing=3 cellpadding=3>"; } void startTable(bool,int)
void endTable() { t << "</table>" << endl; } { 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 nextTableRow() { t << "<tr><td>"; }
void endTableRow() { t << "</tr>" << endl; } void endTableRow() { t << "</tr>" << endl; }
void nextTableColumn() { t << "<td>"; } void nextTableColumn() { t << "<td>"; }
......
...@@ -78,6 +78,34 @@ void countDataStructures() ...@@ -78,6 +78,34 @@ void countDataStructures()
documentedPackages = countPackages(); 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]; static bool g_memberIndexLetterUsed[256];
...@@ -347,18 +375,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) ...@@ -347,18 +375,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
{ {
if (!started) if (!started)
{ {
{ startIndexHierarchy(ol,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();
}
if (hasHtmlHelp) htmlHelp->incContentsDepth(); if (hasHtmlHelp) htmlHelp->incContentsDepth();
if (hasFtvHelp) ftvHelp->incContentsDepth(); if (hasFtvHelp) ftvHelp->incContentsDepth();
started=TRUE; started=TRUE;
...@@ -407,18 +424,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level) ...@@ -407,18 +424,7 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
} }
if (started) if (started)
{ {
{ endIndexHierarchy(ol,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();
}
if (hasHtmlHelp) htmlHelp->decContentsDepth(); if (hasHtmlHelp) htmlHelp->decContentsDepth();
if (hasFtvHelp) ftvHelp->decContentsDepth(); if (hasFtvHelp) ftvHelp->decContentsDepth();
} }
...@@ -572,18 +578,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started) ...@@ -572,18 +578,7 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
{ {
if (!started) if (!started)
{ {
{ startIndexHierarchy(ol,0);
// 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();
}
if (hasHtmlHelp) htmlHelp->incContentsDepth(); if (hasHtmlHelp) htmlHelp->incContentsDepth();
if (hasFtvHelp) ftvHelp->incContentsDepth(); if (hasFtvHelp) ftvHelp->incContentsDepth();
started=TRUE; started=TRUE;
...@@ -654,18 +649,7 @@ void writeClassHierarchy(OutputList &ol) ...@@ -654,18 +649,7 @@ void writeClassHierarchy(OutputList &ol)
writeClassTreeForList(ol,&Doxygen::hiddenClasses,started); writeClassTreeForList(ol,&Doxygen::hiddenClasses,started);
if (started) if (started)
{ {
{ endIndexHierarchy(ol,0);
// 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();
}
if (hasHtmlHelp) htmlHelp->decContentsDepth(); if (hasHtmlHelp) htmlHelp->decContentsDepth();
if (hasFtvHelp) ftvHelp->decContentsDepth(); if (hasFtvHelp) ftvHelp->decContentsDepth();
} }
...@@ -2135,18 +2119,7 @@ void writePageIndex(OutputList &ol) ...@@ -2135,18 +2119,7 @@ void writePageIndex(OutputList &ol)
} }
parseText(ol,theTranslator->trRelatedPagesDescription()); parseText(ol,theTranslator->trRelatedPagesDescription());
ol.endTextBlock(); ol.endTextBlock();
{ startIndexHierarchy(ol,0);
// 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();
}
PageSDict::Iterator pdi(*Doxygen::pageSDict); PageSDict::Iterator pdi(*Doxygen::pageSDict);
PageInfo *pi=0; PageInfo *pi=0;
for (pdi.toFirst();(pi=pdi.current());++pdi) for (pdi.toFirst();(pi=pdi.current());++pdi)
...@@ -2177,18 +2150,7 @@ void writePageIndex(OutputList &ol) ...@@ -2177,18 +2150,7 @@ void writePageIndex(OutputList &ol)
if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,pageName,0,pageTitle); if (hasFtvHelp) ftvHelp->addContentsItem(FALSE,0,pageName,0,pageTitle);
} }
} }
{ endIndexHierarchy(ol,0);
// 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();
}
if (hasHtmlHelp) if (hasHtmlHelp)
{ {
htmlHelp->decContentsDepth(); htmlHelp->decContentsDepth();
...@@ -2247,7 +2209,7 @@ void writeGraphInfo(OutputList &ol) ...@@ -2247,7 +2209,7 @@ void writeGraphInfo(OutputList &ol)
* \author KPW * \author KPW
*/ */
void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel) void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
{ {
HtmlHelp *htmlHelp=0; HtmlHelp *htmlHelp=0;
FTVHelp *ftvHelp = 0; FTVHelp *ftvHelp = 0;
...@@ -2263,7 +2225,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel) ...@@ -2263,7 +2225,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
ftvHelp = FTVHelp::getInstance(); 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()); //printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info // write group info
...@@ -2338,14 +2300,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel) ...@@ -2338,14 +2300,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
// write subgroups // write subgroups
if (hasSubGroups) if (hasSubGroups)
{ {
ol.startIndexList(); startIndexHierarchy(ol,level+1);
QListIterator<GroupDef> gli(*gd->groupList); QListIterator<GroupDef> gli(*gd->groupList);
GroupDef *subgd = 0; 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) ...@@ -2544,14 +2506,14 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,bool subLevel)
void writeGroupHierarchy(OutputList &ol) void writeGroupHierarchy(OutputList &ol)
{ {
ol.startIndexList(); startIndexHierarchy(ol,0);
GroupSDict::Iterator gli(Doxygen::groupSDict); GroupSDict::Iterator gli(Doxygen::groupSDict);
GroupDef *gd; GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli) for (gli.toFirst();(gd=gli.current());++gli)
{ {
writeGroupTreeNode(ol,gd,FALSE); writeGroupTreeNode(ol,gd,0);
} }
ol.endIndexList(); endIndexHierarchy(ol,0);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
......
...@@ -160,10 +160,26 @@ class LatexGenerator : public OutputGenerator ...@@ -160,10 +160,26 @@ class LatexGenerator : public OutputGenerator
void endSubscript() { t << "}}$"; } void endSubscript() { t << "}}$"; }
void startSuperscript() { t << "$^{\\mbox{"; } void startSuperscript() { t << "$^{\\mbox{"; }
void endSuperscript() { t << "}}$"; } void endSuperscript() { t << "}}$"; }
void startTable(int c) { t << "\\begin{TabularC}{" << c void startTable(bool hasCaption,int c)
<< "}\n\\hline\n"; {
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 nextTableRow() {}
void endTableRow() { t << "\\\\\\hline\n"; } void endTableRow() { t << "\\\\\\hline\n"; }
void nextTableColumn() { t << "&"; } void nextTableColumn() { t << "&"; }
......
...@@ -152,8 +152,10 @@ class ManGenerator : public OutputGenerator ...@@ -152,8 +152,10 @@ class ManGenerator : public OutputGenerator
void endSubscript() { t << "\\*>"; firstCol=FALSE; } void endSubscript() { t << "\\*>"; firstCol=FALSE; }
void startSuperscript() { t << "\\*{"; firstCol=FALSE; } void startSuperscript() { t << "\\*{"; firstCol=FALSE; }
void endSuperscript() { t << "\\*}"; firstCol=FALSE; } void endSuperscript() { t << "\\*}"; firstCol=FALSE; }
void startTable(int) {} void startTable(bool,int) {}
void endTable() {} void endTable(bool) {}
void startCaption() {}
void endCaption() {}
void nextTableRow() {} void nextTableRow() {}
void endTableRow() {} void endTableRow() {}
void nextTableColumn() {} void nextTableColumn() {}
......
...@@ -349,6 +349,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -349,6 +349,7 @@ MemberDef::MemberDef(const char *df,int dl,
argList=0; argList=0;
} }
m_templateMaster=0; m_templateMaster=0;
classSectionSDict=0;
} }
/*! Destroys the member definition. */ /*! Destroys the member definition. */
...@@ -360,6 +361,7 @@ MemberDef::~MemberDef() ...@@ -360,6 +361,7 @@ MemberDef::~MemberDef()
delete argList; delete argList;
delete tArgList; delete tArgList;
delete m_defTmpArgLists; delete m_defTmpArgLists;
delete classSectionSDict;
} }
void MemberDef::setReimplements(MemberDef *md) void MemberDef::setReimplements(MemberDef *md)
...@@ -1670,3 +1672,14 @@ void MemberDef::addListReference(Definition *d) ...@@ -1670,3 +1672,14 @@ void MemberDef::addListReference(Definition *d)
d->getOutputFileBase()+":"+anchor(),memName,argsString()); 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);
}
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "entry.h" #include "entry.h"
#include "definition.h" #include "definition.h"
#include "sortdict.h"
class ClassDef; class ClassDef;
class NamespaceDef; class NamespaceDef;
...@@ -81,7 +82,7 @@ class MemberDef : public Definition ...@@ -81,7 +82,7 @@ class MemberDef : public Definition
const QCString &initializer() const { return init; } const QCString &initializer() const { return init; }
int initializerLines() const { return initLines; } int initializerLines() const { return initLines; }
int getMemberSpecifiers() const { return memSpec; } int getMemberSpecifiers() const { return memSpec; }
MemberList *getSectionList() const { return section; } MemberList *getSectionList(Definition *d) const;
// scope query members // scope query members
ClassDef *getClassDef() const { return classDef; } ClassDef *getClassDef() const { return classDef; }
...@@ -143,7 +144,7 @@ class MemberDef : public Definition ...@@ -143,7 +144,7 @@ class MemberDef : public Definition
void setBitfields(const char *s) { bitfields = s; } void setBitfields(const char *s) { bitfields = s; }
void setMaxInitLines(int lines) { userInitLines=lines; } void setMaxInitLines(int lines) { userInitLines=lines; }
void setMemberClass(ClassDef *cd); 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 setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,const QCString &fileName,int startLine,bool hasDocs);
void setExplicitExternal(bool b) { explExt=b; } void setExplicitExternal(bool b) { explExt=b; }
...@@ -300,6 +301,7 @@ class MemberDef : public Definition ...@@ -300,6 +301,7 @@ class MemberDef : public Definition
int groupStartLine; // line " " " " " int groupStartLine; // line " " " " "
bool groupHasDocs; // true if the entry that caused the grouping was documented bool groupHasDocs; // true if the entry that caused the grouping was documented
MemberDef *m_templateMaster; MemberDef *m_templateMaster;
SIntDict<MemberList> *classSectionSDict;
// disable copying of member defs // disable copying of member defs
......
...@@ -53,7 +53,7 @@ MemberGroup::~MemberGroup() ...@@ -53,7 +53,7 @@ MemberGroup::~MemberGroup()
delete memberList; delete memberList;
} }
void MemberGroup::insertMember(MemberDef *md) void MemberGroup::insertMember(Definition *d,MemberDef *md)
{ {
//printf("MemberGroup::insertMember memberList=%p count=%d" //printf("MemberGroup::insertMember memberList=%p count=%d"
// " member section list: %p\n", // " member section list: %p\n",
...@@ -62,13 +62,13 @@ void MemberGroup::insertMember(MemberDef *md) ...@@ -62,13 +62,13 @@ void MemberGroup::insertMember(MemberDef *md)
// md->getSectionList()); // md->getSectionList());
MemberDef *firstMd = memberList->first(); MemberDef *firstMd = memberList->first();
if (inSameSection && memberList->count()>0 && if (inSameSection && memberList->count()>0 &&
firstMd->getSectionList()!=md->getSectionList()) firstMd->getSectionList(d)!=md->getSectionList(d))
{ {
inSameSection=FALSE; inSameSection=FALSE;
} }
else if (inDeclSection==0) else if (inDeclSection==0)
{ {
inDeclSection = md->getSectionList(); inDeclSection = md->getSectionList(d);
} }
memberList->append(md); memberList->append(md);
...@@ -82,9 +82,9 @@ void MemberGroup::insertMember(MemberDef *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, void MemberGroup::writeDeclarations(OutputList &ol,
......
...@@ -40,8 +40,8 @@ class MemberGroup ...@@ -40,8 +40,8 @@ class MemberGroup
~MemberGroup(); ~MemberGroup();
QCString header() const { return grpHeader; } QCString header() const { return grpHeader; }
int groupId() const { return grpId; } int groupId() const { return grpId; }
void insertMember(MemberDef *); void insertMember(Definition *d,MemberDef *md);
void setAnchors(); void setAnchors(ClassDef *);
void writePlainDeclarations(OutputList &ol, void writePlainDeclarations(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd); ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
void writeDeclarations(OutputList &ol, void writeDeclarations(OutputList &ol,
......
...@@ -198,8 +198,10 @@ class BaseOutputDocInterface ...@@ -198,8 +198,10 @@ class BaseOutputDocInterface
virtual void endSubscript() = 0; virtual void endSubscript() = 0;
virtual void startSuperscript() = 0; virtual void startSuperscript() = 0;
virtual void endSuperscript() = 0; virtual void endSuperscript() = 0;
virtual void startTable(int cols) = 0; virtual void startTable(bool hasCaption,int cols) = 0;
virtual void endTable() = 0; virtual void endTable(bool hasCaption) = 0;
virtual void startCaption() = 0;
virtual void endCaption() = 0;
virtual void nextTableRow() = 0; virtual void nextTableRow() = 0;
virtual void endTableRow() = 0; virtual void endTableRow() = 0;
virtual void nextTableColumn() = 0; virtual void nextTableColumn() = 0;
......
...@@ -277,10 +277,14 @@ class OutputList : public OutputDocInterface ...@@ -277,10 +277,14 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startSuperscript); } { forall(&OutputGenerator::startSuperscript); }
void endSuperscript() void endSuperscript()
{ forall(&OutputGenerator::endSuperscript); } { forall(&OutputGenerator::endSuperscript); }
void startTable(int cols) void startTable(bool hasCaption,int cols)
{ forall(&OutputGenerator::startTable,cols); } { forall(&OutputGenerator::startTable,hasCaption,cols); }
void endTable() void endTable(bool hasCaption)
{ forall(&OutputGenerator::endTable); } { forall(&OutputGenerator::endTable,hasCaption); }
void startCaption()
{ forall(&OutputGenerator::startCaption); }
void endCaption()
{ forall(&OutputGenerator::endCaption); }
void nextTableRow() void nextTableRow()
{ forall(&OutputGenerator::nextTableRow); } { forall(&OutputGenerator::nextTableRow); }
void endTableRow() void endTableRow()
......
...@@ -1078,17 +1078,24 @@ BN [ \t\r\n] ...@@ -1078,17 +1078,24 @@ BN [ \t\r\n]
BEGIN(CopyLine); 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 <CopyLine>"{" { // count brackets inside the main file
if (g_includeStack.isEmpty()) if (g_includeStack.isEmpty())
{
g_curlyCount++; g_curlyCount++;
}
outputChar(*yytext); outputChar(*yytext);
} }
<CopyLine>"}" { // count brackets inside the main file <CopyLine>"}" { // count brackets inside the main file
if (g_includeStack.isEmpty()) if (g_includeStack.isEmpty() && g_curlyCount>0)
{
g_curlyCount--; g_curlyCount--;
}
outputChar(*yytext); outputChar(*yytext);
// This should hold otherwise the preprocessor is confused
//ASSERT(g_curlyCount>=0);
} }
<CopyLine>"'"\\[0-7]{1,3}"'" { <CopyLine>"'"\\[0-7]{1,3}"'" {
outputArray(yytext,yyleng); outputArray(yytext,yyleng);
......
...@@ -152,12 +152,14 @@ class RTFGenerator : public OutputGenerator ...@@ -152,12 +152,14 @@ class RTFGenerator : public OutputGenerator
void endSubscript() { t << "}"; } void endSubscript() { t << "}"; }
void startSuperscript() { t << "{\\super " << endl;} void startSuperscript() { t << "{\\super " << endl;}
void endSuperscript() { t << "}"; } void endSuperscript() { t << "}"; }
void startTable(int ) { }//t << "\\begin{TabularC}{" << c << "}\n\\hline\n"; void startTable(bool,int) { /* not implemented */ }
void endTable() { }//t << "\\\\\\hline\n\\end{TabularC}\n"; void endTable(bool) { /* not implemented */ }
void nextTableRow() { } void startCaption() { /* not implemented */ }
void endTableRow() { }//t << "\\\\\\hline\n"; void endCaption() { /* not implemented */ }
void nextTableColumn() { }//t << "&"; void nextTableRow() { /* not implemented */ }
void endTableColumn() { } void endTableRow() { /* not implemented */ }
void nextTableColumn() { /* not implemented */ }
void endTableColumn() { /* not implemented */ }
void writeCopyright() { t << "\251"; } void writeCopyright() { t << "\251"; }
void writeQuote() { t << "\""; } void writeQuote() { t << "\""; }
void writeUmlaut(char c); void writeUmlaut(char c);
......
...@@ -936,11 +936,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -936,11 +936,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
<FindMembers>"template"({BN}*)"<"/[>]? { <FindMembers>"template"({BN}*)"<"/[>]? {
lineCount(); 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) if (current->tArgLists==0)
{ {
current->tArgLists = new QList<ArgumentList>; current->tArgLists = new QList<ArgumentList>;
...@@ -950,33 +945,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -950,33 +945,6 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
al->setAutoDelete(TRUE); al->setAutoDelete(TRUE);
current->tArgLists->append(al); current->tArgLists->append(al);
currentArgumentList = 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="<"; templateStr="<";
fullArgString = templateStr.copy(); fullArgString = templateStr.copy();
copyArgString = &templateStr; copyArgString = &templateStr;
...@@ -2198,7 +2166,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2198,7 +2166,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
BEGIN(SkipCPP); BEGIN(SkipCPP);
} }
*/ */
<FuncQual>[{:;] { unput(*yytext); BEGIN( Function ); } <FuncQual>[{:;,] { unput(*yytext); BEGIN( Function ); }
<FuncQual>{BN}*"const"{BN}* { <FuncQual>{BN}*"const"{BN}* {
lineCount() ; lineCount() ;
current->args += " const "; current->args += " const ";
...@@ -2263,7 +2231,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2263,7 +2231,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Function>":" { <Function>":" {
BEGIN(SkipInits); BEGIN(SkipInits);
} }
<Function>[;{] { <Function>[;{,] {
current->name=current->name.simplifyWhiteSpace(); current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace(); current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace();
...@@ -2325,7 +2293,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2325,7 +2293,11 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current = new Entry ; current = new Entry ;
initEntry(); initEntry();
lastCurlyContext = FindMembers; lastCurlyContext = FindMembers;
if( *yytext == '{' ) if ( *yytext == ',' )
{
current->type = previous->type.data();
}
if ( *yytext == '{' )
{ {
if (current_root->section & Entry::COMPOUND_MASK) if (current_root->section & Entry::COMPOUND_MASK)
previous->memSpec = previous->memSpec | Entry::Inline; previous->memSpec = previous->memSpec | Entry::Inline;
...@@ -4023,9 +3995,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -4023,9 +3995,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ { <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,AfterDoc>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->doc += yytext; 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}+ { <ClassDocBrief,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+[ \t]*"-"("#")?{B}+ {
current->brief += "-"; 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}*)?)"*"+/[^/]
<Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ { <Doc,JavaDoc,ClassDoc,PageDoc,ExampleDoc,ReadFormulaShort,ReadFormulaLong,ClassDocBrief,AfterDoc,AfterDocBrief>^{B}*(("//"{B}*)?)"*"+{B}+ {
current->doc+=' '; current->doc+=' ';
......
...@@ -191,3 +191,81 @@ QCString Translator::Windows1251ToKoi8R( const QCString & sInput ) ...@@ -191,3 +191,81 @@ QCString Translator::Windows1251ToKoi8R( const QCString & sInput )
return result.local8Bit(); 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();
}
...@@ -44,6 +44,9 @@ class Translator ...@@ -44,6 +44,9 @@ class Translator
/*! Returns the string converted from windows-1251 to koi8-r. */ /*! Returns the string converted from windows-1251 to koi8-r. */
QCString Windows1251ToKoi8R( const QCString & sInput ); QCString Windows1251ToKoi8R( const QCString & sInput );
/*! Returns the string converted from Japanese-EUC to SJIS. */
QCString JapaneseEucToSjis( const QCString & sInput );
public: public:
......
...@@ -15,464 +15,559 @@ ...@@ -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 #ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H #define TRANSLATOR_JP_H
#include "translator_adapter.h" class TranslatorJapanese : public Translator
class TranslatorJapanese : public TranslatorAdapter_1_2_5
{ {
private:
/*! The decode() can change euc into sjis */
inline QCString decode(const QCString & sInput)
{
#ifdef _WIN32
return JapaneseEucToSjis(sInput);
#else
return sInput;
#endif
}
public: public:
QCString idLanguage() virtual QCString idLanguage()
{ return "japanese"; } { return "japanese"; }
virtual QCString latexLanguageSupportCommand()
{
return "";
}
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() virtual QCString idLanguageCharset()
{ return "english"; } {
QCString idLanguageCharset() #ifdef _WIN32
{ return "euc-jp"; } return "ShiftJIS";
#else
return "euc-jp";
#endif
}
/*! used in the compound documentation before a list of related functions. */ /*! used in the compound documentation before a list of related functions. */
QCString trRelatedFunctions() virtual QCString trRelatedFunctions()
{ return "関連する関数"; } { return decode("関連する関数"); }
/*! subscript for the related functions. */ /*! subscript for the related functions. */
QCString trRelatedSubscript() virtual QCString trRelatedSubscript()
{ return "(これらはメンバ関数でないことに注意)"; } { return decode("(これらはメンバ関数でないことに注意)"); }
/*! header that is put before the detailed description of files, classes and namespaces. */ /*! header that is put before the detailed description of files, classes and namespaces. */
QCString trDetailedDescription() virtual QCString trDetailedDescription()
{ return "解説"; } { return decode("解説"); }
/*! header that is put before the list of typedefs. */ /*! header that is put before the list of typedefs. */
QCString trMemberTypedefDocumentation() virtual QCString trMemberTypedefDocumentation()
{ return "メンバ型定義の解説"; } { return decode("メンバ型定義の解説"); }
/*! header that is put before the list of enumerations. */ /*! header that is put before the list of enumerations. */
QCString trMemberEnumerationDocumentation() virtual QCString trMemberEnumerationDocumentation()
{ return "メンバ列挙型の解説"; } { return decode("メンバ列挙型の解説"); }
/*! header that is put before the list of member functions. */ /*! header that is put before the list of member functions. */
QCString trMemberFunctionDocumentation() virtual QCString trMemberFunctionDocumentation()
{ return "メンバ関数の解説"; } { return decode("メンバ関数の解説"); }
/*! header that is put before the list of member attributes. */ /*! header that is put before the list of member attributes. */
QCString trMemberDataDocumentation() virtual QCString trMemberDataDocumentation()
{ return "メンバデータの解説"; } {
if( Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("構造体の解説");
}
else
{
return decode("メンバの解説");
}
}
/*! this is the text of a link put after brief descriptions. */ /*! this is the text of a link put after brief descriptions. */
QCString trMore() virtual QCString trMore()
{ return "より詳しく..."; } { return decode("より詳しく..."); }
/*! put in the class documentation */ /*! put in the class documentation */
QCString trListOfAllMembers() virtual QCString trListOfAllMembers()
{ return "すべてのメンバリスト"; } { return decode("すべてのメンバリスト"); }
/*! used as the title of the "list of all members" page of a class */ /*! used as the title of the "list of all members" page of a class */
QCString trMemberList() virtual QCString trMemberList()
{ return "メンバリスト"; } { return decode("メンバリスト"); }
/*! this is the first part of a sentence that is followed by a class name */ /*! this is the first part of a sentence that is followed by a class name */
QCString trThisIsTheListOfAllMembers() virtual QCString trThisIsTheListOfAllMembers()
{ return "これは全メンバリストです。"; } { return decode("これは全メンバリストです。"); }
/*! this is the remainder of the sentence after the class name */ /*! this is the remainder of the sentence after the class name */
QCString trIncludingInheritedMembers() virtual QCString trIncludingInheritedMembers()
{ return "継承メンバもすべて含んでいます。"; } { return decode("継承メンバもすべて含んでいます。"); }
/*! this is put at the author sections at the bottom of man pages. /*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name. * parameter s is name of the project name.
*/ */
QCString trGeneratedAutomatically(const char *s) virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result; { QCString result;
if (s) result=(QCString)s+"の"; if (s) result=(QCString)s+"の";
result+="ソースコードから Doxygen が自動的に生成しました。"; result+="ソースコードから Doxygen が自動的に生成しました。";
return result; return decode(result);
} }
/*! put after an enum name in the list of all members */ /*! put after an enum name in the list of all members */
QCString trEnumName() virtual QCString trEnumName()
{ return "enum 型"; } { return decode("列挙型"); }
/*! put after an enum value in the list of all members */ /*! put after an enum value in the list of all members */
QCString trEnumValue() virtual QCString trEnumValue()
{ return "enum 値"; } { return decode("列挙値"); }
/*! put after an undocumented member in the list of all members */ /*! put after an undocumented member in the list of all members */
QCString trDefinedIn() virtual QCString trDefinedIn()
{ return "次で定義されました。"; } { return decode("次で定義されました。"); }
/*! 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+"の内容です。"; }
// quick reference sections // quick reference sections
/*! This is put above each page as a link to the list of all groups of /*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \group command). * compounds or files (see the \group command).
*/ */
QCString trModules() virtual QCString trModules()
{ return "モジュール"; } { return decode("モジュール"); }
/*! This is put above each page as a link to the class hierarchy */ /*! This is put above each page as a link to the class hierarchy */
QCString trClassHierarchy() virtual QCString trClassHierarchy()
{ return "クラス階層"; } { return decode("クラス階層"); }
/*! This is put above each page as a link to the list of annotated classes */ /*! This is put above each page as a link to the list of annotated classes */
QCString trCompoundList() virtual QCString trCompoundList()
{ return "データ構造リスト"; } {
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 */ /*! This is put above each page as a link to the list of documented files */
QCString trFileList() virtual QCString trFileList()
{ return "ファイルリスト"; } { return decode("ファイルリスト"); }
/*! This is put above each page as a link to the list of all verbatim headers */ /*! This is put above each page as a link to the list of all verbatim headers */
QCString trHeaderFiles() virtual QCString trHeaderFiles()
{ return "ヘッダファイル"; } { return decode("ヘッダファイル"); }
/*! This is put above each page as a link to all members of compounds. */ /*! This is put above each page as a link to all members of compounds. */
QCString trCompoundMembers() virtual QCString trCompoundMembers()
{ return "データ構造メンバ"; } {
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. */ /*! This is put above each page as a link to all members of files. */
QCString trFileMembers() virtual QCString trFileMembers()
{ return "ファイルメンバ"; } {
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. */ /*! This is put above each page as a link to all related pages. */
QCString trRelatedPages() virtual QCString trRelatedPages()
{ return "関連ページ"; } { return decode("関連ページ"); }
/*! This is put above each page as a link to all examples. */ /*! This is put above each page as a link to all examples. */
QCString trExamples() virtual QCString trExamples()
{ return "例"; } { return decode("例"); }
/*! This is put above each page as a link to the search engine. */ /*! This is put above each page as a link to the search engine. */
QCString trSearch() virtual QCString trSearch()
{ return "検索"; } { return decode("検索"); }
/*! This is an introduction to the class hierarchy. */ /*! This is an introduction to the class hierarchy. */
QCString trClassHierarchyDescription() virtual QCString trClassHierarchyDescription()
{ return "この継承リストはおおまかにはソートされていますが、" { return decode("この継承リストはおおまかにはソートされていますが、"
"アルファベット順で完全にソートされてはいません。"; "アルファベット順で完全にソートされてはいません。");
} }
/*! This is an introduction to the list with all files. */ /*! This is an introduction to the list with all files. */
QCString trFileListDescription(bool extractAll) virtual QCString trFileListDescription(bool extractAll)
{ {
QCString result="このリストは、"; QCString result="このリストは、";
if (!extractAll) result+="ドキュメント化され、"; if (!extractAll) result+="ドキュメント化され、";
result+="簡易説明を持つファイルすべてのリストです。"; result+="簡易説明を持つファイルすべてのリストです。";
return result; return decode(result);
} }
/*! This is an introduction to the annotated compound list. */ /*! This is an introduction to the annotated compound list. */
QCString trCompoundListDescription() virtual QCString trCompoundListDescription()
{ return "これは簡易説明を持つ、クラス、構造体、共用体のリストです。";} {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("データ構造の簡単な説明です。");
}
else
{
return decode("クラス、構造体、共用体、インタフェースの簡単な説明です。");
}
}
/*! This is an introduction to the page with all class members. */ /*! This is an introduction to the page with all class members. */
QCString trCompoundMembersDescription(bool extractAll) virtual QCString trCompoundMembersDescription(bool extractAll)
{ {
QCString result="これは"; QCString result="これは";
if (!extractAll) result+="ドキュメント化された"; if (!extractAll) result+="ドキュメント化された";
result+="クラスメンバすべてのリストで、それぞれ"; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
if (extractAll) result+="が属しているクラス"; {
result+="フィールドすべてのリストで、それぞれ";
if (extractAll) result+="が属している構造体/共用体";
}
else
{
result+="クラスメンバすべてのリストで、それぞれ";
if (extractAll) result+="が属しているクラス";
}
result+="の解説へのリンクが張られています。"; result+="の解説へのリンクが張られています。";
return result; return decode(result);
} }
/*! This is an introduction to the page with all file members. */ /*! This is an introduction to the page with all file members. */
QCString trFileMembersDescription(bool extractAll) virtual QCString trFileMembersDescription(bool extractAll)
{ {
QCString result="これは"; QCString result="これは";
if (!extractAll) result+="ドキュメント化された"; if (!extractAll) result+="ドキュメント化された";
result+="ファイルメンバすべてのリストで、それぞれ"; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+="関数、変数、マクロ、列挙型、型定義のリストで、それぞれ";
}
else
{
result+="ファイルメンバすべてのリストで、それぞれ";
}
if (extractAll) result+="が属しているファイル"; if (extractAll) result+="が属しているファイル";
result+="の解説へのリンクが張られています。"; result+="の解説へのリンクが張られています。";
return result; return decode(result);
} }
/*! This is an introduction to the page with the list of all header files. */ /*! This is an introduction to the page with the list of all header files. */
QCString trHeaderFilesDescription() virtual QCString trHeaderFilesDescription()
{ return "APIを構成するヘッダファイルです。"; } { return decode("APIを構成するヘッダファイルです。"); }
/*! This is an introduction to the page with the list of all examples */ /*! This is an introduction to the page with the list of all examples */
QCString trExamplesDescription() virtual QCString trExamplesDescription()
{ return "すべての例のリストです。"; } { return decode("すべての例のリストです。"); }
/*! This is an introduction to the page with the list of related pages */ /*! This is an introduction to the page with the list of related pages */
QCString trRelatedPagesDescription() virtual QCString trRelatedPagesDescription()
{ return "関連するドキュメントページすべてのリストです。"; } { return decode("関連するドキュメントページすべてのリストです。"); }
/*! This is an introduction to the page with the list of class/file groups */ /*! This is an introduction to the page with the list of class/file groups */
QCString trModulesDescription() virtual QCString trModulesDescription()
{ return "すべてのモジュールのリストです。"; } { return decode("すべてのモジュールのリストです。"); }
/*! This sentences is used in the annotated class/file lists if no brief /*! This sentences is used in the annotated class/file lists if no brief
* description is given. * description is given.
*/ */
QCString trNoDescriptionAvailable() virtual QCString trNoDescriptionAvailable()
{ return "ドキュメントが記述されていません。"; } { return decode("ドキュメントが記述されていません。"); }
// index titles (the project name is prepended for these) // index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */ /*! This is used in HTML as the title of index.html. */
QCString trDocumentation() virtual QCString trDocumentation()
{ return "ドキュメント"; } { return decode("ドキュメント"); }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* index of all groups. * index of all groups.
*/ */
QCString trModuleIndex() virtual QCString trModuleIndex()
{ return "モジュール索引"; } { return decode("モジュール索引"); }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* class hierarchy. * class hierarchy.
*/ */
QCString trHierarchicalIndex() virtual QCString trHierarchicalIndex()
{ return "階層索引"; } { return decode("階層索引"); }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* annotated compound index. * annotated compound index.
*/ */
QCString trCompoundIndex() virtual QCString trCompoundIndex()
{ return "データ構造索引"; } {
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 /*! This is used in LaTeX as the title of the chapter with the
* list of all files. * list of all files.
*/ */
QCString trFileIndex() virtual QCString trFileIndex()
{ return "ファイル索引"; } { return decode("ファイル索引"); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all groups. * the documentation of all groups.
*/ */
QCString trModuleDocumentation() virtual QCString trModuleDocumentation()
{ return "モジュールの解説"; } { return decode("モジュールの解説"); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions. * the documentation of all classes, structs and unions.
*/ */
QCString trClassDocumentation() virtual QCString trClassDocumentation()
{ return "クラスの解説"; } {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("データ構造の解説");
}
else
{
return decode("クラスの解説");
}
}
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files. * the documentation of all files.
*/ */
QCString trFileDocumentation() virtual QCString trFileDocumentation()
{ return "ファイルの解説"; } { return decode("ファイルの解説"); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples. * the documentation of all examples.
*/ */
QCString trExampleDocumentation() virtual QCString trExampleDocumentation()
{ return "例題の解説"; } { return decode("例題の解説"); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages. * the documentation of all related pages.
*/ */
QCString trPageDocumentation() virtual QCString trPageDocumentation()
{ return "ページの解説"; } { return decode("ページの解説"); }
/*! This is used in LaTeX as the title of the document */ /*! This is used in LaTeX as the title of the document */
QCString trReferenceManual() virtual QCString trReferenceManual()
{ return "リファレンスマニュアル"; } { return decode("リファレンスマニュアル"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of defines * list of defines
*/ */
QCString trDefines() virtual QCString trDefines()
{ return "マクロ定義"; } { return decode("マクロ定義"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of function prototypes * list of function prototypes
*/ */
QCString trFuncProtos() virtual QCString trFuncProtos()
{ return "関数プロトタイプ"; } { return decode("関数プロトタイプ"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of typedefs * list of typedefs
*/ */
QCString trTypedefs() virtual QCString trTypedefs()
{ return "型定義"; } { return decode("型定義"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of enumerations * list of enumerations
*/ */
QCString trEnumerations() virtual QCString trEnumerations()
{ return "列挙型"; } { return decode("列挙型"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) functions * list of (global) functions
*/ */
QCString trFunctions() virtual QCString trFunctions()
{ return "関数"; } { return decode("関数"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
QCString trVariables() virtual QCString trVariables()
{ return "変数"; } { return decode("変数"); }
/*! This is used in the documentation of a file as a header before the /*! This is used in the documentation of a file as a header before the
* list of (global) variables * list of (global) variables
*/ */
QCString trEnumerationValues() virtual QCString trEnumerationValues()
{ return "列挙型値"; } { return decode("列挙型値"); }
/*! This is used in man pages as the author section. */
QCString trAuthor()
{ return "作者"; }
/*! This is used in the documentation of a file before the list of /*! This is used in the documentation of a file before the list of
* documentation blocks for defines * documentation blocks for defines
*/ */
QCString trDefineDocumentation() virtual QCString trDefineDocumentation()
{ return "マクロ定義の解説"; } { return decode("マクロ定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for function prototypes * of documentation blocks for function prototypes
*/ */
QCString trFunctionPrototypeDocumentation() virtual QCString trFunctionPrototypeDocumentation()
{ return "関数プロトタイプの解説"; } { return decode("関数プロトタイプの解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for typedefs * of documentation blocks for typedefs
*/ */
QCString trTypedefDocumentation() virtual QCString trTypedefDocumentation()
{ return "型定義の解説"; } { return decode("型定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types * of documentation blocks for enumeration types
*/ */
QCString trEnumerationTypeDocumentation() virtual QCString trEnumerationTypeDocumentation()
{ return "列挙型の解説"; } { return decode("列挙型の解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values * of documentation blocks for enumeration values
*/ */
QCString trEnumerationValueDocumentation() virtual QCString trEnumerationValueDocumentation()
{ return "列挙型値の解説"; } { return decode("列挙型値の解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions * of documentation blocks for functions
*/ */
QCString trFunctionDocumentation() virtual QCString trFunctionDocumentation()
{ return "関数の解説"; } { return decode("関数の解説"); }
/*! This is used in the documentation of a file/namespace before the list /*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables * of documentation blocks for variables
*/ */
QCString trVariableDocumentation() virtual QCString trVariableDocumentation()
{ return "変数の解説"; } { return decode("変数の解説"); }
/*! This is used in the documentation of a file/namespace/group before /*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds * the list of links to documented compounds
*/ */
QCString trCompounds() virtual QCString trCompounds()
{ return "データ構造"; } {
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
/*! This is used in the documentation of a group before the list of {
* links to documented files return decode("データ構造");
*/ }
QCString trFiles() else
{ return "ファイル"; } {
return decode("構成");
}
}
/*! This is used in the standard footer of each page and indicates when /*! This is used in the standard footer of each page and indicates when
* the page was generated * the page was generated
*/ */
QCString trGeneratedAt(const char *date,const char *projName) virtual QCString trGeneratedAt(const char *date,const char *projName)
{ {
QCString result; QCString result;
if (projName) result+=(QCString)projName+"に対して"; if (projName) result+=(QCString)projName+"に対して";
result+=(QCString)date+"に生成されました。"; result+=(QCString)date+"に生成されました。";
return result; return decode(result);
} }
/*! This is part of the sentence used in the standard footer of each page. /*! 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 */ /*! 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. */ /*! this text is generated when the \\internal command is used. */
QCString trForInternalUseOnly() virtual QCString trForInternalUseOnly()
{ return "内部使用のみ。"; } { return decode("内部使用のみ。"); }
/*! this text is generated when the \\reimp command is used. */ /*! this text is generated when the \\reimp command is used. */
QCString trReimplementedForInternalReasons() virtual QCString trReimplementedForInternalReasons()
{ return "内部的な理由により再実装されましたが、APIには影響しません。"; { return decode("内部的な理由により再実装されましたが、APIには影響しません。");
} }
/*! this text is generated when the \\warning command is used. */ /*! this text is generated when the \\warning command is used. */
QCString trWarning() virtual QCString trWarning()
{ return "警告"; } { return decode("警告"); }
/*! this text is generated when the \\bug command is used. */ /*! this text is generated when the \\bug command is used. */
QCString trBugsAndLimitations() virtual QCString trBugsAndLimitations()
{ return "バグと制限"; } { return decode("バグと制限"); }
/*! this text is generated when the \\version command is used. */ /*! this text is generated when the \\version command is used. */
QCString trVersion() virtual QCString trVersion()
{ return "バージョン"; } { return decode("バージョン"); }
/*! this text is generated when the \\date command is used. */ /*! this text is generated when the \\date command is used. */
QCString trDate() virtual QCString trDate()
{ return "日付"; } { return decode("日付"); }
/*! this text is generated when the \\author command is used. */ /*! this text is generated when the \\author command is used. */
QCString trAuthors() virtual QCString trAuthors()
{ return "作者"; } { return decode("作者"); }
/*! this text is generated when the \\return command is used. */ /*! this text is generated when the \\return command is used. */
QCString trReturns() virtual QCString trReturns()
{ return "戻り値"; } { return decode("戻り値"); }
/*! this text is generated when the \\sa command is used. */ /*! this text is generated when the \\sa command is used. */
QCString trSeeAlso() virtual QCString trSeeAlso()
{ return "参照"; } { return decode("参照"); }
/*! this text is generated when the \\param command is used. */ /*! this text is generated when the \\param command is used. */
QCString trParameters() virtual QCString trParameters()
{ return "引数"; } { return decode("引数"); }
/*! this text is generated when the \\exception command is used. */ /*! this text is generated when the \\exception command is used. */
QCString trExceptions() virtual QCString trExceptions()
{ return "例外"; } { return decode("例外"); }
/*! this text is used in the title page of a LaTeX document. */ /*! this text is used in the title page of a LaTeX document. */
QCString trGeneratedBy() virtual QCString trGeneratedBy()
{ return ""; } { return decode(""); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990307 // new since 0.49-990307
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */ /*! used as the title of page containing all the index of all namespaces. */
QCString trNamespaceList() virtual QCString trNamespaceList()
{ return "名前空間リスト"; } { return decode("名前空間リスト"); }
/*! used as an introduction to the namespace list */ /*! used as an introduction to the namespace list */
QCString trNamespaceListDescription(bool extractAll) virtual QCString trNamespaceListDescription(bool extractAll)
{ {
QCString result="このリストは、簡易説明を持つすべての"; QCString result="このリストは、簡易説明を持つすべての";
if (!extractAll) result+="ドキュメント化された"; if (!extractAll) result+="ドキュメント化された";
result+="名前空間のリストです。"; result+="名前空間のリストです。";
return result; return decode(result);
} }
/*! used in the class documentation as a header before the list of all /*! used in the class documentation as a header before the list of all
* friends of a class * friends of a class
*/ */
QCString trFriends() virtual QCString trFriends()
{ return "フレンド"; } { return decode("フレンド"); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990405 // new since 0.49-990405
...@@ -482,16 +577,16 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -482,16 +577,16 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
* related classes * related classes
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "フレンドと関連する関数の解説"; } { return decode("フレンドと関連する関数の解説"); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */ /*! 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, ClassDef::CompoundType compType,
bool /*isTemplate*/) bool isTemplate)
{ {
QCString result=""; QCString result="";
switch(compType) switch(compType)
...@@ -500,52 +595,53 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -500,52 +595,53 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
case ClassDef::Struct: result+="構造体 "; break; case ClassDef::Struct: result+="構造体 "; break;
case ClassDef::Union: result+="共用体 "; break; case ClassDef::Union: result+="共用体 "; break;
case ClassDef::Interface: 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+" の解説"; result+=(QCString)clName+" の解説";
return result; return decode(result);
} }
/*! used as the title of the HTML page of a file */ /*! 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+" の解説"; QCString result="ファイル "+(QCString)fileName+" の解説";
return result; return decode(result);
} }
/*! used as the title of the HTML page of a namespace */ /*! 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+" の解説"; QCString result="名前空間 "+(QCString)namespaceName+" の解説";
return result; return decode(result);
} }
/* these are for the member sections of a class, struct or union */ /* these are for the member sections of a class, struct or union */
QCString trPublicMembers() virtual QCString trPublicMembers()
{ return "公開メンバ"; } { return decode("公開メンバ"); }
QCString trPublicSlots() virtual QCString trPublicSlots()
{ return "公開スロット"; } { return decode("公開スロット"); }
QCString trSignals() virtual QCString trSignals()
{ return "シグナル"; } { return decode("シグナル"); }
QCString trStaticPublicMembers() virtual QCString trStaticPublicMembers()
{ return "静的公開メンバ"; } { return decode("静的公開メンバ"); }
QCString trProtectedMembers() virtual QCString trProtectedMembers()
{ return "保護メンバ"; } { return decode("保護メンバ"); }
QCString trProtectedSlots() virtual QCString trProtectedSlots()
{ return "保護スロット"; } { return decode("保護スロット"); }
QCString trStaticProtectedMembers() virtual QCString trStaticProtectedMembers()
{ return "静的保護メンバ"; } { return decode("静的保護メンバ"); }
QCString trPrivateMembers() virtual QCString trPrivateMembers()
{ return "非公開メンバ"; } { return decode("非公開メンバ"); }
QCString trPrivateSlots() virtual QCString trPrivateSlots()
{ return "非公開スロット"; } { return decode("非公開スロット"); }
QCString trStaticPrivateMembers() virtual QCString trStaticPrivateMembers()
{ return "静的非公開メンバ"; } { return decode("静的非公開メンバ"); }
/*! this function is used to produce a comma-separated list of items. /*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put. * use generateMarker(i) to indicate where item i should be put.
*/ */
QCString trWriteList(int numEntries) virtual QCString trWriteList(int numEntries)
{ {
QCString result; QCString result;
int i; int i;
...@@ -564,47 +660,47 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -564,47 +660,47 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
result+=", と "; result+=", と ";
} }
} }
return result; return decode(result);
} }
/*! used in class documentation to produce a list of base classes, /*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled. * if class diagrams are disabled.
*/ */
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, /*! used in class documentation to produce a list of super classes,
* if class diagrams are disabled. * 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 /*! used in member documentation blocks to produce a list of
* members that are hidden by this one. * 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 /*! used in member documentation blocks to produce a list of
* all member that overwrite the implementation of this member. * 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. */ /*! This is put above each page as a link to all members of namespaces. */
QCString trNamespaceMembers() virtual QCString trNamespaceMembers()
{ return "名前空間メンバ"; } { return decode("名前空間メンバ"); }
/*! This is an introduction to the page with all namespace members */ /*! This is an introduction to the page with all namespace members */
QCString trNamespaceMemberDescription(bool extractAll) virtual QCString trNamespaceMemberDescription(bool extractAll)
{ {
QCString result="これは"; QCString result="これは";
if (!extractAll) result+="ドキュメント化された"; if (!extractAll) result+="ドキュメント化された";
...@@ -614,19 +710,19 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -614,19 +710,19 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
else else
result+="が属している名前空間"; result+="が属している名前空間";
result+="へのリンクが張られています。"; result+="へのリンクが張られています。";
return result; return decode(result);
} }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces. * index of all namespaces.
*/ */
QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
{ return "名前空間索引"; } { return decode("名前空間索引"); }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces. * the documentation of all namespaces.
*/ */
QCString trNamespaceDocumentation() virtual QCString trNamespaceDocumentation()
{ return "名前空間の解説"; } { return decode("名前空間の解説"); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990522 // new since 0.49-990522
...@@ -635,8 +731,8 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -635,8 +731,8 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! This is used in the documentation before the list of all /*! This is used in the documentation before the list of all
* namespaces in a file. * namespaces in a file.
*/ */
QCString trNamespaces() virtual QCString trNamespaces()
{ return "名前空間"; } { return decode("名前空間"); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990728 // new since 0.49-990728
...@@ -645,7 +741,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -645,7 +741,7 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! This is put at the bottom of a class documentation page and is /*! 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. * 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) bool)
{ // here s is one of " Class", " Struct" or " Union" { // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file // single is true implies a single file
...@@ -656,61 +752,61 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -656,61 +752,61 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
case ClassDef::Struct: result+="構造体"; break; case ClassDef::Struct: result+="構造体"; break;
case ClassDef::Union: result+="共用体"; break; case ClassDef::Union: result+="共用体"; break;
case ClassDef::Interface: result+="インタフェース"; break; case ClassDef::Interface: result+="インタフェース"; break;
case ClassDef::Exception: result+="Exception"; break; //TODO:fixme case ClassDef::Exception: result+="例外"; break; //TODO:fixme
} }
result+="の解説は次のファイルから生成されました:"; result+="の解説は次のファイルから生成されました:";
return result; return decode(result);
} }
/*! This is in the (quick) index as a link to the alphabetical compound /*! This is in the (quick) index as a link to the alphabetical compound
* list. * list.
*/ */
QCString trAlphabeticalList() virtual QCString trAlphabeticalList()
{ return "アルファベット順リスト"; } { return decode("アルファベット順リスト"); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990901 // new since 0.49-990901
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */ /*! This is used as the heading text for the retval command. */
QCString trReturnValues() virtual QCString trReturnValues()
{ return "戻り値"; } { return decode("戻り値"); }
/*! This is in the (quick) index as a link to the main page (index.html) /*! This is in the (quick) index as a link to the main page (index.html)
*/ */
QCString trMainPage() virtual QCString trMainPage()
{ return "メインページ"; } { return decode("メインページ"); }
/*! This is used in references to page that are put in the LaTeX /*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page. * documentation. It should be an abbreviation of the word page.
*/ */
QCString trPageAbbreviation() virtual QCString trPageAbbreviation()
{ return "p."; } { return decode("p."); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-991003 // 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 // 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 ...@@ -718,115 +814,122 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */ /*! 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 */ /*! 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. */ /*! 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. */ /*! 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. */ /*! Used in the file sources to point to the corresponding documentation. */
QCString trGotoDocumentation() virtual QCString trGotoDocumentation()
{ {
return "このファイルの解説を見る。"; return decode("このファイルの解説を見る。");
} }
/*! Text for the \\pre command */ /*! Text for the \\pre command */
QCString trPrecondition() virtual QCString trPrecondition()
{ {
return "事前条件"; return decode("事前条件");
} }
/*! Text for the \\post command */ /*! Text for the \\post command */
QCString trPostcondition() virtual QCString trPostcondition()
{ {
return "事後条件"; return decode("事後条件");
} }
/*! Text for the \\invariant command */ /*! Text for the \\invariant command */
QCString trInvariant() virtual QCString trInvariant()
{ {
return "Invariant"; return decode("不変");
} }
/*! Text shown before a multi-line variable/enum initialization */ /*! 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 */ /*! 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 // 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 ...@@ -834,40 +937,40 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a todo item */ /*! 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 */ /*! Used as the header of the todo list */
QCString trTodoList() virtual QCString trTodoList()
{ {
return "TODOリスト"; return decode("TODOリスト");
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 1.1.4 // 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 ...@@ -875,15 +978,15 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! title of the graph legend page */ /*! title of the graph legend page */
QCString trLegendTitle() virtual QCString trLegendTitle()
{ {
return "グラフの凡例"; return decode("グラフの凡例");
} }
/*! page explaining how the dot graph's should be interpreted */ /*! page explaining how the dot graph's should be interpreted */
QCString trLegendDocs() virtual QCString trLegendDocs()
{ {
return return
"このページでは、doxygen で生成されたグラフをどのようにみたらよいかを" decode("このページでは、doxygen で生成されたグラフをどのようにみたらよいかを"
"説明します。<p>\n" "説明します。<p>\n"
"次の例を考えてみます。\n" "次の例を考えてみます。\n"
"\\code\n" "\\code\n"
...@@ -933,12 +1036,12 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5 ...@@ -933,12 +1036,12 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
"<li>紫の破線矢印は、そのクラスが他のクラスに含まれていたり、" "<li>紫の破線矢印は、そのクラスが他のクラスに含まれていたり、"
"利用されていることを示します。また、矢印が指しているクラスや構造体を" "利用されていることを示します。また、矢印が指しているクラスや構造体を"
"どの変数でアクセスできるかを矢印のラベルとして示しています。\n" "どの変数でアクセスできるかを矢印のラベルとして示しています。\n"
"</ul>\n"; "</ul>\n");
} }
/*! text for the link to the legend page */ /*! 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 ...@@ -946,14 +1049,14 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a test item */ /*! 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 */ /*! 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 ...@@ -961,9 +1064,9 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */ /*! 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 ...@@ -971,14 +1074,14 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! Used as a section header for IDL properties */ /*! 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 */ /*! 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 ...@@ -989,43 +1092,241 @@ class TranslatorJapanese : public TranslatorAdapter_1_2_5
/*! Used for Java interfaces in the summary section of Java packages */ /*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces() virtual QCString trInterfaces()
{ {
return "インターフェース"; return decode("インターフェース");
} }
/*! Used for Java classes in the summary section of Java packages */ /*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses() virtual QCString trClasses()
{ {
return "クラス"; if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
return decode("データ構造");
}
else
{
return decode("クラス");
}
} }
/*! Used as the title of a Java package */ /*! Used as the title of a Java package */
virtual QCString trPackage(const char *name) virtual QCString trPackage(const char *name)
{ {
return (QCString)"パッケージ "+name; return decode((QCString)"パッケージ "+name);
} }
/*! Title of the package index page */ /*! Title of the package index page */
virtual QCString trPackageList() virtual QCString trPackageList()
{ {
return "パッケージリスト"; return decode("パッケージリスト");
} }
/*! The description of the package index page */ /*! The description of the package index page */
virtual QCString trPackageListDescription() virtual QCString trPackageListDescription()
{ {
return "簡易説明を持つパッケージです。"; return decode("簡易説明を持つパッケージです。");
} }
/*! The link name in the Quick links header for each page */ /*! The link name in the Quick links header for each page */
virtual QCString trPackages() virtual QCString trPackages()
{ {
return "パッケージ"; return decode("パッケージ");
} }
/*! Used as a chapter title for Latex & RTF output */ /*! Used as a chapter title for Latex & RTF output */
virtual QCString trPackageDocumentation() virtual QCString trPackageDocumentation()
{ {
return "パッケージの解説"; return decode("パッケージの解説");
} }
/*! Text shown before a multi-line define */ /*! Text shown before a multi-line define */
virtual QCString trDefineValue() 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 #endif
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#ifndef TRANSLATOR_SK_H #ifndef TRANSLATOR_SK_H
#define TRANSLATOR_SK_H #define TRANSLATOR_SK_H
class TranslatorSlovak : public TranslatorAdapter_1_2_11 class TranslatorSlovak : public Translator
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
...@@ -1221,13 +1221,13 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11 ...@@ -1221,13 +1221,13 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11
/*! Used as ansicpg for RTF fcharset */ /*! Used as ansicpg for RTF fcharset */
virtual QCString trRTFCharSet() virtual QCString trRTFCharSet()
{ {
return "0"; //??? return "3";
} }
/*! Used as header RTF general index */ /*! Used as header RTF general index */
virtual QCString trRTFGeneralIndex() virtual QCString trRTFGeneralIndex()
{ {
return "Index"; //??? return "Index";
} }
/*! This is used for translation of the word that will possibly /*! This is used for translation of the word that will possibly
...@@ -1331,6 +1331,17 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11 ...@@ -1331,6 +1331,17 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_11
result += (singular) ? "r" : "ri"; result += (singular) ? "r" : "ri";
return result; 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 #endif // TRANSLATOR_SK_H
...@@ -3102,7 +3102,8 @@ const char *getOverloadDocs() ...@@ -3102,7 +3102,8 @@ const char *getOverloadDocs()
"function only in what argument(s) it accepts."; "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); MemberListIterator mli(*ml);
MemberDef *md; MemberDef *md;
...@@ -3122,19 +3123,30 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict) ...@@ -3122,19 +3123,30 @@ void addMembersToMemberGroup(MemberList *ml,MemberGroupSDict *memberGroupSDict)
mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0); mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
memberGroupSDict->append(groupId,mg); memberGroupSDict->append(groupId,mg);
} }
md = ml->take(index); md = ml->take(index); // remove from member list
mg->insertMember(md); //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); md->setMemberGroup(mg);
continue;
} }
else
{
++mli;++index;
}
}
else
{
++mli;++index;
} }
++mli;++index;
} }
} }
......
...@@ -42,6 +42,7 @@ class ClassList; ...@@ -42,6 +42,7 @@ class ClassList;
class MemberGroupSDict; class MemberGroupSDict;
class Definition; class Definition;
struct TagInfo; struct TagInfo;
class MemberNameInfoSDict;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -148,7 +149,9 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE); ...@@ -148,7 +149,9 @@ int iSystem(const char *command,const char *args,bool isBatchFile=FALSE);
QCString convertToHtml(const char *s); QCString convertToHtml(const char *s);
QCString convertToXML(const char *s); QCString convertToXML(const char *s);
const char * getOverloadDocs(); 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, bool extractClassNameFromType(const QCString &type,int &pos,
QCString &name,QCString &templSpec); QCString &name,QCString &templSpec);
QCString substituteTemplateArgumentsInString( QCString substituteTemplateArgumentsInString(
......
...@@ -83,16 +83,12 @@ inline void writeXMLString(QTextStream &t,const char *s) ...@@ -83,16 +83,12 @@ inline void writeXMLString(QTextStream &t,const char *s)
void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId, void writeXMLLink(QTextStream &t,const char *extRef,const char *compoundId,
const char *anchorId,const char *text) const char *anchorId,const char *text)
{ {
t << "<ref idref=\"" << compoundId; t << "<ref refid=\"" << compoundId;
if (anchorId) if (anchorId) t << "_1" << anchorId;
{ t << "\" kindref=\"";
t << "_1" << anchorId; if (anchorId) t << "member"; else t << "compound";
}
t << "\""; t << "\"";
if (extRef) if (extRef) t << " external=\"" << extRef << "\"";
{
t << " external=\"" << extRef << "\"";
}
t << ">"; t << ">";
writeXMLString(t,text); writeXMLString(t,text);
t << "</ref>"; t << "</ref>";
...@@ -613,17 +609,27 @@ class XMLGenerator : public OutputDocInterface ...@@ -613,17 +609,27 @@ class XMLGenerator : public OutputDocInterface
XML_DB(("(endSuperscript)\n")); XML_DB(("(endSuperscript)\n"));
m_t << "</superscript>"; m_t << "</superscript>";
} }
void startTable(int cols) void startTable(bool,int cols)
{ {
XML_DB(("startTable\n")); XML_DB(("startTable\n"));
startParMode(); startParMode();
m_t << "<table cols=\"" << cols << "\">\n"; m_t << "<table cols=\"" << cols << "\">\n";
} }
void endTable() void endTable(bool)
{ {
XML_DB(("endTable\n")); XML_DB(("endTable\n"));
m_t << "</row>\n</table>"; m_t << "</row>\n</table>";
} }
void startCaption()
{
XML_DB(("startCaption"));
m_t << "<caption>";
}
void endCaption()
{
XML_DB(("encCaption"));
m_t << "</caption";
}
void nextTableRow() void nextTableRow()
{ {
XML_DB(("(nextTableRow)\n")); XML_DB(("(nextTableRow)\n"));
...@@ -764,15 +770,20 @@ class XMLGenerator : public OutputDocInterface ...@@ -764,15 +770,20 @@ class XMLGenerator : public OutputDocInterface
{ {
XML_DB(("(endPageRef)\n")); XML_DB(("(endPageRef)\n"));
} }
void writeLineNumber(const char *,const char *file, // TODO: support external references void writeLineNumber(const char *extRef,const char *compId,
const char *anchor,int l) const char *anchorId,int l)
{ {
XML_DB(("(writeLineNumber)\n")); XML_DB(("(writeLineNumber)\n"));
m_t << "<linenumber"; m_t << "<linenumber";
m_t << " line=\"" << l << "\""; 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 << "/>"; m_t << "/>";
} }
...@@ -1172,7 +1183,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def) ...@@ -1172,7 +1183,7 @@ static void generateXMLForMember(MemberDef *md,QTextStream &t,Definition *def)
{ {
t << " <exceptions>"; t << " <exceptions>";
linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),md->excpString()); linkifyText(TextGeneratorXMLImpl(t),scopeName,md->name(),md->excpString());
t << "</exception>" << endl; t << "</exceptions>" << endl;
} }
if (md->memberType()==MemberDef::Enumeration) // enum if (md->memberType()==MemberDef::Enumeration) // enum
...@@ -1293,7 +1304,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t) ...@@ -1293,7 +1304,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
BaseClassDef *bcd; BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli) for (bcli.toFirst();(bcd=bcli.current());++bcli)
{ {
t << " <basecompoundref idref=\"" t << " <basecompoundref refid=\""
<< bcd->classDef->getOutputFileBase() << bcd->classDef->getOutputFileBase()
<< "\" prot=\""; << "\" prot=\"";
switch (bcd->prot) switch (bcd->prot)
...@@ -1318,7 +1329,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t) ...@@ -1318,7 +1329,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &t)
BaseClassDef *bcd; BaseClassDef *bcd;
for (bcli.toFirst();(bcd=bcli.current());++bcli) for (bcli.toFirst();(bcd=bcli.current());++bcli)
{ {
t << " <derivedcompoundref idref=\"" t << " <derivedcompoundref refid=\""
<< bcd->classDef->getOutputFileBase() << bcd->classDef->getOutputFileBase()
<< "\" prot=\""; << "\" prot=\"";
switch (bcd->prot) switch (bcd->prot)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment