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);
} }
......
This diff is collapsed.
...@@ -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:
......
This diff is collapsed.
...@@ -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