Commit 1fb3a775 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.10

parent 8f7c9d9b
DOXYGEN Version 1.2.9-20010819 DOXYGEN Version 1.2.10
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (19 August 2001) Dimitri van Heesch (26 August 2001)
DOXYGEN Version 1.2.9_20010819 DOXYGEN Version 1.2.10
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) (19 August 2001) Dimitri van Heesch (dimitri@stack.nl) (26 August 2001)
1.2.9-20010819 1.2.10
...@@ -146,7 +146,7 @@ template<class T> class BaseHandler : public IBaseHandler, ...@@ -146,7 +146,7 @@ template<class T> class BaseHandler : public IBaseHandler,
(*handler)(attrib); (*handler)(attrib);
//printf("found start tag %s\n",name.data()); //printf("found start tag %s\n",name.data());
} }
else if (m_fallBackHandler && else if (!m_fallBackHandler ||
!m_fallBackHandler->handleStartElement(name,attrib) !m_fallBackHandler->handleStartElement(name,attrib)
) )
{ {
......
...@@ -14,7 +14,46 @@ ...@@ -14,7 +14,46 @@
*/ */
#include "dochandler.h" #include "dochandler.h"
#include <qmap.h>
class TypeNameMapper
{
public:
TypeNameMapper()
{
m_typeNameMap.insert("see", SimpleSectHandler::See);
m_typeNameMap.insert("return", SimpleSectHandler::Return);
m_typeNameMap.insert("author", SimpleSectHandler::Author);
m_typeNameMap.insert("version", SimpleSectHandler::Version);
m_typeNameMap.insert("since", SimpleSectHandler::Since);
m_typeNameMap.insert("date", SimpleSectHandler::Date);
m_typeNameMap.insert("bug", SimpleSectHandler::Bug);
m_typeNameMap.insert("note", SimpleSectHandler::Note);
m_typeNameMap.insert("warning", SimpleSectHandler::Warning);
m_typeNameMap.insert("par", SimpleSectHandler::Par);
m_typeNameMap.insert("deprecated",SimpleSectHandler::Deprecated);
m_typeNameMap.insert("pre", SimpleSectHandler::Pre);
m_typeNameMap.insert("post", SimpleSectHandler::Post);
m_typeNameMap.insert("invariant", SimpleSectHandler::Invar);
m_typeNameMap.insert("remark", SimpleSectHandler::Remark);
m_typeNameMap.insert("attention", SimpleSectHandler::Attention);
m_typeNameMap.insert("todo", SimpleSectHandler::Todo);
m_typeNameMap.insert("test", SimpleSectHandler::Test);
m_typeNameMap.insert("rcs", SimpleSectHandler::RCS);
m_typeNameMap.insert("enumvalues",SimpleSectHandler::EnumValues);
m_typeNameMap.insert("examples", SimpleSectHandler::Examples);
}
SimpleSectHandler::Types stringToType(const QString &typeStr)
{
return m_typeNameMap[typeStr];
}
private:
QMap<QString,SimpleSectHandler::Types> m_typeNameMap;
};
static TypeNameMapper g_typeMapper;
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// MarkupHandler // MarkupHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -333,6 +372,56 @@ void ParameterListHandler::startParameterDescription(const QXmlAttributes& attri ...@@ -333,6 +372,56 @@ void ParameterListHandler::startParameterDescription(const QXmlAttributes& attri
m_curParam->startParameterDescription(attrib); m_curParam->startParameterDescription(attrib);
} }
//----------------------------------------------------------------------
// SimpleSectHandler
//----------------------------------------------------------------------
SimpleSectHandler::SimpleSectHandler(IBaseHandler *parent)
: DocNode(Para), m_parent(parent), m_paragraph(0)
{
addStartHandler("title",this,&SimpleSectHandler::startTitle);
addEndHandler("title",this,&SimpleSectHandler::endTitle);
addStartHandler("para",this,&SimpleSectHandler::startParagraph);
}
SimpleSectHandler::~SimpleSectHandler()
{
}
void SimpleSectHandler::startSimpleSect(const QXmlAttributes& attrib)
{
m_type = g_typeMapper.stringToType(attrib.value("kind"));
addEndHandler("simplesect",this,&SimpleSectHandler::endSimpleSect);
printf("start simple section %s\n",attrib.value("kind").data());
m_parent->setDelegate(this);
}
void SimpleSectHandler::endSimpleSect()
{
printf("end simple section\n");
m_parent->setDelegate(0);
}
void SimpleSectHandler::startTitle(const QXmlAttributes& /*attrib*/)
{
m_curString="";
}
void SimpleSectHandler::endTitle()
{
printf("simpleSect title=\"%s\"\n",m_curString.data());
m_title = m_curString;
m_curString="";
}
void SimpleSectHandler::startParagraph(const QXmlAttributes& attrib)
{
ASSERT(m_paragraph==0);
m_paragraph = new ParagraphHandler(this);
m_paragraph->startParagraph(attrib);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ParagraphHandler // ParagraphHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -350,6 +439,7 @@ ParagraphHandler::ParagraphHandler(IBaseHandler *parent) ...@@ -350,6 +439,7 @@ ParagraphHandler::ParagraphHandler(IBaseHandler *parent)
addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList); addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList);
addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList); addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList);
addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList); addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList);
addStartHandler("simplesect",this,&ParagraphHandler::startSimpleSect);
} }
ParagraphHandler::~ParagraphHandler() ParagraphHandler::~ParagraphHandler()
...@@ -394,6 +484,14 @@ void ParagraphHandler::startParameterList(const QXmlAttributes& attrib) ...@@ -394,6 +484,14 @@ void ParagraphHandler::startParameterList(const QXmlAttributes& attrib)
m_children.append(parListHandler); m_children.append(parListHandler);
} }
void ParagraphHandler::startSimpleSect(const QXmlAttributes& attrib)
{
addTextNode();
SimpleSectHandler *sectHandler = new SimpleSectHandler(this);
sectHandler->startSimpleSect(attrib);
m_children.append(sectHandler);
}
void ParagraphHandler::addTextNode() void ParagraphHandler::addTextNode()
{ {
if (!m_curString.isEmpty()) if (!m_curString.isEmpty())
......
...@@ -52,7 +52,8 @@ class DocNode ...@@ -52,7 +52,8 @@ class DocNode
OrderedList, OrderedList,
ListItem, ListItem,
ParameterList, ParameterList,
Parameter Parameter,
SimpleSect
}; };
DocNode(NodeKind k) : m_kind(k) {} DocNode(NodeKind k) : m_kind(k) {}
virtual ~DocNode() {} virtual ~DocNode() {}
...@@ -225,11 +226,13 @@ class ParameterListHandler : public DocNode, ...@@ -225,11 +226,13 @@ class ParameterListHandler : public DocNode,
/* \brief Node representing a simple section with an unnumbered header. /* \brief Node representing a simple section with an unnumbered header.
* *
*/ */
// children: title, para
class SimpleSectHandler : public DocNode, class SimpleSectHandler : public DocNode,
public BaseHandler<SimpleSectHandler> public BaseHandler<SimpleSectHandler>
{ {
public: public:
enum Types { See, Return, Author, Version, enum Types { Invalid = 0,
See, Return, Author, Version,
Since, Date, Bug, Note, Since, Date, Bug, Note,
Warning, Par, Deprecated, Pre, Warning, Par, Deprecated, Pre,
Post, Invar, Remark, Attention, Post, Invar, Remark, Attention,
...@@ -240,11 +243,15 @@ class SimpleSectHandler : public DocNode, ...@@ -240,11 +243,15 @@ class SimpleSectHandler : public DocNode,
virtual ~SimpleSectHandler(); virtual ~SimpleSectHandler();
virtual void startSimpleSect(const QXmlAttributes& attrib); virtual void startSimpleSect(const QXmlAttributes& attrib);
virtual void endSimpleSect(); virtual void endSimpleSect();
virtual void startTitle(const QXmlAttributes& attrib);
virtual void endTitle();
virtual void startParagraph(const QXmlAttributes& attrib);
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
ParameterHandler *m_curParam; ParagraphHandler *m_paragraph;
Types m_type; Types m_type;
// TODO: a title can also contain links (for todo sections for instance!)
QString m_title; QString m_title;
}; };
...@@ -253,6 +260,13 @@ class SimpleSectHandler : public DocNode, ...@@ -253,6 +260,13 @@ class SimpleSectHandler : public DocNode,
/*! \brief Node representing a paragraph of text and commands. /*! \brief Node representing a paragraph of text and commands.
* *
*/ */
// children: itemizedlist, orderedlist, parameterlist, simplesect,
// programlisting, hruler, variablelist,
// linebreak, nonbreakablespace, ref, ulink, email,
// table, link, indexentry, formula, image, dotfile, ref
// children handled by MarkupHandler:
// bold, computeroutput, emphasis, center,
// small, subscript, superscript.
class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler>
{ {
public: public:
...@@ -261,6 +275,7 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> ...@@ -261,6 +275,7 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler>
virtual void startItemizedList(const QXmlAttributes& attrib); virtual void startItemizedList(const QXmlAttributes& attrib);
virtual void startOrderedList(const QXmlAttributes& attrib); virtual void startOrderedList(const QXmlAttributes& attrib);
virtual void startParameterList(const QXmlAttributes& attrib); virtual void startParameterList(const QXmlAttributes& attrib);
virtual void startSimpleSect(const QXmlAttributes& attrib);
ParagraphHandler(IBaseHandler *parent); ParagraphHandler(IBaseHandler *parent);
virtual ~ParagraphHandler(); virtual ~ParagraphHandler();
...@@ -277,6 +292,7 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> ...@@ -277,6 +292,7 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler>
/*! \brief Node representing a documentation block. /*! \brief Node representing a documentation block.
* *
*/ */
// children: para, title, sect1, sect2, sect3
class DocHandler : public BaseHandler<DocHandler> class DocHandler : public BaseHandler<DocHandler>
{ {
public: public:
...@@ -288,7 +304,7 @@ class DocHandler : public BaseHandler<DocHandler> ...@@ -288,7 +304,7 @@ class DocHandler : public BaseHandler<DocHandler>
virtual ~DocHandler(); virtual ~DocHandler();
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<ParagraphHandler> m_children; QList<DocNode> m_children;
}; };
#endif #endif
...@@ -63,10 +63,6 @@ int main(int argc,char **argv) ...@@ -63,10 +63,6 @@ int main(int argc,char **argv)
} }
QFile xmlFile(argv[1]); QFile xmlFile(argv[1]);
if (!xmlFile.open( IO_ReadOnly ))
{
qFatal("Could not read %s",argv[1] );
}
#ifdef USE_SAX #ifdef USE_SAX
MainHandler handler; MainHandler handler;
...@@ -79,6 +75,10 @@ int main(int argc,char **argv) ...@@ -79,6 +75,10 @@ int main(int argc,char **argv)
#endif #endif
#ifdef USE_DOM #ifdef USE_DOM
if (!xmlFile.open( IO_ReadOnly ))
{
qFatal("Could not read %s",argv[1] );
}
QDomDocument doc; QDomDocument doc;
doc.setContent( &xmlFile ); doc.setContent( &xmlFile );
......
...@@ -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.9-20010812), 24 languages Currently (version 1.2.9-20010819), 24 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,
......
...@@ -50,10 +50,10 @@ ...@@ -50,10 +50,10 @@
# can be updated so that the generated language.doc does not contain # can be updated so that the generated language.doc does not contain
# the link to the translator_report.txt. # the link to the translator_report.txt.
# #
# Todo: # 2001/08/20
# ----- # - StripArgIdentifiers() enhanced to be more robust in producing
# - Something changed. The environment variables like VERSION, # equal prototypes from the base class and from the derived
# DOXYGEN_DOCDIR are not set now when make is run. # classes (if they should be considered equal).
# #
################################################################ ################################################################
...@@ -174,6 +174,8 @@ sub StripArgIdentifiers ##{{{ ...@@ -174,6 +174,8 @@ sub StripArgIdentifiers ##{{{
foreach my $arg (@a) { foreach my $arg (@a) {
# Only the type of the identifier is important...
#
$arg =~ s{^(\s* # there can be spaces behind comma, $arg =~ s{^(\s* # there can be spaces behind comma,
(const\s+)? # possibly const at the beginning (const\s+)? # possibly const at the beginning
[A-Za-z0-9_:]+ # type identifier can be qualified [A-Za-z0-9_:]+ # type identifier can be qualified
...@@ -183,6 +185,20 @@ sub StripArgIdentifiers ##{{{ ...@@ -183,6 +185,20 @@ sub StripArgIdentifiers ##{{{
} }
{$1}x; # remember only the important things {$1}x; # remember only the important things
# People may differ in opinion whether a space should
# or should not be written between a type identifier and
# the '*' or '&' (when the argument is a pointer or a reference).
#
$arg =~ s{\s*([*&])}{ $1};
# Whitespaces are not only spaces. Moreover, the difference
# may be in number of them in a sequence or in the type
# of a whitespace. This is the reason to replace each sequence
# of whitespace by a single, real space.
#
$arg =~ s{\s+}{ }g;
# Remember the stripped form of the arguments
push(@stripped, $arg); push(@stripped, $arg);
} }
...@@ -683,6 +699,11 @@ print STDERR "\n\n"; ...@@ -683,6 +699,11 @@ print STDERR "\n\n";
# #
my @expected = GetPureVirtualFrom("$srcdir/translator.h"); my @expected = GetPureVirtualFrom("$srcdir/translator.h");
# The details for translators will be collected into the output
# string.
#
my $output = '';
# Remove the argument identifiers from the method prototypes # Remove the argument identifiers from the method prototypes
# to get only the required form of the prototype. Fill the # to get only the required form of the prototype. Fill the
# hash with them. #{{{ # hash with them. #{{{
...@@ -700,11 +721,6 @@ print STDERR "\n\n"; ...@@ -700,11 +721,6 @@ print STDERR "\n\n";
# #
my %cb = (); my %cb = ();
# The details for translators will be collected into the output
# string.
#
my $output = '';
# Loop through all translator files. Extract the implemented # Loop through all translator files. Extract the implemented
# virtual methods and compare it with the requirements. Prepare # virtual methods and compare it with the requirements. Prepare
# the output. # the output.
......
Name: doxygen Name: doxygen
Version: 1.2.9_20010819 Version: 1.2.10
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
......
...@@ -104,6 +104,7 @@ ClassDef::ClassDef( ...@@ -104,6 +104,7 @@ ClassDef::ClassDef(
m_templBaseClassNames = 0; m_templBaseClassNames = 0;
m_artificial = FALSE; m_artificial = FALSE;
m_isAbstract = FALSE; m_isAbstract = FALSE;
m_isStatic = FALSE;
} }
// destroy the class definition // destroy the class definition
...@@ -1073,9 +1074,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1073,9 +1074,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (exampleFlag) if (exampleFlag)
{ {
ol.startDescList(BaseOutputDocInterface::Examples); ol.startDescList(BaseOutputDocInterface::Examples);
ol.startBold();
parseText(ol,theTranslator->trExamples()+": "); parseText(ol,theTranslator->trExamples()+": ");
ol.endBold();
ol.endDescTitle(); ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
ol.newParagraph(); ol.newParagraph();
...@@ -1546,7 +1545,8 @@ bool ClassDef::isLinkableInProject() const ...@@ -1546,7 +1545,8 @@ bool ClassDef::isLinkableInProject() const
name().find('@')==-1 && /* anonymous compound */ name().find('@')==-1 && /* anonymous compound */
(m_prot!=Private || Config_getBool("EXTRACT_PRIVATE")) && /* private */ (m_prot!=Private || Config_getBool("EXTRACT_PRIVATE")) && /* private */
hasDocumentation() && /* documented */ hasDocumentation() && /* documented */
!isReference(); /* not an external reference */ !isReference() && /* not an external reference */
(!m_isStatic || Config_getBool("EXTRACT_STATIC"));
} }
} }
...@@ -1578,7 +1578,9 @@ bool ClassDef::isVisibleInHierarchy() ...@@ -1578,7 +1578,9 @@ bool ClassDef::isVisibleInHierarchy()
(hasDocumentation() || (hasDocumentation() ||
!Config_getBool("HIDE_UNDOC_CLASSES") || !Config_getBool("HIDE_UNDOC_CLASSES") ||
isReference() isReference()
); ) &&
// is not part of an unnamed namespace or shown anyway
(!m_isStatic || Config_getBool("EXTRACT_STATIC"));
} }
bool ClassDef::hasDocumentation() const bool ClassDef::hasDocumentation() const
......
...@@ -270,6 +270,7 @@ class ClassDef : public Definition ...@@ -270,6 +270,7 @@ class ClassDef : public Definition
void setTemplateMaster(ClassDef *tm) { m_templateMaster=tm; } void setTemplateMaster(ClassDef *tm) { m_templateMaster=tm; }
void addMembersToTemplateInstance(ClassDef *cd,const char *templSpec); void addMembersToTemplateInstance(ClassDef *cd,const char *templSpec);
void setClassIsArtificial() { m_artificial = TRUE; } void setClassIsArtificial() { m_artificial = TRUE; }
void setIsStatic(bool b) { m_isStatic=b; }
/*! Creates a new compound definition. /*! Creates a new compound definition.
* \param outerScope class, file or namespace in which this class is * \param outerScope class, file or namespace in which this class is
...@@ -401,6 +402,9 @@ class ClassDef : public Definition ...@@ -401,6 +402,9 @@ class ClassDef : public Definition
bool m_isAbstract; bool m_isAbstract;
QCString m_className; QCString m_className;
/*! Is the class part of an unnamed namespace? */
bool m_isStatic;
}; };
/*! \brief Class that contains information about a usage relation. /*! \brief Class that contains information about a usage relation.
......
...@@ -35,8 +35,8 @@ int ClassList::compareItems(GCI item1, GCI item2) ...@@ -35,8 +35,8 @@ int ClassList::compareItems(GCI item1, GCI item2)
{ {
ClassDef *c1=(ClassDef *)item1; ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2; ClassDef *c2=(ClassDef *)item2;
return stricmp(c1->name().data()+getPrefixIndex(c1->localName()), return stricmp(c1->localName().data()+getPrefixIndex(c1->localName()),
c2->name().data()+getPrefixIndex(c2->localName()) c2->localName().data()+getPrefixIndex(c2->localName())
); );
} }
...@@ -44,8 +44,8 @@ int ClassSDict::compareItems(GCI item1, GCI item2) ...@@ -44,8 +44,8 @@ int ClassSDict::compareItems(GCI item1, GCI item2)
{ {
ClassDef *c1=(ClassDef *)item1; ClassDef *c1=(ClassDef *)item1;
ClassDef *c2=(ClassDef *)item2; ClassDef *c2=(ClassDef *)item2;
return stricmp(c1->name().data()+getPrefixIndex(c1->localName()), return stricmp(c1->localName().data()+getPrefixIndex(c1->localName()),
c2->name().data()+getPrefixIndex(c2->localName()) c2->localName().data()+getPrefixIndex(c2->localName())
); );
} }
......
...@@ -1170,9 +1170,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1170,9 +1170,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inParBlock=TRUE; inParBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Par); outDoc->startDescList(BaseOutputDocInterface::Par);
outDoc->startBold();
outDoc->docify(title); outDoc->docify(title);
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1190,9 +1188,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1190,9 +1188,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inWarningBlock=TRUE; inWarningBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Warning); outDoc->startDescList(BaseOutputDocInterface::Warning);
outDoc->startBold();
scanString(theTranslator->trWarning()+": "); scanString(theTranslator->trWarning()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1209,9 +1205,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1209,9 +1205,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inRemarkBlock=TRUE; inRemarkBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Remark); outDoc->startDescList(BaseOutputDocInterface::Remark);
outDoc->startBold();
scanString(theTranslator->trRemarks()+": "); scanString(theTranslator->trRemarks()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1228,9 +1222,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1228,9 +1222,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inAttentionBlock=TRUE; inAttentionBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Attention); outDoc->startDescList(BaseOutputDocInterface::Attention);
outDoc->startBold();
scanString(theTranslator->trAttention()+": "); scanString(theTranslator->trAttention()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1247,9 +1239,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1247,9 +1239,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inNoteBlock=TRUE; inNoteBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Note); outDoc->startDescList(BaseOutputDocInterface::Note);
outDoc->startBold();
scanString(theTranslator->trNote()+": "); scanString(theTranslator->trNote()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1266,9 +1256,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1266,9 +1256,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inPreBlock=TRUE; inPreBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Pre); outDoc->startDescList(BaseOutputDocInterface::Pre);
outDoc->startBold();
scanString(theTranslator->trPrecondition()+": "); scanString(theTranslator->trPrecondition()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1285,9 +1273,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1285,9 +1273,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inPostBlock=TRUE; inPostBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Post); outDoc->startDescList(BaseOutputDocInterface::Post);
outDoc->startBold();
scanString(theTranslator->trPostcondition()+": "); scanString(theTranslator->trPostcondition()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1304,9 +1290,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1304,9 +1290,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inInvarBlock=TRUE; inInvarBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Invar); outDoc->startDescList(BaseOutputDocInterface::Invar);
outDoc->startBold();
scanString(theTranslator->trInvariant()+": "); scanString(theTranslator->trInvariant()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1323,9 +1307,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1323,9 +1307,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inVersionBlock=TRUE; inVersionBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Version); outDoc->startDescList(BaseOutputDocInterface::Version);
outDoc->startBold();
scanString(theTranslator->trVersion()+": "); scanString(theTranslator->trVersion()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1342,9 +1324,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1342,9 +1324,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inSinceBlock=TRUE; inSinceBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Since); outDoc->startDescList(BaseOutputDocInterface::Since);
outDoc->startBold();
scanString(theTranslator->trSince()+": "); scanString(theTranslator->trSince()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1361,9 +1341,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1361,9 +1341,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inDateBlock=TRUE; inDateBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Date); outDoc->startDescList(BaseOutputDocInterface::Date);
outDoc->startBold();
scanString(theTranslator->trDate()+": "); scanString(theTranslator->trDate()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1384,9 +1362,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1384,9 +1362,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock(); if (inBlock()) endBlock();
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Todo); outDoc->startDescList(BaseOutputDocInterface::Todo);
outDoc->startBold();
outDoc->writeObjectLink(0,"todo",item->listAnchor,theTranslator->trTodo()+": "); outDoc->writeObjectLink(0,"todo",item->listAnchor,theTranslator->trTodo()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
internalParseDocument(item->text); internalParseDocument(item->text);
...@@ -1406,9 +1382,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1406,9 +1382,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock(); if (inBlock()) endBlock();
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Test); outDoc->startDescList(BaseOutputDocInterface::Test);
outDoc->startBold();
outDoc->writeObjectLink(0,"test",item->listAnchor,theTranslator->trTest()+": "); outDoc->writeObjectLink(0,"test",item->listAnchor,theTranslator->trTest()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
internalParseDocument(item->text); internalParseDocument(item->text);
...@@ -1428,9 +1402,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1428,9 +1402,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock(); if (inBlock()) endBlock();
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Bug); outDoc->startDescList(BaseOutputDocInterface::Bug);
outDoc->startBold();
outDoc->writeObjectLink(0,"bug",item->listAnchor,theTranslator->trBug()+": "); outDoc->writeObjectLink(0,"bug",item->listAnchor,theTranslator->trBug()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
internalParseDocument(item->text); internalParseDocument(item->text);
...@@ -1446,9 +1418,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1446,9 +1418,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inDeprecatedBlock=TRUE; inDeprecatedBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Deprecated); outDoc->startDescList(BaseOutputDocInterface::Deprecated);
outDoc->startBold();
scanString(theTranslator->trDeprecated()+": "); scanString(theTranslator->trDeprecated()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1467,9 +1437,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1467,9 +1437,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (inBlock()) endBlock(); if (inBlock()) endBlock();
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::RCS); outDoc->startDescList(BaseOutputDocInterface::RCS);
outDoc->startBold();
scanString(tagName+": "); scanString(tagName+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
scanString(tagText); scanString(tagText);
...@@ -1484,10 +1452,8 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1484,10 +1452,8 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inAuthorBlock=TRUE; inAuthorBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Author); outDoc->startDescList(BaseOutputDocInterface::Author);
outDoc->startBold();
bool singular = ((QString)yytext).find('s')==-1; bool singular = ((QString)yytext).find('s')==-1;
scanString(theTranslator->trAuthor(TRUE,singular)+": "); scanString(theTranslator->trAuthor(TRUE,singular)+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1504,9 +1470,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1504,9 +1470,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inReturnBlock=TRUE; inReturnBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::Return); outDoc->startDescList(BaseOutputDocInterface::Return);
outDoc->startBold();
scanString(theTranslator->trReturns()+": "); scanString(theTranslator->trReturns()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -1519,9 +1483,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1519,9 +1483,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
inSeeBlock=TRUE; inSeeBlock=TRUE;
currentListIndent.push("D"); currentListIndent.push("D");
outDoc->startDescList(BaseOutputDocInterface::See); outDoc->startDescList(BaseOutputDocInterface::See);
outDoc->startBold();
scanString(theTranslator->trSeeAlso()+": "); scanString(theTranslator->trSeeAlso()+": ");
outDoc->endBold();
outDoc->endDescTitle(); outDoc->endDescTitle();
outDoc->writeDescItem(); outDoc->writeDescItem();
} }
...@@ -2420,6 +2382,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2420,6 +2382,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
addListItemMarker(yytext,dashPos+1,isEnumerated); addListItemMarker(yytext,dashPos+1,isEnumerated);
} }
<DocScan>({B}*"\n"){2,}{B}* { // new paragraph <DocScan>({B}*"\n"){2,}{B}* { // new paragraph
bool ib = inBlock();
if (insideArgumentList) if (insideArgumentList)
{ {
insideArgumentList=FALSE; insideArgumentList=FALSE;
...@@ -2435,12 +2398,12 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2435,12 +2398,12 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
{ {
outDoc->docify(yytext); outDoc->docify(yytext);
} }
else else if (!ib)
{ {
outDoc->newParagraph(); outDoc->newParagraph();
} }
} }
if (inBlock()) endBlock(); if (ib) endBlock();
} }
<DocScan>{BN}+/\n { <DocScan>{BN}+/\n {
outDoc->writeChar(' '); outDoc->writeChar(' ');
......
...@@ -888,6 +888,7 @@ static void buildClassList(Entry *root) ...@@ -888,6 +888,7 @@ static void buildClassList(Entry *root)
cd->setTemplateArguments(tArgList); cd->setTemplateArguments(tArgList);
cd->setProtection(root->protection); cd->setProtection(root->protection);
cd->addSectionsToDefinition(root->anchors); cd->addSectionsToDefinition(root->anchors);
cd->setIsStatic(root->stat);
// file definition containing the class cd // file definition containing the class cd
cd->setBodySegment(root->bodyLine,root->endBodyLine); cd->setBodySegment(root->bodyLine,root->endBodyLine);
...@@ -2677,14 +2678,20 @@ static bool findTemplateInstanceRelation(Entry *root, ...@@ -2677,14 +2678,20 @@ static bool findTemplateInstanceRelation(Entry *root,
// search for new template instances caused by base classes of // search for new template instances caused by base classes of
// instanceClass // instanceClass
Entry *templateRoot = classEntries.find(templateClass->name()); Entry *templateRoot = classEntries.find(templateClass->name());
if (templateRoot)
{
ArgumentList *templArgs = new ArgumentList;
stringToArgumentList(templSpec,templArgs);
findBaseClassesForClass(templateRoot,templateClass,instanceClass,
TemplateInstances,isArtificial,templArgs,templateNames);
ArgumentList *templArgs = new ArgumentList; findUsedClassesForClass(templateRoot,templateClass,instanceClass,
stringToArgumentList(templSpec,templArgs); isArtificial,templArgs,templateNames);
findBaseClassesForClass(templateRoot,templateClass,instanceClass, }
TemplateInstances,isArtificial,templArgs,templateNames); else
{
findUsedClassesForClass(templateRoot,templateClass,instanceClass, // TODO: what happened if we get here?
isArtificial,templArgs,templateNames); }
//Debug::print(Debug::Classes,0," Template instance %s : \n",instanceClass->name().data()); //Debug::print(Debug::Classes,0," Template instance %s : \n",instanceClass->name().data());
//ArgumentList *tl = templateClass->templateArguments(); //ArgumentList *tl = templateClass->templateArguments();
...@@ -7132,7 +7139,7 @@ void parseInput() ...@@ -7132,7 +7139,7 @@ void parseInput()
msg("Adding source references...\n"); msg("Adding source references...\n");
addSourceReferences(); addSourceReferences();
msg("Adding todo/test/bug list item...\n"); msg("Adding todo/test/bug list items...\n");
addTodoTestBugReferences(); addTodoTestBugReferences();
} }
......
...@@ -49,7 +49,8 @@ static const char *defaultStyleSheet = ...@@ -49,7 +49,8 @@ static const char *defaultStyleSheet =
"DIV.fragment { width: 100%; border: none; background-color: #eeeeee }\n" "DIV.fragment { width: 100%; border: none; background-color: #eeeeee }\n"
"DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n" "DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }\n"
"TD.md { background-color: #f2f2ff; font-weight: bold; }\n" "TD.md { background-color: #f2f2ff; font-weight: bold; }\n"
"TD.mdname { background-color: #f2f2ff; font-weight: bold; font-style: italic }\n" "TD.mdname1 { background-color: #f2f2ff; font-weight: bold; font-style: italic; }\n"
"TD.mdname { background-color: #f2f2ff; font-weight: bold; font-style: italic; width: 600px; }\n"
"DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }\n" "DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }\n"
"DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }\n" "DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }\n"
"FONT.keyword { color: #008000 }\n" "FONT.keyword { color: #008000 }\n"
...@@ -911,7 +912,7 @@ void HtmlGenerator::startMemberDocPrefixItem() ...@@ -911,7 +912,7 @@ void HtmlGenerator::startMemberDocPrefixItem()
void HtmlGenerator::endMemberDocPrefixItem() void HtmlGenerator::endMemberDocPrefixItem()
{ {
DBG_HTML(t << "<!-- endMemberDocPrefixItem -->" << endl;) DBG_HTML(t << "<!-- endMemberDocPrefixItem -->" << endl;)
t << " </td>" << endl; t << "</td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
} }
...@@ -919,14 +920,13 @@ void HtmlGenerator::startMemberDocName() ...@@ -919,14 +920,13 @@ void HtmlGenerator::startMemberDocName()
{ {
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;) DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td class=\"md\" nowrap valign=\"top\"> " << endl; t << " <td class=\"md\" nowrap valign=\"top\"> ";
} }
void HtmlGenerator::endMemberDocName() void HtmlGenerator::endMemberDocName()
{ {
DBG_HTML(t << "<!-- endMemberDocName -->" << endl;) DBG_HTML(t << "<!-- endMemberDocName -->" << endl;)
t << endl; t << "</td>" << endl;
t << " </td>" << endl;
} }
void HtmlGenerator::startParameterList() void HtmlGenerator::startParameterList()
...@@ -955,13 +955,15 @@ void HtmlGenerator::startParameterType(bool first) ...@@ -955,13 +955,15 @@ void HtmlGenerator::startParameterType(bool first)
void HtmlGenerator::endParameterType() void HtmlGenerator::endParameterType()
{ {
DBG_HTML(t << "<!-- endParameterType -->" << endl;) DBG_HTML(t << "<!-- endParameterType -->" << endl;)
t << " </td>" << endl; t << "</td>" << endl;
} }
void HtmlGenerator::startParameterName() void HtmlGenerator::startParameterName(bool oneArgOnly)
{ {
DBG_HTML(t << "<!-- startParameterName -->" << endl;) DBG_HTML(t << "<!-- startParameterName -->" << endl;)
t << " <td class=\"mdname\">"; t << " <td class=\"mdname";
if (oneArgOnly) t << "1";
t << "\">&nbsp;";
} }
void HtmlGenerator::endParameterName(bool last,bool emptyList) void HtmlGenerator::endParameterName(bool last,bool emptyList)
...@@ -977,7 +979,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList) ...@@ -977,7 +979,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList)
} }
else else
{ {
t << " </td>" << endl; t << "</td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
t << " <tr>" << endl; t << " <tr>" << endl;
t << " <td></td>" << endl; t << " <td></td>" << endl;
...@@ -987,7 +989,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList) ...@@ -987,7 +989,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList)
} }
else else
{ {
t << " </td>" << endl; t << "</td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
} }
} }
...@@ -995,7 +997,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList) ...@@ -995,7 +997,7 @@ void HtmlGenerator::endParameterName(bool last,bool emptyList)
void HtmlGenerator::endParameterList() void HtmlGenerator::endParameterList()
{ {
DBG_HTML(t << "<!-- endParameterList -->" << endl;) DBG_HTML(t << "<!-- endParameterList -->" << endl;)
t << " </td>" << endl; t << "</td>" << endl;
t << " </tr>" << endl; t << " </tr>" << endl;
} }
......
...@@ -236,7 +236,7 @@ class HtmlGenerator : public OutputGenerator ...@@ -236,7 +236,7 @@ class HtmlGenerator : public OutputGenerator
void endMemberDocName(); void endMemberDocName();
void startParameterType(bool first); void startParameterType(bool first);
void endParameterType(); void endParameterType();
void startParameterName(); void startParameterName(bool);
void endParameterName(bool last,bool emptyList); void endParameterName(bool last,bool emptyList);
void startParameterList(); void startParameterList();
void endParameterList(); void endParameterList();
......
...@@ -1285,6 +1285,7 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -1285,6 +1285,7 @@ void writeAlphabeticalClassList(OutputList &ol)
{ {
QCString cname; QCString cname;
QCString namesp; QCString namesp;
if (cd->getNamespaceDef()) namesp=cd->getNamespaceDef()->name();
if (Config_getBool("HIDE_SCOPE_NAMES")) if (Config_getBool("HIDE_SCOPE_NAMES"))
{ {
cname=cd->displayName(); cname=cd->displayName();
......
...@@ -243,7 +243,7 @@ class LatexGenerator : public OutputGenerator ...@@ -243,7 +243,7 @@ class LatexGenerator : public OutputGenerator
void endMemberDocName() {} void endMemberDocName() {}
void startParameterType(bool) {} void startParameterType(bool) {}
void endParameterType() {} void endParameterType() {}
void startParameterName() {} void startParameterName(bool) {}
void endParameterName(bool,bool) {} void endParameterName(bool,bool) {}
void startParameterList() {} void startParameterList() {}
void endParameterList() {} void endParameterList() {}
......
...@@ -316,6 +316,7 @@ void ManGenerator::startDescList(SectionTypes) ...@@ -316,6 +316,7 @@ void ManGenerator::startDescList(SectionTypes)
col=0; col=0;
} }
paragraph=FALSE; paragraph=FALSE;
startBold();
} }
void ManGenerator::startParamList(ParamListTypes) void ManGenerator::startParamList(ParamListTypes)
...@@ -458,6 +459,7 @@ void ManGenerator::startDescItem() ...@@ -458,6 +459,7 @@ void ManGenerator::startDescItem()
void ManGenerator::endDescTitle() void ManGenerator::endDescTitle()
{ {
endBold();
paragraph=TRUE; paragraph=TRUE;
} }
......
...@@ -224,7 +224,7 @@ class ManGenerator : public OutputGenerator ...@@ -224,7 +224,7 @@ class ManGenerator : public OutputGenerator
void endMemberDocName() {} void endMemberDocName() {}
void startParameterType(bool) {} void startParameterType(bool) {}
void endParameterType() {} void endParameterType() {}
void startParameterName() {} void startParameterName(bool) {}
void endParameterName(bool,bool) {} void endParameterName(bool,bool) {}
void startParameterList() {} void startParameterList() {}
void endParameterList() {} void endParameterList() {}
......
...@@ -119,7 +119,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -119,7 +119,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
bool first=TRUE; bool first=TRUE;
while (a) while (a)
{ {
if (!md->isDefine() || first) ol.startParameterType(first); if (md->isDefine() || first) ol.startParameterType(first);
QRegExp re(")("); QRegExp re(")(");
int vp; int vp;
if (!a->attrib.isEmpty()) // argument has an IDL attribute if (!a->attrib.isEmpty()) // argument has an IDL attribute
...@@ -141,7 +141,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -141,7 +141,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (!md->isDefine()) if (!md->isDefine())
{ {
ol.endParameterType(); ol.endParameterType();
ol.startParameterName(); ol.startParameterName(argList->count()<2);
} }
if (!a->name.isEmpty()) // argument has a name if (!a->name.isEmpty()) // argument has a name
{ {
...@@ -191,13 +191,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -191,13 +191,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
if (!md->isDefine()) if (!md->isDefine())
{ {
if (first) ol.startParameterName(); if (first) ol.startParameterName(argList->count()<2);
ol.endParameterName(TRUE,argList->count()<2); ol.endParameterName(TRUE,argList->count()<2);
} }
else else
{ {
ol.endParameterType(); ol.endParameterType();
ol.startParameterName(); ol.startParameterName(TRUE);
ol.endParameterName(TRUE,TRUE); ol.endParameterName(TRUE,TRUE);
} }
ol.popGeneratorState(); ol.popGeneratorState();
...@@ -260,7 +260,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -260,7 +260,7 @@ MemberDef::MemberDef(const char *df,int dl,
const ArgumentList *tal,const ArgumentList *al const ArgumentList *tal,const ArgumentList *al
) : Definition(df,dl,na) ) : Definition(df,dl,na)
{ {
//printf("++++++ MemberDef(%s file=%s,line=%d) ++++++ \n",na,df,dl); //printf("++++++ MemberDef(%s file=%s,line=%d static=%d) ++++++ \n",na,df,dl,s);
classDef=0; classDef=0;
fileDef=0; fileDef=0;
redefines=0; redefines=0;
...@@ -884,10 +884,8 @@ bool MemberDef::isDetailedSectionLinkable() const ...@@ -884,10 +884,8 @@ bool MemberDef::isDetailedSectionLinkable() const
(mtype==EnumValue && !briefDescription().isEmpty()) || (mtype==EnumValue && !briefDescription().isEmpty()) ||
// has brief description that is part of the detailed description // has brief description that is part of the detailed description
(!briefDescription().isEmpty() && (!briefDescription().isEmpty() &&
(!Config_getBool("BRIEF_MEMBER_DESC") || Config_getBool("ALWAYS_DETAILED_SEC") &&
Config_getBool("ALWAYS_DETAILED_SEC")) && Config_getBool("REPEAT_BRIEF")
Config_getBool("REPEAT_BRIEF"
)
) || ) ||
// has a multi-line initialization block // has a multi-line initialization block
//(initLines>0 && initLines<maxInitLines) || //(initLines>0 && initLines<maxInitLines) ||
...@@ -1247,10 +1245,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1247,10 +1245,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
{ {
//ol.newParagraph(); //ol.newParagraph();
ol.startDescList(BaseOutputDocInterface::EnumValues); ol.startDescList(BaseOutputDocInterface::EnumValues);
ol.startBold();
parseText(ol,theTranslator->trEnumerationValues()); parseText(ol,theTranslator->trEnumerationValues());
ol.docify(":"); ol.docify(":");
ol.endBold();
ol.endDescTitle(); ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
//ol.startItemList(); //ol.startItemList();
...@@ -1444,10 +1440,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -1444,10 +1440,8 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (hasExamples()) if (hasExamples())
{ {
ol.startDescList(BaseOutputDocInterface::Examples); ol.startDescList(BaseOutputDocInterface::Examples);
ol.startBold();
parseText(ol,theTranslator->trExamples()+": "); parseText(ol,theTranslator->trExamples()+": ");
//ol.writeBoldString("Examples: "); //ol.writeBoldString("Examples: ");
ol.endBold();
ol.endDescTitle(); ol.endDescTitle();
ol.writeDescItem(); ol.writeDescItem();
writeExample(ol,getExamples()); writeExample(ol,getExamples());
......
...@@ -369,7 +369,7 @@ class OutputGenerator : public BaseOutputDocInterface ...@@ -369,7 +369,7 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void endMemberDocName() = 0; virtual void endMemberDocName() = 0;
virtual void startParameterType(bool) = 0; virtual void startParameterType(bool) = 0;
virtual void endParameterType() = 0; virtual void endParameterType() = 0;
virtual void startParameterName() = 0; virtual void startParameterName(bool) = 0;
virtual void endParameterName(bool,bool) = 0; virtual void endParameterName(bool,bool) = 0;
virtual void startParameterList() = 0; virtual void startParameterList() = 0;
virtual void endParameterList() = 0; virtual void endParameterList() = 0;
......
...@@ -407,10 +407,10 @@ class OutputList : public OutputDocInterface ...@@ -407,10 +407,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startParameterType,first); } { forall(&OutputGenerator::startParameterType,first); }
void endParameterType() void endParameterType()
{ forall(&OutputGenerator::endParameterType); } { forall(&OutputGenerator::endParameterType); }
void startParameterName() void startParameterName(bool one)
{ forall(&OutputGenerator::startParameterName); } { forall(&OutputGenerator::startParameterName,one); }
void endParameterName(bool last,bool emptyList) void endParameterName(bool last,bool one)
{ forall(&OutputGenerator::endParameterName,last,emptyList); } { forall(&OutputGenerator::endParameterName,last,one); }
void startParameterList() void startParameterList()
{ forall(&OutputGenerator::startParameterList); } { forall(&OutputGenerator::startParameterList); }
void endParameterList() void endParameterList()
......
...@@ -1931,11 +1931,13 @@ void RTFGenerator::startDescList(SectionTypes) ...@@ -1931,11 +1931,13 @@ void RTFGenerator::startDescList(SectionTypes)
DBG_RTF(t << "{\\comment (startDescList)}" << endl) DBG_RTF(t << "{\\comment (startDescList)}" << endl)
t << "{"; t << "{";
newParagraph(); newParagraph();
startBold();
} }
void RTFGenerator::endDescTitle() void RTFGenerator::endDescTitle()
{ {
DBG_RTF(t << "{\\comment (endDescTitle) }" << endl) DBG_RTF(t << "{\\comment (endDescTitle) }" << endl)
endBold();
newParagraph(); newParagraph();
//t << Rtf_Style_Reset << styleStack.top(); //t << Rtf_Style_Reset << styleStack.top();
incrementIndentLevel(); incrementIndentLevel();
......
...@@ -227,7 +227,7 @@ class RTFGenerator : public OutputGenerator ...@@ -227,7 +227,7 @@ class RTFGenerator : public OutputGenerator
void endMemberDocName() {} void endMemberDocName() {}
void startParameterType(bool) {} void startParameterType(bool) {}
void endParameterType() {} void endParameterType() {}
void startParameterName() {} void startParameterName(bool) {}
void endParameterName(bool,bool) {} void endParameterName(bool,bool) {}
void startParameterList() {} void startParameterList() {}
void endParameterList() {} void endParameterList() {}
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
//#include <iostream.h>
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
...@@ -147,10 +146,12 @@ static Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST ); ...@@ -147,10 +146,12 @@ static Grouping lastDefGroup( "", Grouping::GROUPING_LOWEST );
static bool insideFormula; static bool insideFormula;
static bool insideTryBlock=FALSE; static bool insideTryBlock=FALSE;
static bool needsSemi;
static int depthIf; static int depthIf;
static int initializerSharpCount; static int initializerSharpCount;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static void initParser() static void initParser()
...@@ -600,6 +601,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -600,6 +601,7 @@ TITLE [tT][iI][tT][lL][eE]
<*>\x0d <*>\x0d
<NextSemi>"{" { <NextSemi>"{" {
curlyCount=0; curlyCount=0;
needsSemi = TRUE;
BEGIN(SkipCurlyBlock); BEGIN(SkipCurlyBlock);
} }
<NextSemi>"(" { <NextSemi>"(" {
...@@ -623,8 +625,14 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -623,8 +625,14 @@ TITLE [tT][iI][tT][lL][eE]
{ {
--curlyCount ; --curlyCount ;
} }
else else if (needsSemi)
{
BEGIN( NextSemi ); BEGIN( NextSemi );
}
else
{
BEGIN( FindMembers );
}
} }
<NextSemi>"'"\\[0-7]{1,3}"'" <NextSemi>"'"\\[0-7]{1,3}"'"
<NextSemi>"'"\\."'" <NextSemi>"'"\\."'"
...@@ -848,7 +856,8 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -848,7 +856,8 @@ TITLE [tT][iI][tT][lL][eE]
lineCount() ; lineCount() ;
BEGIN( CompoundName ) ; BEGIN( CompoundName ) ;
} }
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"{BN}+ { <FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct"/{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1; isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::STRUCT_SEC ; current->section = Entry::STRUCT_SEC ;
addType( current ) ; addType( current ) ;
...@@ -868,6 +877,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -868,6 +877,7 @@ TITLE [tT][iI][tT][lL][eE]
lineCount() ; lineCount() ;
BEGIN( CompoundName ) ; BEGIN( CompoundName ) ;
} }
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union"{BN}+ { <FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1; isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::UNION_SEC ; current->section = Entry::UNION_SEC ;
...@@ -879,6 +889,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -879,6 +889,7 @@ TITLE [tT][iI][tT][lL][eE]
lineCount() ; lineCount() ;
BEGIN( CompoundName ) ; BEGIN( CompoundName ) ;
} }
<FindMembers>{B}*(("typedef"{BN}+)?)"enum{" |
<FindMembers>{B}*(("typedef"{BN}+)?)"enum"{BN}+ { <FindMembers>{B}*(("typedef"{BN}+)?)"enum"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1; isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::ENUM_SEC ; current->section = Entry::ENUM_SEC ;
...@@ -2152,23 +2163,16 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2152,23 +2163,16 @@ TITLE [tT][iI][tT][lL][eE]
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();
QCString &cn=current->name; //QCString &cn=current->name;
QCString &rn=current_root->name; //QCString &rn=current_root->name;
//printf("current_root->name=`%s'\n",rn.data()); //int i;
//printf("Function: `%s' `%s' `%s'\n",current->type.data(),cn.data(),current->args.data()); //if ((i=cn.findRev("::"))!=-1) // name contains scope
int i; //{
if ((i=cn.findRev("::"))!=-1) // name contains scope // if (cn.left(i)==rn.right(i)) // scope name is redundant
{ // {
if (cn.left(i)==rn.right(i)) // scope name is redundant // cn=cn.right(cn.length()-i-2); // strip scope
{ // //printf("new name=`%s'\n",cn.data());
cn=cn.right(cn.length()-i-2); // strip scope // }
//printf("new name=`%s'\n",cn.data());
}
}
//if (cname.left(current_root->name.length()+2)==current_root->name+"::")
//{ // strip redundant scope
// current->name=current->name.right(current->name.length()-current_root->name.length()-2);
// printf("new name=`%s'\n",current->name.data());
//} //}
current->fileName = yyFileName; current->fileName = yyFileName;
current->startLine = yyLineNr; current->startLine = yyLineNr;
...@@ -2211,8 +2215,7 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2211,8 +2215,7 @@ TITLE [tT][iI][tT][lL][eE]
current->proto = TRUE; current->proto = TRUE;
} }
} }
//printf("Adding entry `%s' inLine`%d' bodyLine=`%d'\n", //printf("Adding entry `%s'\n",current->name.data());
// current->name.data(),current->inLine,current->bodyLine);
previous = current; previous = current;
current_root->addSubEntry(current); current_root->addSubEntry(current);
current = new Entry ; current = new Entry ;
...@@ -2470,7 +2473,9 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2470,7 +2473,9 @@ TITLE [tT][iI][tT][lL][eE]
current->startLine = yyLineNr ; current->startLine = yyLineNr ;
current->name = removeRedundantWhiteSpace(current->name); current->name = removeRedundantWhiteSpace(current->name);
if (current->name.isEmpty() && !isTypedef) // anonymous compound if (current->name.isEmpty() && !isTypedef) // anonymous compound
{
current->name.sprintf("@%d",anonCount++); current->name.sprintf("@%d",anonCount++);
}
curlyCount=0; curlyCount=0;
BEGIN( ReadBody ) ; BEGIN( ReadBody ) ;
} }
...@@ -2652,9 +2657,18 @@ TITLE [tT][iI][tT][lL][eE] ...@@ -2652,9 +2657,18 @@ TITLE [tT][iI][tT][lL][eE]
lineCount(); lineCount();
} }
<FindMembers>"{" { <FindMembers>"{" {
current->type.resize(0); if (insideJava && current->stat && current->name.isEmpty() && current->type.isEmpty())
current->name.resize(0); {
current->args.resize(0); // static Java initializer
needsSemi = FALSE;
}
else
{
needsSemi = TRUE;
}
current->type.resize(0);
current->name.resize(0);
current->args.resize(0);
current->argList->clear(); current->argList->clear();
curlyCount=0; curlyCount=0;
BEGIN( SkipCurlyBlock ); BEGIN( SkipCurlyBlock );
...@@ -4024,18 +4038,32 @@ static void parseCompounds(Entry *rt) ...@@ -4024,18 +4038,32 @@ static void parseCompounds(Entry *rt)
//printf("---> Inner block starts at line %d\n",yyLineNr); //printf("---> Inner block starts at line %d\n",yyLineNr);
//current->reset(); //current->reset();
current = new Entry; current = new Entry;
gstat = FALSE;
int ni=ce->name.findRev("::"); if (ni==-1) ni=0; else ni+=2;
// set default protection based on the compound type // set default protection based on the compound type
if( ce->section==Entry::CLASS_SEC ) // class if( ce->section==Entry::CLASS_SEC ) // class
{
current->protection = protection = Private ; current->protection = protection = Private ;
}
else if (ce->section == Entry::ENUM_SEC ) // enum else if (ce->section == Entry::ENUM_SEC ) // enum
{
current->protection = protection = ce->protection; current->protection = protection = ce->protection;
else if (!ce->name.isEmpty() && ce->name.at(0)=='@') // anonymous union }
else if (!ce->name.isEmpty() && ce->name.at(ni)=='@') // unnamed union or namespace
{
if (ce->section == Entry::NAMESPACE_SEC ) // unnamed namespace
{
current->stat = gstat = TRUE;
}
current->protection = protection = ce->protection; current->protection = protection = ce->protection;
}
else // named struct, union, or interface else // named struct, union, or interface
{
current->protection = protection = Public ; current->protection = protection = Public ;
}
mtype = Method; mtype = Method;
gstat = FALSE;
virt = Normal; virt = Normal;
//printf("name=%s current->stat=%d gstat=%d\n",ce->name.data(),current->stat,gstat);
memberGroupId = NOGROUP; memberGroupId = NOGROUP;
......
...@@ -243,9 +243,11 @@ QCString replaceAnonymousScopes(const QCString &s) ...@@ -243,9 +243,11 @@ QCString replaceAnonymousScopes(const QCString &s)
// strip annonymous left hand side part of the scope // strip annonymous left hand side part of the scope
QCString stripAnonymousNamespaceScope(const QCString &s) QCString stripAnonymousNamespaceScope(const QCString &s)
{ {
#if 0
int oi=0,i=0,p=0; int oi=0,i=0,p=0;
if (s.isEmpty()) return s; p=s.find('@');
while (s.at(p)=='@' && (i=s.find("::",p))!=-1 && if (p==-1) return s;
while (s.at(p)=='@' && (i=s.find("::@",p))!=-1 &&
Doxygen::namespaceDict[s.left(i)]!=0) { oi=i; p=i+2; } Doxygen::namespaceDict[s.left(i)]!=0) { oi=i; p=i+2; }
if (oi==0) if (oi==0)
{ {
...@@ -257,6 +259,32 @@ QCString stripAnonymousNamespaceScope(const QCString &s) ...@@ -257,6 +259,32 @@ QCString stripAnonymousNamespaceScope(const QCString &s)
//printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data()); //printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),s.right(s.length()-oi-2).data());
return s.right(s.length()-oi-2); return s.right(s.length()-oi-2);
} }
#endif
int i,p=0,l;
QCString newScope;
while ((i=getScopeFragment(s,p,&l))!=-1)
{
//printf("Scope fragment %s\n",s.mid(i,l).data());
if (Doxygen::namespaceDict[s.left(i+l)]!=0)
{
if (s.at(i)!='@')
{
if (!newScope.isEmpty()) newScope+="::";
newScope+=s.mid(i,l);
}
}
else
{
if (!newScope.isEmpty()) newScope+="::";
newScope+=s.right(s.length()-i);
goto done;
}
p=i+l;
}
done:
//printf("stripAnonymousNamespaceScope(`%s')=`%s'\n",s.data(),newScope.data());
return newScope;
} }
void writePageRef(OutputDocInterface &od,const char *cn,const char *mn) void writePageRef(OutputDocInterface &od,const char *cn,const char *mn)
...@@ -1134,7 +1162,7 @@ void trimBaseClassScope(BaseClassList *bcl,QCString &s,int level=0) ...@@ -1134,7 +1162,7 @@ void trimBaseClassScope(BaseClassList *bcl,QCString &s,int level=0)
* scope. If neither or both have a namespace scope, t1 and t2 remain * scope. If neither or both have a namespace scope, t1 and t2 remain
* unchanged. * unchanged.
*/ */
static void trimNamespaceScope(QCString &t1,QCString &t2) static void trimNamespaceScope(QCString &t1,QCString &t2,const QCString &nsName)
{ {
int p1=t1.length(); int p1=t1.length();
int p2=t2.length(); int p2=t2.length();
...@@ -1149,20 +1177,54 @@ static void trimNamespaceScope(QCString &t1,QCString &t2) ...@@ -1149,20 +1177,54 @@ static void trimNamespaceScope(QCString &t1,QCString &t2)
if (i1!=-1 && i2==-1) // only t1 has a scope if (i1!=-1 && i2==-1) // only t1 has a scope
{ {
QCString scope=t1.left(i1); QCString scope=t1.left(i1);
if (!scope.isEmpty() && Doxygen::namespaceDict[scope]!=0) // scope is a namespace
int so=nsName.length();
do
{ {
t1 = t1.right(t1.length()-i1-2); QCString fullScope=nsName.left(so);
return; if (!fullScope.isEmpty() && !scope.isEmpty()) fullScope+="::";
fullScope+=scope;
if (!fullScope.isEmpty() && Doxygen::namespaceDict[fullScope]!=0) // scope is a namespace
{
t1 = t1.right(t1.length()-i1-2);
return;
}
if (so==0)
{
so=-1;
}
else if ((so=nsName.findRev("::",so-1))==-1)
{
so=0;
}
} }
while (so>=0);
} }
else if (i1==-1 && i2!=-1) // only t2 has a scope else if (i1==-1 && i2!=-1) // only t2 has a scope
{ {
QCString scope=t2.left(i2); QCString scope=t2.left(i2);
if (!scope.isEmpty() && Doxygen::namespaceDict[scope]!=0) // scope is a namespace
int so=nsName.length();
do
{ {
t2 = t2.right(t2.length()-i2-2); QCString fullScope=nsName.left(so);
return; if (!fullScope.isEmpty() && !scope.isEmpty()) fullScope+="::";
fullScope+=scope;
if (!fullScope.isEmpty() && Doxygen::namespaceDict[fullScope]!=0) // scope is a namespace
{
t2 = t2.right(t2.length()-i2-2);
return;
}
if (so==0)
{
so=-1;
}
else if ((so=nsName.findRev("::",so-1))==-1)
{
so=0;
}
} }
while (so>=0);
} }
p1 = QMAX(i1-2,0); p1 = QMAX(i1-2,0);
p2 = QMAX(i2-2,0); p2 = QMAX(i2-2,0);
...@@ -1297,7 +1359,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA, ...@@ -1297,7 +1359,7 @@ static bool matchArgument(const Argument *srcA,const Argument *dstA,
// remove a namespace scope that is only in one type // remove a namespace scope that is only in one type
// (assuming a using statement was used) // (assuming a using statement was used)
trimNamespaceScope(srcAType,dstAType); trimNamespaceScope(srcAType,dstAType,namespaceName);
//QCString srcScope; //QCString srcScope;
//QCString dstScope; //QCString dstScope;
...@@ -1521,7 +1583,7 @@ static void mergeArgument(Argument *srcA,Argument *dstA, ...@@ -1521,7 +1583,7 @@ static void mergeArgument(Argument *srcA,Argument *dstA,
// remove a namespace scope that is only in one type // remove a namespace scope that is only in one type
// (assuming a using statement was used) // (assuming a using statement was used)
trimNamespaceScope(srcAType,dstAType); trimNamespaceScope(srcAType,dstAType,namespaceName);
//QCString srcScope; //QCString srcScope;
......
...@@ -68,20 +68,16 @@ static inline void writeXMLString(QTextStream &t,const char *s) ...@@ -68,20 +68,16 @@ static inline void writeXMLString(QTextStream &t,const char *s)
} }
static void writeXMLLink(QTextStream &t,const char *compoundId, static void writeXMLLink(QTextStream &t,const char *compoundId,
const char *memId,const char *text) const char *anchorId,const char *text)
{ {
if (memId==0) t << "<ref idref=\"" << compoundId << "\"";
if (anchorId)
{ {
t << "<compoundref idref=\"" << compoundId << "\">"; t << " anchor=\"" << anchorId << "\"";
writeXMLString(t,text);
t << "</compoundref>";
}
else
{
t << "<memberref idref=\"" << compoundId << "_1" << memId << "\">";
writeXMLString(t,text);
t << "</memberref>";
} }
t << ">";
writeXMLString(t,text);
t << "</ref>";
} }
class TextGeneratorXMLImpl : public TextGeneratorIntf class TextGeneratorXMLImpl : public TextGeneratorIntf
...@@ -218,11 +214,13 @@ class XMLGenerator : public OutputDocInterface ...@@ -218,11 +214,13 @@ class XMLGenerator : public OutputDocInterface
} }
void startItemList() void startItemList()
{ {
startParMode();
m_t << "<itemizedlist>" << endl;; m_t << "<itemizedlist>" << endl;;
m_inListStack.push(TRUE); m_inListStack.push(TRUE);
} }
void startEnumList() void startEnumList()
{ {
startParMode();
m_t << "<orderedlist>"; m_t << "<orderedlist>";
m_inListStack.push(TRUE); m_inListStack.push(TRUE);
} }
...@@ -295,7 +293,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -295,7 +293,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startCodeFragment() void startCodeFragment()
{ {
endParMode(); startParMode();
m_t << "<programlisting>"; m_t << "<programlisting>";
} }
void endCodeFragment() void endCodeFragment()
...@@ -304,7 +302,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -304,7 +302,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startPreFragment() void startPreFragment()
{ {
endParMode(); startParMode();
m_t << "<programlisting>"; m_t << "<programlisting>";
} }
void endPreFragment() void endPreFragment()
...@@ -313,11 +311,12 @@ class XMLGenerator : public OutputDocInterface ...@@ -313,11 +311,12 @@ class XMLGenerator : public OutputDocInterface
} }
void writeRuler() void writeRuler()
{ {
endParMode(); startParMode();
m_t << "<hruler/>"; m_t << "<hruler/>";
} }
void startDescription() void startDescription()
{ {
startParMode();
m_t << "<variablelist>"; m_t << "<variablelist>";
m_inListStack.push(TRUE); m_inListStack.push(TRUE);
} }
...@@ -351,6 +350,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -351,6 +350,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startDescList(SectionTypes st) void startDescList(SectionTypes st)
{ {
startParMode();
m_t << "<simplesect kind=\"" << sectionTypeToString(st); m_t << "<simplesect kind=\"" << sectionTypeToString(st);
m_t << "\"><title>"; m_t << "\"><title>";
} }
...@@ -361,6 +361,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -361,6 +361,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startParamList(ParamListTypes t) void startParamList(ParamListTypes t)
{ {
startParMode();
QCString kind; QCString kind;
switch(t) switch(t)
{ {
...@@ -380,7 +381,6 @@ class XMLGenerator : public OutputDocInterface ...@@ -380,7 +381,6 @@ class XMLGenerator : public OutputDocInterface
{ {
m_t << "</title>"; m_t << "</title>";
if (!m_inParamList) startNestedPar(); if (!m_inParamList) startNestedPar();
printf("endDescTitle %d\n",m_inParamList);
} }
void writeDescItem() { } void writeDescItem() { }
void startDescTable() { } void startDescTable() { }
...@@ -405,11 +405,12 @@ class XMLGenerator : public OutputDocInterface ...@@ -405,11 +405,12 @@ class XMLGenerator : public OutputDocInterface
} }
void lineBreak() void lineBreak()
{ {
startParMode();
m_t << "<linebreak/>"; // non docbook m_t << "<linebreak/>"; // non docbook
} }
void writeNonBreakableSpace(int num) void writeNonBreakableSpace(int num)
{ {
int i;for (i=0;i<num;i++) m_t << "<nonbreakablespace/>"; // non docbook int i;for (i=0;i<num;i++) m_t << "&nbsp;";
} }
//// TODO: translate these as well.... //// TODO: translate these as well....
...@@ -440,6 +441,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -440,6 +441,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startHtmlLink(const char *url) void startHtmlLink(const char *url)
{ {
startParMode();
m_t << "<ulink url=\"" << url << "\">"; m_t << "<ulink url=\"" << url << "\">";
} }
void endHtmlLink() void endHtmlLink()
...@@ -448,6 +450,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -448,6 +450,7 @@ class XMLGenerator : public OutputDocInterface
} }
void writeMailLink(const char *url) void writeMailLink(const char *url)
{ {
startParMode();
m_t << "<email>"; m_t << "<email>";
docify(url); docify(url);
m_t << "</email>"; m_t << "</email>";
...@@ -478,6 +481,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -478,6 +481,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startCenter() void startCenter()
{ {
startParMode();
m_t << "<center>"; // non docbook m_t << "<center>"; // non docbook
} }
void endCenter() void endCenter()
...@@ -486,6 +490,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -486,6 +490,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startSmall() void startSmall()
{ {
startParMode();
m_t << "<small>"; // non docbook m_t << "<small>"; // non docbook
} }
void endSmall() void endSmall()
...@@ -494,6 +499,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -494,6 +499,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startSubscript() void startSubscript()
{ {
startParMode();
m_t << "<subscript>"; m_t << "<subscript>";
} }
void endSubscript() void endSubscript()
...@@ -502,6 +508,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -502,6 +508,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startSuperscript() void startSuperscript()
{ {
startParMode();
m_t << "<superscript>"; m_t << "<superscript>";
} }
void endSuperscript() void endSuperscript()
...@@ -510,6 +517,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -510,6 +517,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startTable(int cols) void startTable(int cols)
{ {
startParMode();
m_t << "<table><tgroup cols=\"" << cols << "\"><tbody>\n"; m_t << "<table><tgroup cols=\"" << cols << "\"><tbody>\n";
} }
void endTable() void endTable()
...@@ -554,11 +562,13 @@ class XMLGenerator : public OutputDocInterface ...@@ -554,11 +562,13 @@ class XMLGenerator : public OutputDocInterface
} }
void writeAnchor(const char *id,const char *name) void writeAnchor(const char *id,const char *name)
{ {
startParMode();
m_t << "<anchor id=\"" << id << "_" << name << "\"/>"; m_t << "<anchor id=\"" << id << "_" << name << "\"/>";
} }
void writeSectionRef(const char *,const char *id, void writeSectionRef(const char *,const char *id,
const char *name,const char *text) const char *name,const char *text)
{ {
startParMode();
m_t << "<link linkend=\"" << id << "_" << name << "\">"; m_t << "<link linkend=\"" << id << "_" << name << "\">";
docify(text); docify(text);
m_t << "</link>"; m_t << "</link>";
...@@ -569,6 +579,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -569,6 +579,7 @@ class XMLGenerator : public OutputDocInterface
} }
void addIndexItem(const char *primaryie,const char *secondaryie) void addIndexItem(const char *primaryie,const char *secondaryie)
{ {
startParMode();
m_t << "<indexentry><primaryie>"; m_t << "<indexentry><primaryie>";
docify(primaryie); docify(primaryie);
m_t << "</primaryie><secondaryie>"; m_t << "</primaryie><secondaryie>";
...@@ -577,12 +588,14 @@ class XMLGenerator : public OutputDocInterface ...@@ -577,12 +588,14 @@ class XMLGenerator : public OutputDocInterface
} }
void writeFormula(const char *id,const char *text) void writeFormula(const char *id,const char *text)
{ {
startParMode();
m_t << "<formula id=\"" << id << "\">"; // non Docbook m_t << "<formula id=\"" << id << "\">"; // non Docbook
docify(text); docify(text);
m_t << "</formula>"; m_t << "</formula>";
} }
void startImage(const char *name,const char *size,bool caption) void startImage(const char *name,const char *size,bool caption)
{ {
startParMode();
m_t << "<image name=\"" << name << "\" size=\"" << size m_t << "<image name=\"" << name << "\" size=\"" << size
<< "\" caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook << "\" caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook
} }
...@@ -592,6 +605,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -592,6 +605,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startDotFile(const char *name,bool caption) void startDotFile(const char *name,bool caption)
{ {
startParMode();
m_t << "<dotfile name=\"" << name << "\" " m_t << "<dotfile name=\"" << name << "\" "
<< "caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook << "caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook
} }
...@@ -601,6 +615,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -601,6 +615,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startTextLink(const char *name,const char *anchor) void startTextLink(const char *name,const char *anchor)
{ {
startParMode();
m_t << "<ulink url=\"" << name << "#" << anchor << "\">"; m_t << "<ulink url=\"" << name << "#" << anchor << "\">";
} }
void endTextLink() void endTextLink()
...@@ -615,6 +630,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -615,6 +630,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startCodeLine() void startCodeLine()
{ {
startParMode();
m_t << "<linenumber>"; // non DocBook m_t << "<linenumber>"; // non DocBook
} }
void endCodeLine() void endCodeLine()
...@@ -623,6 +639,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -623,6 +639,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startCodeAnchor(const char *id) void startCodeAnchor(const char *id)
{ {
startParMode();
m_t << "<anchor id=\"" << id << "\">"; m_t << "<anchor id=\"" << id << "\">";
} }
void endCodeAnchor() void endCodeAnchor()
...@@ -631,7 +648,7 @@ class XMLGenerator : public OutputDocInterface ...@@ -631,7 +648,7 @@ class XMLGenerator : public OutputDocInterface
} }
void startFontClass(const char *colorClass) void startFontClass(const char *colorClass)
{ {
m_t << "<highlight class=\"" << colorClass << "\""; // non DocBook m_t << "<highlight class=\"" << colorClass << "\">"; // non DocBook
} }
void endFontClass() void endFontClass()
{ {
......
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