Commit 613b33d7 authored by dimitri's avatar dimitri

Release-1.2.11-20011111

parent a29cfb7d
DOXYGEN Version 1.2.11-20011104 DOXYGEN Version 1.2.11-20011111
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (04 November 2001) Dimitri van Heesch (11 November 2001)
DOXYGEN Version 1.2.11_20011104 DOXYGEN Version 1.2.11_20011111
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) (04 November 2001) Dimitri van Heesch (dimitri@stack.nl) (11 November 2001)
1.2.11-20011104 1.2.11-20011111
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include "dochandler.h" #include "dochandler.h"
CompoundHandler::CompoundHandler(IBaseHandler *parent) CompoundHandler::CompoundHandler(IBaseHandler *parent)
: m_parent(parent), m_brief(0), m_detailed(0) : m_parent(parent), m_brief(0), m_detailed(0), m_programListing(0)
{ {
m_superClasses.setAutoDelete(TRUE); m_superClasses.setAutoDelete(TRUE);
m_subClasses.setAutoDelete(TRUE); m_subClasses.setAutoDelete(TRUE);
...@@ -43,12 +43,15 @@ CompoundHandler::CompoundHandler(IBaseHandler *parent) ...@@ -43,12 +43,15 @@ CompoundHandler::CompoundHandler(IBaseHandler *parent)
addStartHandler("location",this,&CompoundHandler::startLocation); addStartHandler("location",this,&CompoundHandler::startLocation);
addEndHandler("location"); addEndHandler("location");
addStartHandler("programlisting",this,&CompoundHandler::startProgramListing);
} }
CompoundHandler::~CompoundHandler() CompoundHandler::~CompoundHandler()
{ {
delete m_brief; delete m_brief;
delete m_detailed; delete m_detailed;
delete m_programListing;
} }
void CompoundHandler::startSection(const QXmlAttributes& attrib) void CompoundHandler::startSection(const QXmlAttributes& attrib)
...@@ -72,6 +75,13 @@ void CompoundHandler::startDetailedDesc(const QXmlAttributes& attrib) ...@@ -72,6 +75,13 @@ void CompoundHandler::startDetailedDesc(const QXmlAttributes& attrib)
m_detailed = docHandler; m_detailed = docHandler;
} }
void CompoundHandler::startProgramListing(const QXmlAttributes& attrib)
{
ProgramListingHandler *plHandler = new ProgramListingHandler(this);
plHandler->startProgramListing(attrib);
m_programListing = plHandler;
}
void CompoundHandler::startCompound(const QXmlAttributes& attrib) void CompoundHandler::startCompound(const QXmlAttributes& attrib)
{ {
m_parent->setDelegate(this); m_parent->setDelegate(this);
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "doxmlintf.h" #include "doxmlintf.h"
class DocHandler; class DocHandler;
class ProgramListingHandler;
class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
{ {
...@@ -37,6 +38,7 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> ...@@ -37,6 +38,7 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
virtual void startBriefDesc(const QXmlAttributes& attrib); virtual void startBriefDesc(const QXmlAttributes& attrib);
virtual void startDetailedDesc(const QXmlAttributes& attrib); virtual void startDetailedDesc(const QXmlAttributes& attrib);
virtual void startLocation(const QXmlAttributes& attrib); virtual void startLocation(const QXmlAttributes& attrib);
virtual void startProgramListing(const QXmlAttributes& attrib);
CompoundHandler(IBaseHandler *parent); CompoundHandler(IBaseHandler *parent);
virtual ~CompoundHandler(); virtual ~CompoundHandler();
...@@ -72,6 +74,7 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> ...@@ -72,6 +74,7 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
IBaseHandler *m_parent; IBaseHandler *m_parent;
DocHandler *m_brief; DocHandler *m_brief;
DocHandler *m_detailed; DocHandler *m_detailed;
ProgramListingHandler *m_programListing;
QString m_id; QString m_id;
QString m_kind; QString m_kind;
QString m_name; QString m_name;
......
...@@ -540,7 +540,7 @@ void RefHandler::endRef() ...@@ -540,7 +540,7 @@ void RefHandler::endRef()
{ {
m_linkText = m_curString; m_linkText = m_curString;
m_parent->setDelegate(0); m_parent->setDelegate(0);
printf("End ref\n"); printf("End ref: text=`%s'\n",m_linkText.data());
} }
...@@ -744,6 +744,83 @@ void VariableListHandler::startListItem(const QXmlAttributes& attrib) ...@@ -744,6 +744,83 @@ void VariableListHandler::startListItem(const QXmlAttributes& attrib)
m_curEntry->startListItem(attrib); m_curEntry->startListItem(attrib);
} }
//----------------------------------------------------------------------
// AnchorHandler
//----------------------------------------------------------------------
AnchorHandler::AnchorHandler(IBaseHandler *parent)
: DocNode(Anchor), m_parent(parent)
{
m_children.setAutoDelete(TRUE);
addEndHandler("anchor",this,&AnchorHandler::endAnchor);
addStartHandler("ref",this,&AnchorHandler::startRef);
}
AnchorHandler::~AnchorHandler()
{
}
void AnchorHandler::startAnchor(const QXmlAttributes& attrib)
{
m_id = attrib.value("id");
m_curString="";
m_parent->setDelegate(this);
}
void AnchorHandler::endAnchor()
{
addTextNode();
printf("anchor id=`%s'\n",m_id.data());
m_parent->setDelegate(0);
}
void AnchorHandler::startRef(const QXmlAttributes& attrib)
{
addTextNode();
RefHandler *rh = new RefHandler(this);
m_children.append(rh);
rh->startRef(attrib);
}
void AnchorHandler::addTextNode()
{
if (!m_curString.isEmpty())
{
m_children.append(new TextNode(m_curString,DocNode::Normal));
printf("addTextNode() text=\"%s\"\n",
m_curString.data());
m_curString="";
}
}
//----------------------------------------------------------------------
// HighlightHandler
//----------------------------------------------------------------------
HighlightHandler::HighlightHandler(IBaseHandler *parent)
: DocNode(Highlight), m_parent(parent)
{
addEndHandler("highlight",this,&HighlightHandler::endHighlight);
}
HighlightHandler::~HighlightHandler()
{
}
void HighlightHandler::startHighlight(const QXmlAttributes& attrib)
{
m_class = attrib.value("class");
m_curString="";
m_parent->setDelegate(this);
}
void HighlightHandler::endHighlight()
{
m_text = m_curString;
printf("highlight class=`%s' text=`%s'\n",m_class.data(),m_text.data());
m_parent->setDelegate(0);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// CodeLineHandler // CodeLineHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -754,6 +831,9 @@ CodeLineHandler::CodeLineHandler(IBaseHandler *parent) ...@@ -754,6 +831,9 @@ CodeLineHandler::CodeLineHandler(IBaseHandler *parent)
m_children.setAutoDelete(TRUE); m_children.setAutoDelete(TRUE);
addEndHandler("codeline",this,&CodeLineHandler::endCodeLine); addEndHandler("codeline",this,&CodeLineHandler::endCodeLine);
addEndHandler("linenumber",this,&CodeLineHandler::endLineNumber); addEndHandler("linenumber",this,&CodeLineHandler::endLineNumber);
addStartHandler("highlight",this,&CodeLineHandler::startHighlight);
addStartHandler("ref",this,&CodeLineHandler::startRef);
addStartHandler("anchor",this,&CodeLineHandler::startAnchor);
} }
CodeLineHandler::~CodeLineHandler() CodeLineHandler::~CodeLineHandler()
...@@ -768,6 +848,7 @@ void CodeLineHandler::startCodeLine(const QXmlAttributes& /*attrib*/) ...@@ -768,6 +848,7 @@ void CodeLineHandler::startCodeLine(const QXmlAttributes& /*attrib*/)
void CodeLineHandler::endCodeLine() void CodeLineHandler::endCodeLine()
{ {
addTextNode();
printf("end codeline\n"); printf("end codeline\n");
m_parent->setDelegate(0); m_parent->setDelegate(0);
} }
...@@ -780,10 +861,46 @@ void CodeLineHandler::startLineNumber(const QXmlAttributes& /*attrib*/) ...@@ -780,10 +861,46 @@ void CodeLineHandler::startLineNumber(const QXmlAttributes& /*attrib*/)
void CodeLineHandler::endLineNumber() void CodeLineHandler::endLineNumber()
{ {
addTextNode();
printf("end linenumber\n"); printf("end linenumber\n");
m_parent->setDelegate(0); m_parent->setDelegate(0);
} }
void CodeLineHandler::startHighlight(const QXmlAttributes& attrib)
{
addTextNode();
HighlightHandler *hlh = new HighlightHandler(this);
m_children.append(hlh);
hlh->startHighlight(attrib);
}
void CodeLineHandler::startAnchor(const QXmlAttributes& attrib)
{
addTextNode();
AnchorHandler *ah = new AnchorHandler(this);
m_children.append(ah);
ah->startAnchor(attrib);
}
void CodeLineHandler::startRef(const QXmlAttributes& attrib)
{
addTextNode();
RefHandler *rh = new RefHandler(this);
m_children.append(rh);
rh->startRef(attrib);
}
void CodeLineHandler::addTextNode()
{
if (!m_curString.isEmpty())
{
m_children.append(new TextNode(m_curString,DocNode::Normal));
printf("addTextNode() text=\"%s\"\n",
m_curString.data());
m_curString="";
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ProgramListingHandler // ProgramListingHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -840,6 +957,142 @@ void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib) ...@@ -840,6 +957,142 @@ void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib)
m_hasLineNumber=FALSE; m_hasLineNumber=FALSE;
} }
//----------------------------------------------------------------------
// FormulaHandler
//----------------------------------------------------------------------
FormulaHandler::FormulaHandler(IBaseHandler *parent)
: DocNode(Formula), m_parent(parent)
{
addEndHandler("formula",this,&FormulaHandler::endFormula);
}
FormulaHandler::~FormulaHandler()
{
}
void FormulaHandler::startFormula(const QXmlAttributes& attrib)
{
m_id = attrib.value("id");
m_curString="";
m_parent->setDelegate(this);
}
void FormulaHandler::endFormula()
{
m_text = m_curString;
printf("formula id=`%s' text=`%s'\n",m_id.data(),m_text.data());
m_parent->setDelegate(0);
}
//----------------------------------------------------------------------
// ImageHandler
//----------------------------------------------------------------------
ImageHandler::ImageHandler(IBaseHandler *parent)
: DocNode(Image), m_parent(parent)
{
addEndHandler("image",this,&ImageHandler::endImage);
}
ImageHandler::~ImageHandler()
{
}
void ImageHandler::startImage(const QXmlAttributes& attrib)
{
m_name = attrib.value("name");
m_curString="";
m_parent->setDelegate(this);
}
void ImageHandler::endImage()
{
m_caption = m_curString;
printf("image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data());
m_parent->setDelegate(0);
}
//----------------------------------------------------------------------
// DotFileHandler
//----------------------------------------------------------------------
DotFileHandler::DotFileHandler(IBaseHandler *parent)
: DocNode(DotFile), m_parent(parent)
{
addEndHandler("image",this,&DotFileHandler::endDotFile);
}
DotFileHandler::~DotFileHandler()
{
}
void DotFileHandler::startDotFile(const QXmlAttributes& attrib)
{
m_name = attrib.value("name");
m_curString="";
m_parent->setDelegate(this);
}
void DotFileHandler::endDotFile()
{
m_caption = m_curString;
printf("image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data());
m_parent->setDelegate(0);
}
//----------------------------------------------------------------------
// IndexEntryHandler
//----------------------------------------------------------------------
IndexEntryHandler::IndexEntryHandler(IBaseHandler *parent)
: DocNode(IndexEntry), m_parent(parent)
{
addEndHandler("indexentry",this,&IndexEntryHandler::endIndexEntry);
addStartHandler("primaryie",this,&IndexEntryHandler::startPrimaryIE);
addEndHandler("primaryie",this,&IndexEntryHandler::endPrimaryIE);
addStartHandler("secondaryie",this,&IndexEntryHandler::startSecondaryIE);
addEndHandler("secondaryie",this,&IndexEntryHandler::endSecondaryIE);
}
IndexEntryHandler::~IndexEntryHandler()
{
}
void IndexEntryHandler::startIndexEntry(const QXmlAttributes& /*attrib*/)
{
printf("start index entry\n");
m_parent->setDelegate(this);
}
void IndexEntryHandler::endIndexEntry()
{
printf("index entry primary=`%s' secondary=`%s'\n",
m_primary.data(),m_secondary.data());
m_parent->setDelegate(0);
}
void IndexEntryHandler::startPrimaryIE(const QXmlAttributes& /*attrib*/)
{
m_curString="";
}
void IndexEntryHandler::endPrimaryIE()
{
m_primary = m_curString;
}
void IndexEntryHandler::startSecondaryIE(const QXmlAttributes& /*attrib*/)
{
m_curString="";
}
void IndexEntryHandler::endSecondaryIE()
{
m_secondary = m_curString;
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ParagraphHandler // ParagraphHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -866,6 +1119,10 @@ ParagraphHandler::ParagraphHandler(IBaseHandler *parent) ...@@ -866,6 +1119,10 @@ ParagraphHandler::ParagraphHandler(IBaseHandler *parent)
addStartHandler("email",this,&ParagraphHandler::startEMail); addStartHandler("email",this,&ParagraphHandler::startEMail);
addStartHandler("link",this,&ParagraphHandler::startLink); addStartHandler("link",this,&ParagraphHandler::startLink);
addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing); addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing);
addStartHandler("formula",this,&ParagraphHandler::startFormula);
addStartHandler("image",this,&ParagraphHandler::startImage);
addStartHandler("dotfile",this,&ParagraphHandler::startDotFile);
addStartHandler("indexentry",this,&ParagraphHandler::startIndexEntry);
} }
ParagraphHandler::~ParagraphHandler() ParagraphHandler::~ParagraphHandler()
...@@ -974,6 +1231,34 @@ void ParagraphHandler::startProgramListing(const QXmlAttributes& attrib) ...@@ -974,6 +1231,34 @@ void ParagraphHandler::startProgramListing(const QXmlAttributes& attrib)
m_children.append(pl); m_children.append(pl);
} }
void ParagraphHandler::startFormula(const QXmlAttributes& attrib)
{
FormulaHandler *fh = new FormulaHandler(this);
fh->startFormula(attrib);
m_children.append(fh);
}
void ParagraphHandler::startImage(const QXmlAttributes& attrib)
{
ImageHandler *ih = new ImageHandler(this);
ih->startImage(attrib);
m_children.append(ih);
}
void ParagraphHandler::startDotFile(const QXmlAttributes& attrib)
{
DotFileHandler *df = new DotFileHandler(this);
df->startDotFile(attrib);
m_children.append(df);
}
void ParagraphHandler::startIndexEntry(const QXmlAttributes& attrib)
{
IndexEntryHandler *df = new IndexEntryHandler(this);
df->startIndexEntry(attrib);
m_children.append(df);
}
void ParagraphHandler::addTextNode() void ParagraphHandler::addTextNode()
{ {
if (!m_curString.isEmpty()) if (!m_curString.isEmpty())
......
...@@ -64,7 +64,13 @@ class DocNode ...@@ -64,7 +64,13 @@ class DocNode
EMail, EMail,
Link, Link,
ProgramListing, ProgramListing,
CodeLine CodeLine,
Highlight,
Anchor,
Formula,
Image,
DotFile,
IndexEntry
}; };
DocNode(NodeKind k) : m_kind(k) {} DocNode(NodeKind k) : m_kind(k) {}
virtual ~DocNode() {} virtual ~DocNode() {}
...@@ -343,9 +349,9 @@ class RefHandler : public DocNode, public BaseHandler<RefHandler> ...@@ -343,9 +349,9 @@ class RefHandler : public DocNode, public BaseHandler<RefHandler>
void endRef(); void endRef();
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QCString m_refId; QString m_refId;
QCString m_anchor; QString m_anchor;
QCString m_linkText; QString m_linkText;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -451,6 +457,52 @@ class VariableListHandler : public DocNode, public BaseHandler<VariableListHandl ...@@ -451,6 +457,52 @@ class VariableListHandler : public DocNode, public BaseHandler<VariableListHandl
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing a text anchor
*
*/
// children: ref
class AnchorHandler : public DocNode, public BaseHandler<AnchorHandler>
{
public:
AnchorHandler(IBaseHandler *parent);
virtual ~AnchorHandler();
void startAnchor(const QXmlAttributes& attrib);
void endAnchor();
void startRef(const QXmlAttributes& attrib);
private:
void addTextNode();
IBaseHandler *m_parent;
QList<DocNode> m_children;
QString m_id;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing a highlighted text fragment.
*
*/
// children: -
class HighlightHandler : public DocNode, public BaseHandler<HighlightHandler>
{
public:
HighlightHandler(IBaseHandler *parent);
virtual ~HighlightHandler();
void startHighlight(const QXmlAttributes& attrib);
void endHighlight();
private:
IBaseHandler *m_parent;
QString m_class;
QString m_text;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing a line of code.
*
*/
// children: linenumber, highlight, anchor, ref
class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler> class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler>
{ {
public: public:
...@@ -459,10 +511,16 @@ class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler> ...@@ -459,10 +511,16 @@ class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler>
virtual void endCodeLine(); virtual void endCodeLine();
virtual void startLineNumber(const QXmlAttributes&); virtual void startLineNumber(const QXmlAttributes&);
virtual void endLineNumber(); virtual void endLineNumber();
virtual void startHighlight(const QXmlAttributes&);
virtual void startAnchor(const QXmlAttributes&);
virtual void startRef(const QXmlAttributes&);
CodeLineHandler(IBaseHandler *parent); CodeLineHandler(IBaseHandler *parent);
virtual ~CodeLineHandler(); virtual ~CodeLineHandler();
private: private:
void addTextNode();
IBaseHandler *m_parent; IBaseHandler *m_parent;
int m_lineNumber; int m_lineNumber;
QString m_anchor; QString m_anchor;
...@@ -475,6 +533,7 @@ class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler> ...@@ -475,6 +533,7 @@ class CodeLineHandler : public DocNode, public BaseHandler<CodeLineHandler>
/*! \brief Node representing a program listing /*! \brief Node representing a program listing
* *
*/ */
// children: codeline, linenumber
class ProgramListingHandler : public DocNode, public BaseHandler<ProgramListingHandler> class ProgramListingHandler : public DocNode, public BaseHandler<ProgramListingHandler>
{ {
public: public:
...@@ -486,25 +545,109 @@ class ProgramListingHandler : public DocNode, public BaseHandler<ProgramListingH ...@@ -486,25 +545,109 @@ class ProgramListingHandler : public DocNode, public BaseHandler<ProgramListingH
ProgramListingHandler(IBaseHandler *parent); ProgramListingHandler(IBaseHandler *parent);
virtual ~ProgramListingHandler(); virtual ~ProgramListingHandler();
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<CodeLineHandler> m_children; QList<CodeLineHandler> m_children;
bool m_hasLineNumber; bool m_hasLineNumber;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing a formula.
*
*/
// children: -
class FormulaHandler : public DocNode, public BaseHandler<FormulaHandler>
{
public:
FormulaHandler(IBaseHandler *parent);
virtual ~FormulaHandler();
void startFormula(const QXmlAttributes& attrib);
void endFormula();
private:
IBaseHandler *m_parent;
QString m_id;
QString m_text;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing an image.
*
*/
// children: -
class ImageHandler : public DocNode, public BaseHandler<ImageHandler>
{
public:
ImageHandler(IBaseHandler *parent);
virtual ~ImageHandler();
void startImage(const QXmlAttributes& attrib);
void endImage();
private:
IBaseHandler *m_parent;
QString m_name;
QString m_caption;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing a dot file.
*
*/
// children: -
class DotFileHandler : public DocNode, public BaseHandler<DotFileHandler>
{
public:
DotFileHandler(IBaseHandler *parent);
virtual ~DotFileHandler();
void startDotFile(const QXmlAttributes& attrib);
void endDotFile();
private:
IBaseHandler *m_parent;
QString m_name;
QString m_caption;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing an entry in the index.
*
*/
// children: -
class IndexEntryHandler : public DocNode, public BaseHandler<IndexEntryHandler>
{
public:
IndexEntryHandler(IBaseHandler *parent);
virtual ~IndexEntryHandler();
void startIndexEntry(const QXmlAttributes& attrib);
void endIndexEntry();
void startPrimaryIE(const QXmlAttributes& attrib);
void endPrimaryIE();
void startSecondaryIE(const QXmlAttributes& attrib);
void endSecondaryIE();
private:
IBaseHandler *m_parent;
QString m_primary;
QString m_secondary;
};
//-----------------------------------------------------------------------------
/*! \brief Node representing a paragraph of text and commands. /*! \brief Node representing a paragraph of text and commands.
* *
*/ */
// children: itemizedlist, orderedlist, parameterlist, simplesect, ref, // children: itemizedlist, orderedlist, parameterlist, simplesect, ref,
// variablelist, hruler, linebreak, ulink, email, link // variablelist, hruler, linebreak, ulink, email, link
// TODO: // programlisting, formula, image, dotfile, indexentry
// programlisting, //
// table,
// indexentry, formula, image, dotfile
// children handled by MarkupHandler: // children handled by MarkupHandler:
// bold, computeroutput, emphasis, center, // bold, computeroutput, emphasis, center,
// small, subscript, superscript. // small, subscript, superscript.
// TODO:
// table
class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler>
{ {
public: public:
...@@ -522,6 +665,10 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> ...@@ -522,6 +665,10 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler>
virtual void startEMail(const QXmlAttributes& attrib); virtual void startEMail(const QXmlAttributes& attrib);
virtual void startLink(const QXmlAttributes& attrib); virtual void startLink(const QXmlAttributes& attrib);
virtual void startProgramListing(const QXmlAttributes& attrib); virtual void startProgramListing(const QXmlAttributes& attrib);
virtual void startFormula(const QXmlAttributes& attrib);
virtual void startImage(const QXmlAttributes& attrib);
virtual void startDotFile(const QXmlAttributes& attrib);
virtual void startIndexEntry(const QXmlAttributes& attrib);
ParagraphHandler(IBaseHandler *parent); ParagraphHandler(IBaseHandler *parent);
virtual ~ParagraphHandler(); virtual ~ParagraphHandler();
...@@ -538,7 +685,8 @@ class ParagraphHandler : public DocNode, public BaseHandler<ParagraphHandler> ...@@ -538,7 +685,8 @@ 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 // children: para
// TODO: title, sect1, sect2, sect3
class DocHandler : public BaseHandler<DocHandler> class DocHandler : public BaseHandler<DocHandler>
{ {
public: public:
...@@ -548,6 +696,7 @@ class DocHandler : public BaseHandler<DocHandler> ...@@ -548,6 +696,7 @@ class DocHandler : public BaseHandler<DocHandler>
DocHandler(IBaseHandler *parent); DocHandler(IBaseHandler *parent);
virtual ~DocHandler(); virtual ~DocHandler();
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<DocNode> m_children; QList<DocNode> m_children;
......
Name: doxygen Name: doxygen
Version: 1.2.11_20011104 Version: 1.2.11_20011111
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
......
...@@ -163,6 +163,14 @@ void VariableContext::addVariable(const QCString &type,const QCString &name) ...@@ -163,6 +163,14 @@ void VariableContext::addVariable(const QCString &type,const QCString &name)
{ {
QCString ltype = type.simplifyWhiteSpace(); QCString ltype = type.simplifyWhiteSpace();
QCString lname = name.simplifyWhiteSpace(); QCString lname = name.simplifyWhiteSpace();
if (ltype.left(7)=="struct ")
{
ltype = ltype.right(ltype.length()-7);
}
else if (ltype.left(6)=="union ")
{
ltype = ltype.right(ltype.length()-6);
}
if (ltype.isEmpty() || lname.isEmpty()) return; if (ltype.isEmpty() || lname.isEmpty()) return;
DBG_CTX((stderr,"** AddVariable trying: type=%s name=%s\n",ltype.data(),lname.data())); DBG_CTX((stderr,"** AddVariable trying: type=%s name=%s\n",ltype.data(),lname.data()));
Scope *scope = m_scopes.count()==0 ? &m_globalScope : m_scopes.getLast(); Scope *scope = m_scopes.count()==0 ? &m_globalScope : m_scopes.getLast();
...@@ -338,7 +346,7 @@ static void startCodeLine() ...@@ -338,7 +346,7 @@ static void startCodeLine()
g_realScope = d->name().copy(); g_realScope = d->name().copy();
//printf("Real scope: `%s'\n",g_realScope.data()); //printf("Real scope: `%s'\n",g_realScope.data());
g_bodyCurlyCount = 0; g_bodyCurlyCount = 0;
if (g_currentMemberDef) anchor=g_currentMemberDef->anchor(); if (g_currentMemberDef) anchor=g_currentMemberDef->getBodyAnchor();
g_code->startCodeAnchor(lineAnchor); g_code->startCodeAnchor(lineAnchor);
g_code->writeCodeLink(d->getReference(),d->getOutputFileBase(), g_code->writeCodeLink(d->getReference(),d->getOutputFileBase(),
anchor,lineNumber); anchor,lineNumber);
...@@ -562,15 +570,25 @@ static MemberDef *setCallContextForVar(const QCString &name) ...@@ -562,15 +570,25 @@ static MemberDef *setCallContextForVar(const QCString &name)
static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *clNameLen=0) static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *clNameLen=0)
{ {
int i=0; int i=0;
if (*clName=='~') // correct for matching negated values i.s.o. destructors.
{
g_code->codify("~");
clName++;
}
QCString className=clName; QCString className=clName;
if (clNameLen) *clNameLen=0; if (clNameLen) *clNameLen=0;
if (className.isEmpty()) return; if (className.isEmpty()) return;
ClassDef *cd=getResolvedClass(g_currentDefinition,className); ClassDef *cd=0;
if (cd==0 && (i=className.find('<'))!=-1)
if (!g_theVarContext.findVariable(className)) // not a local variable
{ {
cd=getResolvedClass(g_currentDefinition,className.left(i)); cd = getResolvedClass(g_currentDefinition,className);
if (cd==0 && (i=className.find('<'))!=-1)
{
cd=getResolvedClass(g_currentDefinition,className.left(i));
}
} }
if (cd && cd->isLinkable()) if (cd && cd->isLinkable()) // is it a linkable class
{ {
if (g_exampleBlock) if (g_exampleBlock)
{ {
...@@ -598,17 +616,18 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c ...@@ -598,17 +616,18 @@ static void generateClassOrGlobalLink(OutputDocInterface &ol,char *clName,int *c
MemberDef *md = setCallContextForVar(clName); MemberDef *md = setCallContextForVar(clName);
if (md) if (md)
{ {
Definition *d=md->getOuterScope(); Definition *d = md->getOuterScope()==Doxygen::globalScope ?
if (d && md->isLinkable()) md->getBodyDef() : md->getOuterScope();
if (d && d->isLinkable() && md->isLinkable())
{ {
writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->anchor(),clName); writeMultiLineCodeLink(ol,d->getReference(),d->getOutputFileBase(),md->getBodyAnchor(),clName);
if (g_currentMemberDef) if (g_currentMemberDef)
{ {
if (Config_getBool("REFERENCED_BY_RELATION")) if (Config_getBool("REFERENCED_BY_RELATION") && g_currentMemberDef->isFunction())
{ {
md->addSourceReferencedBy(g_currentMemberDef); md->addSourceReferencedBy(g_currentMemberDef);
} }
if (Config_getBool("REFERENCES_RELATION")) if (Config_getBool("REFERENCES_RELATION") && g_currentMemberDef->isFunction())
{ {
g_currentMemberDef->addSourceReferences(md); g_currentMemberDef->addSourceReferences(md);
} }
...@@ -666,11 +685,11 @@ static bool getLink(const char *className, ...@@ -666,11 +685,11 @@ static bool getLink(const char *className,
if (g_currentDefinition && g_currentMemberDef && if (g_currentDefinition && g_currentMemberDef &&
md!=g_currentMemberDef && g_insideBody) md!=g_currentMemberDef && g_insideBody)
{ {
if (Config_getBool("REFERENCED_BY_RELATION")) if (Config_getBool("REFERENCED_BY_RELATION") && g_currentMemberDef->isFunction())
{ {
md->addSourceReferencedBy(g_currentMemberDef); md->addSourceReferencedBy(g_currentMemberDef);
} }
if (Config_getBool("REFERENCES_RELATION")) if (Config_getBool("REFERENCES_RELATION") && g_currentMemberDef->isFunction())
{ {
g_currentMemberDef->addSourceReferences(md); g_currentMemberDef->addSourceReferences(md);
} }
...@@ -678,7 +697,7 @@ static bool getLink(const char *className, ...@@ -678,7 +697,7 @@ static bool getLink(const char *className,
//printf("d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getOutputFileBase().data(),d->name().data(),md->name().data()); //printf("d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getOutputFileBase().data(),d->name().data(),md->name().data());
writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(), writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(),
md->anchor(),text ? text : memberName); md->getBodyAnchor(),text ? text : memberName);
return TRUE; return TRUE;
} }
} }
...@@ -702,7 +721,8 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c ...@@ -702,7 +721,8 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
g_theCallContext.setClass(stripClassName(xmd->typeString())); g_theCallContext.setClass(stripClassName(xmd->typeString()));
Definition *xd = xmd->getOuterScope(); Definition *xd = xmd->getOuterScope()==Doxygen::globalScope ?
xmd->getBodyDef() : xmd->getOuterScope();
if (xd) if (xd)
{ {
...@@ -710,11 +730,11 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c ...@@ -710,11 +730,11 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
if (g_currentDefinition && g_currentMemberDef && if (g_currentDefinition && g_currentMemberDef &&
xmd!=g_currentMemberDef && g_insideBody) xmd!=g_currentMemberDef && g_insideBody)
{ {
if (Config_getBool("REFERENCED_BY_RELATION")) if (Config_getBool("REFERENCED_BY_RELATION") && g_currentMemberDef->isFunction())
{ {
xmd->addSourceReferencedBy(g_currentMemberDef); xmd->addSourceReferencedBy(g_currentMemberDef);
} }
if (Config_getBool("REFERENCES_RELATION")) if (Config_getBool("REFERENCES_RELATION") && g_currentMemberDef->isFunction())
{ {
g_currentMemberDef->addSourceReferences(xmd); g_currentMemberDef->addSourceReferences(xmd);
} }
...@@ -722,7 +742,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c ...@@ -722,7 +742,7 @@ static bool generateClassMemberLink(OutputDocInterface &ol,ClassDef *mcd,const c
// write the actual link // write the actual link
writeMultiLineCodeLink(ol,xd->getReference(), writeMultiLineCodeLink(ol,xd->getReference(),
xd->getOutputFileBase(),xmd->anchor(),memName); xd->getOutputFileBase(),xmd->getBodyAnchor(),memName);
return TRUE; return TRUE;
} }
} }
...@@ -1068,11 +1088,16 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1068,11 +1088,16 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
generateClassOrGlobalLink(*g_code,yytext); generateClassOrGlobalLink(*g_code,yytext);
BEGIN( ClassVar ); BEGIN( ClassVar );
} }
<ClassVar>"=" {
g_code->codify(yytext);
unput(*yytext);
BEGIN( Body );
}
<ClassVar>{ID} { <ClassVar>{ID} {
g_type = g_curClassName.copy(); g_type = g_curClassName.copy();
g_name = yytext; g_name = yytext;
g_theVarContext.addVariable(g_type,g_name); g_theVarContext.addVariable(g_type,g_name);
g_code->codify(yytext); generateClassOrGlobalLink(*g_code,yytext);
} }
<ClassName,ClassVar>[ \t\n]*":"[ \t\n]* { <ClassName,ClassVar>[ \t\n]*":"[ \t\n]* {
codifyLines(yytext); codifyLines(yytext);
...@@ -1501,10 +1526,18 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -1501,10 +1526,18 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_scopeStack.push(INNERBLOCK); g_scopeStack.push(INNERBLOCK);
} }
g_code->codify(")"); g_code->codify(")");
startFontClass("keyword");
yytext[yyleng-1]='\0'; yytext[yyleng-1]='\0';
codifyLines(yytext+1); QCString cv(yytext+1);
endFontClass(); if (!cv.stripWhiteSpace().isEmpty())
{
startFontClass("keyword");
codifyLines(yytext+1);
endFontClass();
}
else // just whitespace
{
codifyLines(yytext+1);
}
g_code->codify("{"); g_code->codify("{");
if (g_searchingForBody) if (g_searchingForBody)
{ {
......
...@@ -347,7 +347,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName) ...@@ -347,7 +347,7 @@ void Definition::writeInlineCode(OutputList &ol,const char *scopeName)
* definition is used. * definition is used.
*/ */
void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members) const QCString &text,MemberSDict *members,bool /*funcOnly*/)
{ {
ol.pushGeneratorState(); ol.pushGeneratorState();
if (Config_getBool("SOURCE_BROWSER") && members) if (Config_getBool("SOURCE_BROWSER") && members)
...@@ -425,12 +425,12 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName, ...@@ -425,12 +425,12 @@ void Definition::writeSourceRefList(OutputList &ol,const char *scopeName,
void Definition::writeSourceReffedBy(OutputList &ol,const char *scopeName) void Definition::writeSourceReffedBy(OutputList &ol,const char *scopeName)
{ {
writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),m_sourceRefByDict); writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),m_sourceRefByDict,FALSE);
} }
void Definition::writeSourceRefs(OutputList &ol,const char *scopeName) void Definition::writeSourceRefs(OutputList &ol,const char *scopeName)
{ {
writeSourceRefList(ol,scopeName,theTranslator->trReferences(),m_sourceRefsDict); writeSourceRefList(ol,scopeName,theTranslator->trReferences(),m_sourceRefsDict,TRUE);
} }
bool Definition::hasDocumentation() const bool Definition::hasDocumentation() const
......
...@@ -141,7 +141,7 @@ class Definition ...@@ -141,7 +141,7 @@ class Definition
private: private:
void writeSourceRefList(OutputList &ol,const char *scopeName, void writeSourceRefList(OutputList &ol,const char *scopeName,
const QCString &text,MemberSDict *members); const QCString &text,MemberSDict *members,bool);
//QCString m_qualifiedName; // name of the definition //QCString m_qualifiedName; // name of the definition
QCString m_brief; // brief description QCString m_brief; // brief description
QCString m_doc; // detailed description QCString m_doc; // detailed description
......
...@@ -1135,7 +1135,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1135,7 +1135,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
if (formula) if (formula)
{ {
QCString formName; QCString formName;
formName.sprintf("form-%d.gif",formula->getId()); formName.sprintf("form_%d",formula->getId());
outDoc->writeFormula(formName,formula->getFormulaText()); outDoc->writeFormula(formName,formula->getFormulaText());
} }
} }
......
...@@ -2101,11 +2101,13 @@ static void findFriends() ...@@ -2101,11 +2101,13 @@ static void findFriends()
{ {
mmd->setBodySegment(fmd->getStartBodyLine(),fmd->getEndBodyLine()); mmd->setBodySegment(fmd->getStartBodyLine(),fmd->getEndBodyLine());
mmd->setBodyDef(fmd->getBodyDef()); mmd->setBodyDef(fmd->getBodyDef());
mmd->setBodyMember(fmd);
} }
else if (mmd->getStartBodyLine()!=-1 && fmd->getStartBodyLine()==-1) else if (mmd->getStartBodyLine()!=-1 && fmd->getStartBodyLine()==-1)
{ {
fmd->setBodySegment(mmd->getStartBodyLine(),mmd->getEndBodyLine()); fmd->setBodySegment(mmd->getStartBodyLine(),mmd->getEndBodyLine());
fmd->setBodyDef(mmd->getBodyDef()); fmd->setBodyDef(mmd->getBodyDef());
fmd->setBodyMember(mmd);
} }
} }
} }
...@@ -2180,12 +2182,14 @@ static void transferFunctionDocumentation() ...@@ -2180,12 +2182,14 @@ static void transferFunctionDocumentation()
if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1) if (mdec->getStartBodyLine()!=-1 && mdef->getStartBodyLine()==-1)
{ {
mdef->setBodySegment(mdec->getStartBodyLine(),mdec->getEndBodyLine()); mdef->setBodySegment(mdec->getStartBodyLine(),mdec->getEndBodyLine());
mdef->setBodyDef(mdec->getFileDef()); mdef->setBodyDef(mdec->getBodyDef());
mdef->setBodyMember(mdec);
} }
else if (mdef->getStartBodyLine()!=-1 && mdec->getStartBodyLine()==-1) else if (mdef->getStartBodyLine()!=-1 && mdec->getStartBodyLine()==-1)
{ {
mdec->setBodySegment(mdef->getStartBodyLine(),mdef->getEndBodyLine()); mdec->setBodySegment(mdef->getStartBodyLine(),mdef->getEndBodyLine());
mdec->setBodyDef(mdef->getFileDef()); mdec->setBodyDef(mdef->getBodyDef());
mdec->setBodyMember(mdef);
} }
mdec->mergeMemberSpecifiers(mdef->getMemberSpecifiers()); mdec->mergeMemberSpecifiers(mdef->getMemberSpecifiers());
mdef->mergeMemberSpecifiers(mdec->getMemberSpecifiers()); mdef->mergeMemberSpecifiers(mdec->getMemberSpecifiers());
...@@ -6194,7 +6198,12 @@ static int readFileOrDirectory(const char *s, ...@@ -6194,7 +6198,12 @@ static int readFileOrDirectory(const char *s,
bool errorIfNotExist=TRUE bool errorIfNotExist=TRUE
) )
{ {
QFileInfo fi(s); // strip trailing slashes
QCString fs = s;
char lc = fs.at(fs.length()-1);
if (lc=='/' || lc=='\\') fs = fs.left(fs.length()-1);
QFileInfo fi(fs);
//printf("readFileOrDirectory(%s)\n",s); //printf("readFileOrDirectory(%s)\n",s);
int totalSize=0; int totalSize=0;
{ {
...@@ -6666,12 +6675,12 @@ void parseInput() ...@@ -6666,12 +6675,12 @@ void parseInput()
s=imagePathList.next(); s=imagePathList.next();
} }
QDictIterator<FileName> fndi(*Doxygen::imageNameDict); //QDictIterator<FileName> fndi(*Doxygen::imageNameDict);
FileName *fn; //FileName *fn;
for (;(fn=fndi.current());++fndi) //for (;(fn=fndi.current());++fndi)
{ //{
printf("File Name %s\n",fn->fileName()); // printf("File Name %s\n",fn->fileName());
} //}
msg("Searching for dot files...\n"); msg("Searching for dot files...\n");
......
...@@ -425,48 +425,18 @@ void FileDef::writeSource(OutputList &ol) ...@@ -425,48 +425,18 @@ void FileDef::writeSource(OutputList &ol)
initParseCodeContext(); initParseCodeContext();
ol.startCodeFragment(); ol.startCodeFragment();
//if (name().left(9)=="memory.c")
//{
parseCode(ol,0, parseCode(ol,0,
fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")), fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")),
FALSE,0,this FALSE,0,this
); );
//}
ol.endCodeFragment(); ol.endCodeFragment();
endFile(ol); endFile(ol);
ol.enableAll(); ol.enableAll();
} }
#if 0
/*! Adds a member \a md to the member group with id \a groupId.
*/
void FileDef::addMemberListToGroup(MemberList *ml,
bool (MemberDef::*func)() const)
{
MemberListIterator mli(*ml);
MemberDef *md;
for (;(md=mli.current());++mli)
{
int groupId=md->getMemberGroupId();
if ((md->*func)() && groupId!=-1)
{
QCString *pGrpHeader = Doxygen::memberHeaderDict[groupId];
QCString *pDocs = Doxygen::memberDocDict[groupId];
//printf("Member `%s' pGrpHeader=%p\n",md->name().data(),pGrpHeader);
if (pGrpHeader)
{
MemberGroup *mg = memberGroupDict->find(groupId);
if (mg==0)
{
mg = new MemberGroup(groupId,*pGrpHeader,pDocs ? pDocs->data() : 0);
memberGroupDict->insert(groupId,mg);
memberGroupList->append(mg);
}
//printf("insert member %s in group %s\n",md->name().data(),pGrpHeader->data());
mg->insertMember(md);
md->setMemberGroup(mg);
}
}
}
}
#endif
void FileDef::addMembersToMemberGroup() void FileDef::addMembersToMemberGroup()
{ {
......
...@@ -85,7 +85,7 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -85,7 +85,7 @@ void FormulaList::generateBitmaps(const char *path)
for (fli.toFirst();(formula=fli.current());++fli) for (fli.toFirst();(formula=fli.current());++fli)
{ {
QCString resultName; QCString resultName;
resultName.sprintf("form-%d.gif",formula->getId()); resultName.sprintf("form_%d.gif",formula->getId());
// only formulas for which no image exists are generated // only formulas for which no image exists are generated
QFileInfo fi(resultName); QFileInfo fi(resultName);
if (!fi.exists()) if (!fi.exists())
...@@ -116,7 +116,7 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -116,7 +116,7 @@ void FormulaList::generateBitmaps(const char *path)
for (;(pagePtr=pli.current());++pli,++pageIndex) for (;(pagePtr=pli.current());++pli,++pageIndex)
{ {
int pageNum=*pagePtr; int pageNum=*pagePtr;
msg("Generating image form-%d.gif for formula\n",pageNum); msg("Generating image form_%d.gif for formula\n",pageNum);
char dviArgs[4096]; char dviArgs[4096];
QCString formBase; QCString formBase;
formBase.sprintf("_form%d",pageNum); formBase.sprintf("_form%d",pageNum);
...@@ -269,6 +269,7 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -269,6 +269,7 @@ void FormulaList::generateBitmaps(const char *path)
} }
// down-sample the image to 1/16th of the area using 16 gray scale // down-sample the image to 1/16th of the area using 16 gray scale
// colors. // colors.
// TODO: optimize this code.
for (y=0;y<dstImage.getHeight();y++) for (y=0;y<dstImage.getHeight();y++)
{ {
for (x=0;x<dstImage.getWidth();x++) for (x=0;x<dstImage.getWidth();x++)
...@@ -298,7 +299,7 @@ void FormulaList::generateBitmaps(const char *path) ...@@ -298,7 +299,7 @@ void FormulaList::generateBitmaps(const char *path)
} }
// save the result as a gif // save the result as a gif
QCString resultName; QCString resultName;
resultName.sprintf("form-%d.gif",pageNum); resultName.sprintf("form_%d.gif",pageNum);
// the option parameter 1 is used here as a temporary hack // the option parameter 1 is used here as a temporary hack
// to select the right color palette! // to select the right color palette!
dstImage.save(resultName,1); dstImage.save(resultName,1);
......
...@@ -637,14 +637,14 @@ void HtmlGenerator::writeFormula(const char *n,const char *text) ...@@ -637,14 +637,14 @@ void HtmlGenerator::writeFormula(const char *n,const char *text)
{ {
if (text && text[0]=='\\') t << "<p><center>" << endl; if (text && text[0]=='\\') t << "<p><center>" << endl;
t << "<img align="; t << "<img align=";
//#if !defined(_WIN32) #if !defined(_WIN32)
// t << "\"top\""; // assume Unix users use Netscape 4.x which does t << "\"top\""; // assume Unix users use Netscape 4.x which does
// // not seem to support align == "middle" :-(( // not seem to support align == "middle" :-((
//#else #else
t << "\"middle\""; // assume Windows users use IE or HtmlHelp which only t << "\"middle\""; // assume Windows users use IE or HtmlHelp which only
// displays formulas nicely with align == "middle" // displays formulas nicely with align == "middle"
//#endif #endif
t << " src=\"" << n << "\">" << endl; t << " src=\"" << n << ".gif\">" << endl;
if (text && text[0]=='\\') t << "</center><p>" << endl; if (text && text[0]=='\\') t << "</center><p>" << endl;
} }
......
...@@ -315,7 +315,8 @@ void HtmlHelp::createProjectFile() ...@@ -315,7 +315,8 @@ void HtmlHelp::createProjectFile()
"Contents file=index.hhc\n" "Contents file=index.hhc\n"
"Default Window=main\n" "Default Window=main\n"
"Default topic=" << indexName << "\n" "Default topic=" << indexName << "\n"
"Index file=index.hhk\n"; "Index file=index.hhk\n"
"Language=0x409 English (United States)\n";
if (Config_getBool("BINARY_TOC")) t << "Binary TOC=YES\n"; if (Config_getBool("BINARY_TOC")) t << "Binary TOC=YES\n";
if (Config_getBool("GENERATE_CHI")) t << "Create CHI file=YES\n"; if (Config_getBool("GENERATE_CHI")) t << "Create CHI file=YES\n";
t << "Title=" << Config_getString("PROJECT_NAME") << endl << endl; t << "Title=" << Config_getString("PROJECT_NAME") << endl << endl;
...@@ -323,7 +324,7 @@ void HtmlHelp::createProjectFile() ...@@ -323,7 +324,7 @@ void HtmlHelp::createProjectFile()
t << "[WINDOWS]" << endl; t << "[WINDOWS]" << endl;
t << "main=\"" << Config_getString("PROJECT_NAME") << "\",\"index.hhc\"," t << "main=\"" << Config_getString("PROJECT_NAME") << "\",\"index.hhc\","
"\"index.hhk\",\"" << indexName << "\",\"" << "\"index.hhk\",\"" << indexName << "\",\"" <<
indexName << "\",,,,,0x23520,,0x3006,,,,,,,,0" << endl << endl; indexName << "\",,,,,0x23520,,0x387e,,,,,,,,0" << endl << endl;
t << "[FILES]" << endl; t << "[FILES]" << endl;
char *s = indexFiles.first(); char *s = indexFiles.first();
......
...@@ -305,6 +305,7 @@ MemberDef::MemberDef(const char *df,int dl, ...@@ -305,6 +305,7 @@ MemberDef::MemberDef(const char *df,int dl,
annEnumType=0; annEnumType=0;
indDepth=0; indDepth=0;
section=0; section=0;
bodyMemb=0;
explExt=FALSE; explExt=FALSE;
cachedAnonymousType=0; cachedAnonymousType=0;
maxInitLines=Config_getInt("MAX_INITIALIZER_LINES"); maxInitLines=Config_getInt("MAX_INITIALIZER_LINES");
......
...@@ -231,6 +231,12 @@ class MemberDef : public Definition ...@@ -231,6 +231,12 @@ class MemberDef : public Definition
ArgumentList *actualArgs); ArgumentList *actualArgs);
void setTemplateMaster(MemberDef *mt) { m_templateMaster=mt; } void setTemplateMaster(MemberDef *mt) { m_templateMaster=mt; }
void addListReference(Definition *d); void addListReference(Definition *d);
QCString getBodyAnchor() const
{
return bodyMemb ? bodyMemb->anchor() : anchor();
}
void setBodyMember(MemberDef *md) { bodyMemb = md; }
bool visited; bool visited;
...@@ -260,6 +266,7 @@ class MemberDef : public Definition ...@@ -260,6 +266,7 @@ class MemberDef : public Definition
//int declLine; // line where the declaration was found //int declLine; // line where the declaration was found
QCString def; // member definition in code (fully qualified name) QCString def; // member definition in code (fully qualified name)
QCString anc; // HTML anchor name QCString anc; // HTML anchor name
MemberDef *bodyMemb; // Member containing the definition
Specifier virt; // normal/virtual/pure virtual Specifier virt; // normal/virtual/pure virtual
Protection prot; // protection type [Public/Protected/Private] Protection prot; // protection type [Public/Protected/Private]
bool related; // is this a member that is only related to a class bool related; // is this a member that is only related to a class
......
...@@ -5,10 +5,12 @@ ...@@ -5,10 +5,12 @@
/*! \brief Base of the translator adapter tree /*! \brief Base of the translator adapter tree
* *
* This class provides access to the english translations, to be used
* as a substitute for not implemented local translations. * This abstract class provides access to the english
* translations, to be used as a substitute for not implemented
* local translations.
*/ */
class TranslatorAdapterCVS : public Translator class TranslatorAdapterBase : public Translator
{ {
protected: protected:
TranslatorEnglish english; TranslatorEnglish english;
...@@ -27,35 +29,17 @@ class TranslatorAdapterCVS : public Translator ...@@ -27,35 +29,17 @@ class TranslatorAdapterCVS : public Translator
} }
public: public:
/*! A method to generate a warning message to signal the user /*! This method is used to generate a warning message to signal
* that the translation of his/her language of choice needs * the user that the translation of his/her language of choice
* updating. * needs updating. It must be implemented by the translator
* adapter class (pure virtual).
*
* \sa createUpdateNeededMessage()
*/ */
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage() = 0;
{
QCString vs("CVS release ");
vs += versionString; // the one from the version.cpp
return createUpdateNeededMessage(idLanguage(), vs);
}
//-----------------------------------------------------------------------
// The things below this line should go to the new
// TranslatorAdapter_1_2_x, as public methods. The things above
// should stay in TranslatorAdapterCVS and need not to be touched.
// The first five lines below should be uncommented, and the
// release number at the fifth of those lines should be set.
// class TranslatorAdapter_1_2_x : public TranslatorAdapterCVS
// {
// public:
// virtual QCString updateNeededMessage()
// { return createUpdateNeededMessage(idLanguage(),"release 1.2.x"); }
// Put new adapter methods below...
//
}; };
class TranslatorAdapter_1_2_11 : public TranslatorAdapterCVS class TranslatorAdapter_1_2_11 : public TranslatorAdapterBase
{ {
public: public:
virtual QCString updateNeededMessage() virtual QCString updateNeededMessage()
......
...@@ -128,6 +128,9 @@ ...@@ -128,6 +128,9 @@
// 2001/07/16 // 2001/07/16
// - trClassDocumentation() updated as in the English translator. // - trClassDocumentation() updated as in the English translator.
// //
// 2001/11/06
// - trReferences() implemented.
//
// //
// Todo // Todo
// ---- // ----
...@@ -148,7 +151,7 @@ ...@@ -148,7 +151,7 @@
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public TranslatorAdapter_1_2_11 class TranslatorCzech : public Translator
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
...@@ -1465,6 +1468,17 @@ class TranslatorCzech : public TranslatorAdapter_1_2_11 ...@@ -1465,6 +1468,17 @@ class TranslatorCzech : public TranslatorAdapter_1_2_11
return decode(result); return decode(result);
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.11
//////////////////////////////////////////////////////////////////////////
/*! This text is put before the list of members referenced by a member
*/
virtual QCString trReferences()
{
return decode("Odkazuje se na");
}
}; };
#endif // TRANSLATOR_CZ_H #endif // TRANSLATOR_CZ_H
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#ifndef TRANSLATOR_RU_H #ifndef TRANSLATOR_RU_H
#define TRANSLATOR_RU_H #define TRANSLATOR_RU_H
class TranslatorRussian : public TranslatorAdapter_1_2_11 class TranslatorRussian : public Translator
{ {
private: private:
/*! The Decode() inline assumes the source written in the /*! The Decode() inline assumes the source written in the
...@@ -146,7 +146,7 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11 ...@@ -146,7 +146,7 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11
/*! this is the first part of a sentence that is followed by a class name */ /*! this is the first part of a sentence that is followed by a class name */
/* Dosn't use when optimization for C is on. */ /* Dosn't use when optimization for C is on. */
virtual QCString trThisIsTheListOfAllMembers() virtual QCString trThisIsTheListOfAllMembers()
{ return decode(" "); } { return decode(" "); }
/*! this is the remainder of the sentence after the class name */ /*! this is the remainder of the sentence after the class name */
/* Dosn't use when optimization for C is on. */ /* Dosn't use when optimization for C is on. */
...@@ -628,7 +628,7 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11 ...@@ -628,7 +628,7 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11
*/ */
virtual QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return decode(" " { return decode(" "
" "); } " "); }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
...@@ -1357,6 +1357,27 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11 ...@@ -1357,6 +1357,27 @@ class TranslatorRussian : public TranslatorAdapter_1_2_11
if (!singular) result+=""; if (!singular) result+="";
return decode(result); return decode(result);
} }
/*! This text is generated when the \\requirements command is used
*/
virtual QCString trRequirements(bool first_capital, bool singular)
{
QCString result((first_capital ? "" : ""));
if (!singular) result+=""; else result+="";
return decode(result);
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.11
//////////////////////////////////////////////////////////////////////////
/*! This text is put before the list of members referenced by a member
*/
virtual QCString trReferences()
{
return " ";
}
}; };
#endif #endif
...@@ -579,21 +579,21 @@ class XMLGenerator : public OutputDocInterface ...@@ -579,21 +579,21 @@ class XMLGenerator : public OutputDocInterface
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(); startParMode();
m_t << "<image name=\"" << name << "\" size=\"" << size m_t << "<image name=\"" << name << "\"";
<< "\" caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook if (size) m_t << " size=\"" << size << "\"";
m_t << ">"; // non docbook
} }
void endImage(bool) void endImage(bool)
{ {
m_t << "</image>"; m_t << "</image>";
} }
void startDotFile(const char *name,bool caption) void startDotFile(const char *name,bool /*caption*/)
{ {
startParMode(); startParMode();
m_t << "<dotfile name=\"" << name << "\" " m_t << "<dotfile name=\"" << name << "\">"; // non docbook
<< "caption=\"" << (caption ? "1" : "0") << "\">"; // non docbook
} }
void endDotFile(bool) void endDotFile(bool)
{ {
...@@ -1176,9 +1176,9 @@ void generateXMLForFile(FileDef *fd,QTextStream &t) ...@@ -1176,9 +1176,9 @@ void generateXMLForFile(FileDef *fd,QTextStream &t)
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->documentation()); writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " <sourcecode>" << endl; t << " <programlisting>" << endl;
writeXMLCodeBlock(t,fd); writeXMLCodeBlock(t,fd);
t << " </sourcecode>" << endl; t << " </programlisting>" << endl;
t << " <location file=\"" t << " <location file=\""
<< fd->getDefFileName() << "\" line=\"" << fd->getDefFileName() << "\" line=\""
<< fd->getDefLine() << "\"/>" << endl; << fd->getDefLine() << "\"/>" << endl;
......
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