Commit 5e4af367 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.14-20020310

parent 837e4e86
DOXYGEN Version 1.2.14-20020224 DOXYGEN Version 1.2.14-20020310
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (24 February 2002) Dimitri van Heesch (10 March 2002)
DOXYGEN Version 1.2.14_20020224 DOXYGEN Version 1.2.14_20020310
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) (24 February 2002) Dimitri van Heesch (dimitri@stack.nl) (10 March 2002)
1.2.14-20020224 1.2.14-20020310
...@@ -110,8 +110,8 @@ class IDoc ...@@ -110,8 +110,8 @@ class IDoc
enum Kind enum Kind
{ {
Invalid = 0, // 0 Invalid = 0, // 0
Para, // 1 -> IDocPara Para = 1, // 1 -> IDocPara
Text, // 2 -> IDocText Text = 2, // 2 -> IDocText
MarkupModifier, // 3 -> IDocMarkupModifier MarkupModifier, // 3 -> IDocMarkupModifier
ItemizedList, // 4 -> IDocItemizedList ItemizedList, // 4 -> IDocItemizedList
OrderedList, // 5 -> IDocOrderedList OrderedList, // 5 -> IDocOrderedList
...@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc ...@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc class IDocULink : public IDoc
{ {
public: public:
virtual QString url() = 0; virtual QString url() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocEMail : public IDoc class IDocEMail : public IDoc
{ {
public: public:
virtual QString address() = 0; virtual QString address() const = 0;
}; };
class IDocLink : public IDoc class IDocLink : public IDoc
{ {
public: public:
virtual QString refId() = 0; virtual QString refId() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocProgramListing : public IDoc class IDocProgramListing : public IDoc
{ {
public: public:
virtual IDocIterator *codeLines() = 0; virtual IDocIterator *codeLines() const = 0;
}; };
class IDocCodeLine : public IDoc class IDocCodeLine : public IDoc
{ {
public: public:
virtual int lineNumber() = 0; virtual int lineNumber() const = 0;
virtual QString refId() = 0; virtual QString refId() const = 0;
virtual IDocIterator *codeElements() = 0; virtual IDocIterator *codeElements() const = 0;
}; };
class IDocHighlight : public IDoc class IDocHighlight : public IDoc
...@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc ...@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc
KeywordType, KeywordFlow, CharLiteral, KeywordType, KeywordFlow, CharLiteral,
StringLiteral, Preprocessor StringLiteral, Preprocessor
}; };
virtual HighlightKind highlightKind() = 0; virtual HighlightKind highlightKind() const = 0;
virtual IDocIterator *codeElements() = 0; virtual IDocIterator *codeElements() const = 0;
}; };
class IDocFormula : public IDoc class IDocFormula : public IDoc
{ {
public: public:
virtual QString id() = 0; virtual QString id() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocImage : public IDoc class IDocImage : public IDoc
{ {
public: public:
virtual QString name() = 0; virtual QString name() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocDotFile : public IDoc class IDocDotFile : public IDoc
{ {
public: public:
virtual QString name() = 0; virtual QString name() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocIndexEntry : public IDoc class IDocIndexEntry : public IDoc
{ {
public: public:
virtual QString primary() = 0; virtual QString primary() const = 0;
virtual QString secondary() = 0; virtual QString secondary() const = 0;
}; };
class IDocTable : public IDoc class IDocTable : public IDoc
{ {
public: public:
virtual IDocIterator *rows() = 0; virtual IDocIterator *rows() const = 0;
virtual int numColumns() = 0; virtual int numColumns() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocRow : public IDoc class IDocRow : public IDoc
{ {
public: public:
virtual IDocIterator *entries() = 0; virtual IDocIterator *entries() const = 0;
}; };
class IDocEntry : public IDoc class IDocEntry : public IDoc
{ {
public: public:
virtual IDocIterator *contents() = 0; virtual IDocIterator *contents() const = 0;
}; };
class IDocSection : public IDoc class IDocSection : public IDoc
...@@ -388,6 +388,72 @@ class IDocIterator ...@@ -388,6 +388,72 @@ class IDocIterator
virtual void release() = 0; virtual void release() = 0;
}; };
class IEdgeLabel
{
public:
virtual QString label() = 0;
};
class IEdgeLabelIterator
{
public:
virtual IEdgeLabel *toFirst() = 0;
virtual IEdgeLabel *toLast() = 0;
virtual IEdgeLabel *toNext() = 0;
virtual IEdgeLabel *toPrev() = 0;
virtual IEdgeLabel *current() const = 0;
virtual void release() = 0;
};
class IChildNode
{
public:
enum NodeRelation { PublicInheritance, ProtectedInheritance,
PrivateInheritance, Usage, TemplateInstace
};
virtual QString id() const = 0;
virtual NodeRelation relation() const = 0;
virtual IEdgeLabelIterator *edgeLabels() const = 0;
};
class IChildNodeIterator
{
public:
virtual IChildNode *toFirst() = 0;
virtual IChildNode *toLast() = 0;
virtual IChildNode *toNext() = 0;
virtual IChildNode *toPrev() = 0;
virtual IChildNode *current() const = 0;
virtual void release() = 0;
};
class INode
{
public:
virtual QString id() const = 0;
virtual QString label() const = 0;
virtual QString linkId() const = 0;
virtual IChildNodeIterator *children() const = 0;
};
class INodeIterator
{
public:
virtual INode *toFirst() = 0;
virtual INode *toLast() = 0;
virtual INode *toNext() = 0;
virtual INode *toPrev() = 0;
virtual INode *current() const = 0;
virtual void release() = 0;
};
class IGraph
{
public:
virtual INodeIterator *nodes() const = 0;
virtual ~IGraph() {}
};
class IMember class IMember
{ {
public: public:
...@@ -501,6 +567,33 @@ class ICompound ...@@ -501,6 +567,33 @@ class ICompound
* zero, the memory for the compound will be released. * zero, the memory for the compound will be released.
*/ */
virtual void release() = 0; virtual void release() = 0;
// TODO:
// class:
// IRelatedCompoundIterator *baseClasses()
// IRelatedCompoundIterator *derivedClasses()
// ICompoundIterator *innerClasses()
// ITemplateParamListIterator *templateParamLists()
// listOfAllMembers()
// IDotGraph *inheritanceGraph()
// IDotGraph *collaborationGraph()
// locationFile()
// locationLine()
// locationBodyStartLine()
// locationBodyEndLine()
// namespace:
// ICompound *innerNamespaces()
// file:
// includes()
// includedBy()
// IDotGraph *includeDependencyGraph()
// IDotGraph *includedByDependencyGraph()
// IDocProgramListing *source()
// group:
// Title()
// innerFile()
// innerPage()
// page:
}; };
class ICompoundIterator class ICompoundIterator
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
#include "debug.h" #include "debug.h"
//-----------------------------------------------------------------------------
class IBaseHandler class IBaseHandler
{ {
public: public:
...@@ -30,6 +32,8 @@ class IBaseHandler ...@@ -30,6 +32,8 @@ class IBaseHandler
virtual ~IBaseHandler() {} virtual ~IBaseHandler() {}
}; };
//-----------------------------------------------------------------------------
class IFallBackHandler class IFallBackHandler
{ {
public: public:
...@@ -39,6 +43,8 @@ class IFallBackHandler ...@@ -39,6 +43,8 @@ class IFallBackHandler
virtual ~IFallBackHandler() {} virtual ~IFallBackHandler() {}
}; };
//-----------------------------------------------------------------------------
template<class T> class ElementMapper template<class T> class ElementMapper
{ {
class StartElementHandler class StartElementHandler
...@@ -108,11 +114,15 @@ template<class T> class ElementMapper ...@@ -108,11 +114,15 @@ template<class T> class ElementMapper
QDict<EndElementHandlerT> m_endHandlers; QDict<EndElementHandlerT> m_endHandlers;
}; };
//-----------------------------------------------------------------------------
struct LocatorContainer struct LocatorContainer
{ {
static QXmlLocator *s_theLocator; static QXmlLocator *s_theLocator;
}; };
//-----------------------------------------------------------------------------
template<class T> class BaseHandler : public QXmlDefaultHandler, template<class T> class BaseHandler : public QXmlDefaultHandler,
public ElementMapper<T>, public ElementMapper<T>,
public LocatorContainer, public LocatorContainer,
...@@ -269,6 +279,8 @@ template<class T> class BaseHandler : public QXmlDefaultHandler, ...@@ -269,6 +279,8 @@ template<class T> class BaseHandler : public QXmlDefaultHandler,
IFallBackHandler *m_fallBackHandler; IFallBackHandler *m_fallBackHandler;
}; };
//-----------------------------------------------------------------------------
template<class T> class BaseFallBackHandler : public ElementMapper<T>, template<class T> class BaseFallBackHandler : public ElementMapper<T>,
public IFallBackHandler public IFallBackHandler
{ {
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#include "compoundhandler.h" #include "compoundhandler.h"
#include "dochandler.h" #include "dochandler.h"
#include "debug.h" #include "debug.h"
#include "graphhandler.h"
#include "sectionhandler.h"
class CompoundErrorHandler : public QXmlErrorHandler class CompoundErrorHandler : public QXmlErrorHandler
{ {
...@@ -129,6 +131,10 @@ CompoundHandler::CompoundHandler(const QString &xmlDir) ...@@ -129,6 +131,10 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
addStartHandler("programlisting",this,&CompoundHandler::startProgramListing); addStartHandler("programlisting",this,&CompoundHandler::startProgramListing);
addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph);
addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph);
} }
CompoundHandler::~CompoundHandler() CompoundHandler::~CompoundHandler()
...@@ -194,7 +200,7 @@ void CompoundHandler::endCompoundName() ...@@ -194,7 +200,7 @@ void CompoundHandler::endCompoundName()
void CompoundHandler::addSuperClass(const QXmlAttributes& attrib) void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
{ {
SuperClass *sc=new SuperClass( RelatedClass *sc=new RelatedClass(
attrib.value("refid"), attrib.value("refid"),
attrib.value("prot"), attrib.value("prot"),
attrib.value("virt") attrib.value("virt")
...@@ -208,7 +214,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib) ...@@ -208,7 +214,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
void CompoundHandler::addSubClass(const QXmlAttributes& attrib) void CompoundHandler::addSubClass(const QXmlAttributes& attrib)
{ {
SubClass *sc = new SubClass( RelatedClass *sc = new RelatedClass(
attrib.value("refid"), attrib.value("refid"),
attrib.value("prot"), attrib.value("prot"),
attrib.value("virt") attrib.value("virt")
...@@ -266,3 +272,42 @@ void CompoundHandler::release() ...@@ -266,3 +272,42 @@ void CompoundHandler::release()
} }
} }
ISectionIterator *CompoundHandler::sections() const
{
return new SectionIterator(m_sections);
}
IMemberIterator *CompoundHandler::memberByName(const QString &name) const
{
QList<MemberHandler> *ml = m_memberNameDict[name];
if (ml==0) return 0;
return new MemberIterator(*ml);
}
void CompoundHandler::startInheritanceGraph(const QXmlAttributes &attrib)
{
m_inheritanceGraph = new GraphHandler(this,"inheritancegraph");
m_inheritanceGraph->startGraph(attrib);
}
void CompoundHandler::startCollaborationGraph(const QXmlAttributes &attrib)
{
m_collaborationGraph = new GraphHandler(this,"collaborationgraph");
m_collaborationGraph->startGraph(attrib);
}
IDocRoot *CompoundHandler::briefDescription() const
{
return m_brief;
}
IDocRoot *CompoundHandler::detailedDescription() const
{
return m_detailed;
}
IMember *CompoundHandler::memberById(const QString &id) const
{
return m_memberDict[id];
}
...@@ -22,11 +22,12 @@ ...@@ -22,11 +22,12 @@
#include "basehandler.h" #include "basehandler.h"
#include "baseiterator.h" #include "baseiterator.h"
#include "sectionhandler.h"
class MainHandler; class MainHandler;
class DocHandler; class DocHandler;
class ProgramListingHandler; class ProgramListingHandler;
class GraphHandler;
class MemberHandler;
class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
{ {
...@@ -41,6 +42,8 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> ...@@ -41,6 +42,8 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
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); virtual void startProgramListing(const QXmlAttributes& attrib);
virtual void startInheritanceGraph(const QXmlAttributes& attrib);
virtual void startCollaborationGraph(const QXmlAttributes& attrib);
virtual void addref() { m_refCount++; } virtual void addref() { m_refCount++; }
CompoundHandler(const QString &dirName); CompoundHandler(const QString &dirName);
...@@ -54,43 +57,25 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> ...@@ -54,43 +57,25 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
QString id() const { return m_id; } QString id() const { return m_id; }
CompoundKind kind() const { return m_kind; } CompoundKind kind() const { return m_kind; }
QString kindString() const { return m_kindString; } QString kindString() const { return m_kindString; }
ISectionIterator *sections() const ISectionIterator *sections() const;
{ return new SectionIterator(m_sections); } IDocRoot *briefDescription() const;
virtual IDocRoot *briefDescription() const IDocRoot *detailedDescription() const;
{ return m_brief; } IMember *memberById(const QString &id) const;
virtual IDocRoot *detailedDescription() const IMemberIterator *memberByName(const QString &name) const;
{ return m_detailed; } void release();
virtual IMember *memberById(const QString &id) const
{ return m_memberDict[id]; }
virtual IMemberIterator *memberByName(const QString &name) const
{
QList<MemberHandler> *ml = m_memberNameDict[name];
if (ml==0) return 0;
return new MemberIterator(*ml);
}
virtual void release();
private: private:
struct SuperClass struct RelatedClass
{ {
SuperClass(const QString &id,const QString &prot,const QString &virt) : RelatedClass(const QString &id,const QString &prot,const QString &virt) :
m_id(id),m_protection(prot),m_virtualness(virt) {} m_id(id),m_protection(prot),m_virtualness(virt) {}
QString m_id; QString m_id;
QString m_protection; QString m_protection;
QString m_virtualness; QString m_virtualness;
}; };
struct SubClass QList<RelatedClass> m_superClasses;
{ QList<RelatedClass> m_subClasses;
SubClass(const QString &id,const QString &prot,const QString &virt) :
m_id(id),m_protection(prot),m_virtualness(virt) {}
QString m_id;
QString m_protection;
QString m_virtualness;
};
QList<SuperClass> m_superClasses;
QList<SubClass> m_subClasses;
QList<ISection> m_sections; QList<ISection> m_sections;
DocHandler *m_brief; DocHandler *m_brief;
DocHandler *m_detailed; DocHandler *m_detailed;
...@@ -106,6 +91,9 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler> ...@@ -106,6 +91,9 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
QDict<MemberHandler> m_memberDict; QDict<MemberHandler> m_memberDict;
QDict<QList<MemberHandler> > m_memberNameDict; QDict<QList<MemberHandler> > m_memberNameDict;
MainHandler *m_mainHandler; MainHandler *m_mainHandler;
GraphHandler *m_inheritanceGraph;
GraphHandler *m_collaborationGraph;
}; };
void compoundhandler_init(); void compoundhandler_init();
......
...@@ -17,51 +17,77 @@ ...@@ -17,51 +17,77 @@
#include "debug.h" #include "debug.h"
#include <qmap.h> #include <qmap.h>
//----------------------------------------------------------------------
class TypeNameMapper class TypeNameMapper
{ {
public: public:
TypeNameMapper() TypeNameMapper()
{ {
m_typeNameMap.insert("see", SimpleSectHandler::See); m_map.insert("see", SimpleSectHandler::See);
m_typeNameMap.insert("return", SimpleSectHandler::Return); m_map.insert("return", SimpleSectHandler::Return);
m_typeNameMap.insert("author", SimpleSectHandler::Author); m_map.insert("author", SimpleSectHandler::Author);
m_typeNameMap.insert("version", SimpleSectHandler::Version); m_map.insert("version", SimpleSectHandler::Version);
m_typeNameMap.insert("since", SimpleSectHandler::Since); m_map.insert("since", SimpleSectHandler::Since);
m_typeNameMap.insert("date", SimpleSectHandler::Date); m_map.insert("date", SimpleSectHandler::Date);
m_typeNameMap.insert("bug", SimpleSectHandler::Bug); m_map.insert("bug", SimpleSectHandler::Bug);
m_typeNameMap.insert("note", SimpleSectHandler::Note); m_map.insert("note", SimpleSectHandler::Note);
m_typeNameMap.insert("warning", SimpleSectHandler::Warning); m_map.insert("warning", SimpleSectHandler::Warning);
m_typeNameMap.insert("par", SimpleSectHandler::Par); m_map.insert("par", SimpleSectHandler::Par);
m_typeNameMap.insert("deprecated",SimpleSectHandler::Deprecated); m_map.insert("deprecated",SimpleSectHandler::Deprecated);
m_typeNameMap.insert("pre", SimpleSectHandler::Pre); m_map.insert("pre", SimpleSectHandler::Pre);
m_typeNameMap.insert("post", SimpleSectHandler::Post); m_map.insert("post", SimpleSectHandler::Post);
m_typeNameMap.insert("invariant", SimpleSectHandler::Invar); m_map.insert("invariant", SimpleSectHandler::Invar);
m_typeNameMap.insert("remark", SimpleSectHandler::Remark); m_map.insert("remark", SimpleSectHandler::Remark);
m_typeNameMap.insert("attention", SimpleSectHandler::Attention); m_map.insert("attention", SimpleSectHandler::Attention);
m_typeNameMap.insert("todo", SimpleSectHandler::Todo); m_map.insert("todo", SimpleSectHandler::Todo);
m_typeNameMap.insert("test", SimpleSectHandler::Test); m_map.insert("test", SimpleSectHandler::Test);
m_typeNameMap.insert("rcs", SimpleSectHandler::RCS); m_map.insert("rcs", SimpleSectHandler::RCS);
m_typeNameMap.insert("enumvalues",SimpleSectHandler::EnumValues); m_map.insert("enumvalues",SimpleSectHandler::EnumValues);
m_typeNameMap.insert("examples", SimpleSectHandler::Examples); m_map.insert("examples", SimpleSectHandler::Examples);
} }
SimpleSectHandler::Types stringToType(const QString &typeStr) SimpleSectHandler::Types stringToType(const QString &typeStr)
{ {
return m_typeNameMap[typeStr]; return m_map[typeStr];
} }
private: private:
QMap<QString,SimpleSectHandler::Types> m_typeNameMap; QMap<QString,SimpleSectHandler::Types> m_map;
};
class HighlightMapper
{
public:
HighlightMapper()
{
m_map.insert("comment", HighlightHandler::Comment);
m_map.insert("keyword", HighlightHandler::Keyword);
m_map.insert("keywordtype", HighlightHandler::KeywordType);
m_map.insert("keywordflow", HighlightHandler::KeywordFlow);
m_map.insert("charliteral", HighlightHandler::CharLiteral);
m_map.insert("stringliteral", HighlightHandler::StringLiteral);
m_map.insert("preprocessor", HighlightHandler::Preprocessor);
}
HighlightHandler::HighlightKind stringToKind(const QString &kindStr)
{
return m_map[kindStr];
}
private:
QMap<QString,HighlightHandler::HighlightKind> m_map;
}; };
static TypeNameMapper *s_typeMapper; static TypeNameMapper *s_typeMapper;
static HighlightMapper *s_highlightMapper;
void dochandler_init() void dochandler_init()
{ {
s_typeMapper = new TypeNameMapper; s_typeMapper = new TypeNameMapper;
s_highlightMapper = new HighlightMapper;
} }
void dochandler_exit() void dochandler_exit()
{ {
delete s_typeMapper; delete s_typeMapper;
delete s_highlightMapper;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -820,6 +846,7 @@ HighlightHandler::HighlightHandler(IBaseHandler *parent) ...@@ -820,6 +846,7 @@ HighlightHandler::HighlightHandler(IBaseHandler *parent)
m_children.setAutoDelete(TRUE); m_children.setAutoDelete(TRUE);
addEndHandler("highlight",this,&HighlightHandler::endHighlight); addEndHandler("highlight",this,&HighlightHandler::endHighlight);
addStartHandler("ref",this,&HighlightHandler::startRef); addStartHandler("ref",this,&HighlightHandler::startRef);
m_hl = Invalid;
} }
HighlightHandler::~HighlightHandler() HighlightHandler::~HighlightHandler()
...@@ -828,7 +855,8 @@ HighlightHandler::~HighlightHandler() ...@@ -828,7 +855,8 @@ HighlightHandler::~HighlightHandler()
void HighlightHandler::startHighlight(const QXmlAttributes& attrib) void HighlightHandler::startHighlight(const QXmlAttributes& attrib)
{ {
m_class = attrib.value("class"); m_hlString = attrib.value("class");
m_hl = s_highlightMapper->stringToKind(m_hlString);
m_curString=""; m_curString="";
m_parent->setDelegate(this); m_parent->setDelegate(this);
} }
...@@ -836,7 +864,7 @@ void HighlightHandler::startHighlight(const QXmlAttributes& attrib) ...@@ -836,7 +864,7 @@ void HighlightHandler::startHighlight(const QXmlAttributes& attrib)
void HighlightHandler::endHighlight() void HighlightHandler::endHighlight()
{ {
addTextNode(); addTextNode();
debug(2,"highlight class=`%s'\n",m_class.data()); debug(2,"highlight class=`%s'\n",m_hlString.data());
m_parent->setDelegate(0); m_parent->setDelegate(0);
} }
...@@ -859,6 +887,11 @@ void HighlightHandler::addTextNode() ...@@ -859,6 +887,11 @@ void HighlightHandler::addTextNode()
} }
} }
IDocIterator *HighlightHandler::codeElements() const
{
return new HighlightIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// CodeLineHandler // CodeLineHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -931,6 +964,12 @@ void CodeLineHandler::addTextNode() ...@@ -931,6 +964,12 @@ void CodeLineHandler::addTextNode()
} }
} }
IDocIterator *CodeLineHandler::codeElements() const
{
return new CodeLineIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ProgramListingHandler // ProgramListingHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -987,6 +1026,13 @@ void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib) ...@@ -987,6 +1026,13 @@ void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib)
m_hasLineNumber=FALSE; m_hasLineNumber=FALSE;
} }
IDocIterator *ProgramListingHandler::codeLines() const
{
return new ProgramListingIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// FormulaHandler // FormulaHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1155,6 +1201,11 @@ void EntryHandler::startParagraph(const QXmlAttributes& attrib) ...@@ -1155,6 +1201,11 @@ void EntryHandler::startParagraph(const QXmlAttributes& attrib)
m_children.append(ph); m_children.append(ph);
} }
IDocIterator *EntryHandler::contents() const
{
return new EntryIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// RowHandler // RowHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1188,6 +1239,11 @@ void RowHandler::startEntry(const QXmlAttributes& attrib) ...@@ -1188,6 +1239,11 @@ void RowHandler::startEntry(const QXmlAttributes& attrib)
m_children.append(eh); m_children.append(eh);
} }
IDocIterator *RowHandler::entries() const
{
return new RowIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// TableHandler // TableHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
...@@ -1235,6 +1291,12 @@ void TableHandler::endCaption() ...@@ -1235,6 +1291,12 @@ void TableHandler::endCaption()
m_caption = m_curString; m_caption = m_curString;
} }
IDocIterator *TableHandler::rows() const
{
return new TableIterator(*this);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// ParagraphHandler // ParagraphHandler
//---------------------------------------------------------------------- //----------------------------------------------------------------------
......
...@@ -162,6 +162,13 @@ class ParagraphHandler : public IDocPara, ...@@ -162,6 +162,13 @@ class ParagraphHandler : public IDocPara,
MarkupHandler *m_markupHandler; MarkupHandler *m_markupHandler;
}; };
class ParagraphIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{
public:
ParagraphIterator(const ParagraphHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing a list item. /*! \brief Node representing a list item.
...@@ -358,6 +365,8 @@ class LinkHandler : public IDocLink, public BaseHandler<LinkHandler> ...@@ -358,6 +365,8 @@ class LinkHandler : public IDocLink, public BaseHandler<LinkHandler>
// IDocLink // IDocLink
virtual Kind kind() const { return Link; } virtual Kind kind() const { return Link; }
virtual QString refId() const { return m_ref; }
virtual QString text() const { return m_text; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -382,6 +391,7 @@ class EMailHandler : public IDocEMail, public BaseHandler<EMailHandler> ...@@ -382,6 +391,7 @@ class EMailHandler : public IDocEMail, public BaseHandler<EMailHandler>
// IDocEMail // IDocEMail
virtual Kind kind() const { return EMail; } virtual Kind kind() const { return EMail; }
virtual QString address() const { return m_address; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -405,6 +415,8 @@ class ULinkHandler : public IDocULink, public BaseHandler<ULinkHandler> ...@@ -405,6 +415,8 @@ class ULinkHandler : public IDocULink, public BaseHandler<ULinkHandler>
// IDocULink // IDocULink
virtual Kind kind() const { return ULink; } virtual Kind kind() const { return ULink; }
virtual QString url() const { return m_url; }
virtual QString text() const { return m_text; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -601,9 +613,10 @@ class VariableListIterator : public BaseIterator<IDocIterator,IDoc,VariableListE ...@@ -601,9 +613,10 @@ class VariableListIterator : public BaseIterator<IDocIterator,IDoc,VariableListE
/*! \brief Node representing a highlighted text fragment. /*! \brief Node representing a highlighted text fragment.
* *
*/ */
// TODO: children: ref // children: ref
class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandler> class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandler>
{ {
friend class HighlightIterator;
public: public:
HighlightHandler(IBaseHandler *parent); HighlightHandler(IBaseHandler *parent);
virtual ~HighlightHandler(); virtual ~HighlightHandler();
...@@ -613,13 +626,23 @@ class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandl ...@@ -613,13 +626,23 @@ class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandl
// IDocHighlight // IDocHighlight
virtual Kind kind() const { return Highlight; } virtual Kind kind() const { return Highlight; }
virtual HighlightKind highlightKind() const { return m_hl; }
virtual IDocIterator *codeElements() const;
private: private:
void addTextNode(); void addTextNode();
IBaseHandler *m_parent; IBaseHandler *m_parent;
QString m_class; HighlightKind m_hl;
QList<IDoc> m_children; QString m_hlString;
QList<IDoc> m_children;
};
class HighlightIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{
public:
HighlightIterator(const HighlightHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
...@@ -630,6 +653,7 @@ class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandl ...@@ -630,6 +653,7 @@ class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandl
// children: linenumber, highlight, anchor, ref // children: linenumber, highlight, anchor, ref
class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler> class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
{ {
friend class CodeLineIterator;
public: public:
virtual void startCodeLine(const QXmlAttributes&); virtual void startCodeLine(const QXmlAttributes&);
...@@ -644,6 +668,9 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler> ...@@ -644,6 +668,9 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
// IDocCodeLine // IDocCodeLine
virtual Kind kind() const { return CodeLine; } virtual Kind kind() const { return CodeLine; }
virtual int lineNumber() const { return m_lineNumber; }
virtual QString refId() const { return m_refId; }
virtual IDocIterator *codeElements() const;
private: private:
void addTextNode(); void addTextNode();
...@@ -654,6 +681,13 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler> ...@@ -654,6 +681,13 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
QList<IDoc> m_children; QList<IDoc> m_children;
}; };
class CodeLineIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{
public:
CodeLineIterator(const CodeLineHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing a program listing /*! \brief Node representing a program listing
...@@ -662,6 +696,7 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler> ...@@ -662,6 +696,7 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
// children: codeline, linenumber // children: codeline, linenumber
class ProgramListingHandler : public IDocProgramListing, public BaseHandler<ProgramListingHandler> class ProgramListingHandler : public IDocProgramListing, public BaseHandler<ProgramListingHandler>
{ {
friend class ProgramListingIterator;
public: public:
virtual void startProgramListing(const QXmlAttributes& attrib); virtual void startProgramListing(const QXmlAttributes& attrib);
virtual void endProgramListing(); virtual void endProgramListing();
...@@ -673,6 +708,7 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler<Prog ...@@ -673,6 +708,7 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler<Prog
// IDocProgramListing // IDocProgramListing
virtual Kind kind() const { return ProgramListing; } virtual Kind kind() const { return ProgramListing; }
virtual IDocIterator *codeLines() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -682,6 +718,15 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler<Prog ...@@ -682,6 +718,15 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler<Prog
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class ProgramListingIterator : public BaseIterator<IDocIterator,IDoc,CodeLineHandler>
{
public:
ProgramListingIterator(const ProgramListingHandler &handler) :
BaseIterator<IDocIterator,IDoc,CodeLineHandler>(handler.m_children) {}
};
//-----------------------------------------------------------------------------
/*! \brief Node representing a formula. /*! \brief Node representing a formula.
* *
*/ */
...@@ -696,6 +741,8 @@ class FormulaHandler : public IDocFormula, public BaseHandler<FormulaHandler> ...@@ -696,6 +741,8 @@ class FormulaHandler : public IDocFormula, public BaseHandler<FormulaHandler>
// IDocFormula // IDocFormula
virtual Kind kind() const { return Formula; } virtual Kind kind() const { return Formula; }
virtual QString id() const { return m_id; }
virtual QString text() const { return m_text; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -719,6 +766,8 @@ class ImageHandler : public IDocImage, public BaseHandler<ImageHandler> ...@@ -719,6 +766,8 @@ class ImageHandler : public IDocImage, public BaseHandler<ImageHandler>
// IDocImage // IDocImage
virtual Kind kind() const { return Image; } virtual Kind kind() const { return Image; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -742,6 +791,8 @@ class DotFileHandler : public IDocDotFile, public BaseHandler<DotFileHandler> ...@@ -742,6 +791,8 @@ class DotFileHandler : public IDocDotFile, public BaseHandler<DotFileHandler>
// IDocDotFile // IDocDotFile
virtual Kind kind() const { return DotFile; } virtual Kind kind() const { return DotFile; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -769,6 +820,8 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa ...@@ -769,6 +820,8 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa
// IDocIndexEntry // IDocIndexEntry
virtual Kind kind() const { return IndexEntry; } virtual Kind kind() const { return IndexEntry; }
virtual QString primary() const { return m_primary; }
virtual QString secondary() const { return m_secondary; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -784,6 +837,7 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa ...@@ -784,6 +837,7 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa
// children: para // children: para
class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler> class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
{ {
friend class EntryIterator;
public: public:
EntryHandler(IBaseHandler *parent); EntryHandler(IBaseHandler *parent);
virtual ~EntryHandler(); virtual ~EntryHandler();
...@@ -793,12 +847,20 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler> ...@@ -793,12 +847,20 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
// IDocEntry // IDocEntry
virtual Kind kind() const { return Entry; } virtual Kind kind() const { return Entry; }
virtual IDocIterator *contents() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<IDoc> m_children; QList<IDoc> m_children;
}; };
class EntryIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{
public:
EntryIterator(const EntryHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing an entry in the table row. /*! \brief Node representing an entry in the table row.
...@@ -807,6 +869,7 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler> ...@@ -807,6 +869,7 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
// children: entry // children: entry
class RowHandler : public IDocRow, public BaseHandler<RowHandler> class RowHandler : public IDocRow, public BaseHandler<RowHandler>
{ {
friend class RowIterator;
public: public:
RowHandler(IBaseHandler *parent); RowHandler(IBaseHandler *parent);
virtual ~RowHandler(); virtual ~RowHandler();
...@@ -816,12 +879,20 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler> ...@@ -816,12 +879,20 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
// IDocRow // IDocRow
virtual Kind kind() const { return Row; } virtual Kind kind() const { return Row; }
virtual IDocIterator *entries() const;
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
QList<EntryHandler> m_children; QList<EntryHandler> m_children;
}; };
class RowIterator : public BaseIterator<IDocIterator,IDoc,EntryHandler>
{
public:
RowIterator(const RowHandler &handler) :
BaseIterator<IDocIterator,IDoc,EntryHandler>(handler.m_children) {}
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/*! \brief Node representing an entry in the table. /*! \brief Node representing an entry in the table.
...@@ -830,6 +901,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler> ...@@ -830,6 +901,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
// children: row, caption // children: row, caption
class TableHandler : public IDocTable, public BaseHandler<TableHandler> class TableHandler : public IDocTable, public BaseHandler<TableHandler>
{ {
friend class TableIterator;
public: public:
TableHandler(IBaseHandler *parent); TableHandler(IBaseHandler *parent);
virtual ~TableHandler(); virtual ~TableHandler();
...@@ -841,6 +913,9 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler> ...@@ -841,6 +913,9 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
// IDocTable // IDocTable
virtual Kind kind() const { return Table; } virtual Kind kind() const { return Table; }
virtual IDocIterator *rows() const;
virtual int numColumns() const { return m_numColumns; }
virtual QString caption() const { return m_caption; }
private: private:
IBaseHandler *m_parent; IBaseHandler *m_parent;
...@@ -849,13 +924,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler> ...@@ -849,13 +924,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
QString m_caption; QString m_caption;
}; };
//----------------------------------------------------------------------------- class TableIterator : public BaseIterator<IDocIterator,IDoc,RowHandler>
class ParagraphIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
{ {
public: public:
ParagraphIterator(const ParagraphHandler &handler) : TableIterator(const TableHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {} BaseIterator<IDocIterator,IDoc,RowHandler>(handler.m_children) {}
}; };
......
...@@ -110,8 +110,8 @@ class IDoc ...@@ -110,8 +110,8 @@ class IDoc
enum Kind enum Kind
{ {
Invalid = 0, // 0 Invalid = 0, // 0
Para, // 1 -> IDocPara Para = 1, // 1 -> IDocPara
Text, // 2 -> IDocText Text = 2, // 2 -> IDocText
MarkupModifier, // 3 -> IDocMarkupModifier MarkupModifier, // 3 -> IDocMarkupModifier
ItemizedList, // 4 -> IDocItemizedList ItemizedList, // 4 -> IDocItemizedList
OrderedList, // 5 -> IDocOrderedList OrderedList, // 5 -> IDocOrderedList
...@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc ...@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc class IDocULink : public IDoc
{ {
public: public:
virtual QString url() = 0; virtual QString url() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocEMail : public IDoc class IDocEMail : public IDoc
{ {
public: public:
virtual QString address() = 0; virtual QString address() const = 0;
}; };
class IDocLink : public IDoc class IDocLink : public IDoc
{ {
public: public:
virtual QString refId() = 0; virtual QString refId() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocProgramListing : public IDoc class IDocProgramListing : public IDoc
{ {
public: public:
virtual IDocIterator *codeLines() = 0; virtual IDocIterator *codeLines() const = 0;
}; };
class IDocCodeLine : public IDoc class IDocCodeLine : public IDoc
{ {
public: public:
virtual int lineNumber() = 0; virtual int lineNumber() const = 0;
virtual QString refId() = 0; virtual QString refId() const = 0;
virtual IDocIterator *codeElements() = 0; virtual IDocIterator *codeElements() const = 0;
}; };
class IDocHighlight : public IDoc class IDocHighlight : public IDoc
...@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc ...@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc
KeywordType, KeywordFlow, CharLiteral, KeywordType, KeywordFlow, CharLiteral,
StringLiteral, Preprocessor StringLiteral, Preprocessor
}; };
virtual HighlightKind highlightKind() = 0; virtual HighlightKind highlightKind() const = 0;
virtual IDocIterator *codeElements() = 0; virtual IDocIterator *codeElements() const = 0;
}; };
class IDocFormula : public IDoc class IDocFormula : public IDoc
{ {
public: public:
virtual QString id() = 0; virtual QString id() const = 0;
virtual QString text() = 0; virtual QString text() const = 0;
}; };
class IDocImage : public IDoc class IDocImage : public IDoc
{ {
public: public:
virtual QString name() = 0; virtual QString name() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocDotFile : public IDoc class IDocDotFile : public IDoc
{ {
public: public:
virtual QString name() = 0; virtual QString name() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocIndexEntry : public IDoc class IDocIndexEntry : public IDoc
{ {
public: public:
virtual QString primary() = 0; virtual QString primary() const = 0;
virtual QString secondary() = 0; virtual QString secondary() const = 0;
}; };
class IDocTable : public IDoc class IDocTable : public IDoc
{ {
public: public:
virtual IDocIterator *rows() = 0; virtual IDocIterator *rows() const = 0;
virtual int numColumns() = 0; virtual int numColumns() const = 0;
virtual QString caption() = 0; virtual QString caption() const = 0;
}; };
class IDocRow : public IDoc class IDocRow : public IDoc
{ {
public: public:
virtual IDocIterator *entries() = 0; virtual IDocIterator *entries() const = 0;
}; };
class IDocEntry : public IDoc class IDocEntry : public IDoc
{ {
public: public:
virtual IDocIterator *contents() = 0; virtual IDocIterator *contents() const = 0;
}; };
class IDocSection : public IDoc class IDocSection : public IDoc
...@@ -388,6 +388,72 @@ class IDocIterator ...@@ -388,6 +388,72 @@ class IDocIterator
virtual void release() = 0; virtual void release() = 0;
}; };
class IEdgeLabel
{
public:
virtual QString label() = 0;
};
class IEdgeLabelIterator
{
public:
virtual IEdgeLabel *toFirst() = 0;
virtual IEdgeLabel *toLast() = 0;
virtual IEdgeLabel *toNext() = 0;
virtual IEdgeLabel *toPrev() = 0;
virtual IEdgeLabel *current() const = 0;
virtual void release() = 0;
};
class IChildNode
{
public:
enum NodeRelation { PublicInheritance, ProtectedInheritance,
PrivateInheritance, Usage, TemplateInstace
};
virtual QString id() const = 0;
virtual NodeRelation relation() const = 0;
virtual IEdgeLabelIterator *edgeLabels() const = 0;
};
class IChildNodeIterator
{
public:
virtual IChildNode *toFirst() = 0;
virtual IChildNode *toLast() = 0;
virtual IChildNode *toNext() = 0;
virtual IChildNode *toPrev() = 0;
virtual IChildNode *current() const = 0;
virtual void release() = 0;
};
class INode
{
public:
virtual QString id() const = 0;
virtual QString label() const = 0;
virtual QString linkId() const = 0;
virtual IChildNodeIterator *children() const = 0;
};
class INodeIterator
{
public:
virtual INode *toFirst() = 0;
virtual INode *toLast() = 0;
virtual INode *toNext() = 0;
virtual INode *toPrev() = 0;
virtual INode *current() const = 0;
virtual void release() = 0;
};
class IGraph
{
public:
virtual INodeIterator *nodes() const = 0;
virtual ~IGraph() {}
};
class IMember class IMember
{ {
public: public:
...@@ -501,6 +567,33 @@ class ICompound ...@@ -501,6 +567,33 @@ class ICompound
* zero, the memory for the compound will be released. * zero, the memory for the compound will be released.
*/ */
virtual void release() = 0; virtual void release() = 0;
// TODO:
// class:
// IRelatedCompoundIterator *baseClasses()
// IRelatedCompoundIterator *derivedClasses()
// ICompoundIterator *innerClasses()
// ITemplateParamListIterator *templateParamLists()
// listOfAllMembers()
// IDotGraph *inheritanceGraph()
// IDotGraph *collaborationGraph()
// locationFile()
// locationLine()
// locationBodyStartLine()
// locationBodyEndLine()
// namespace:
// ICompound *innerNamespaces()
// file:
// includes()
// includedBy()
// IDotGraph *includeDependencyGraph()
// IDotGraph *includedByDependencyGraph()
// IDocProgramListing *source()
// group:
// Title()
// innerFile()
// innerPage()
// page:
}; };
class ICompoundIterator class ICompoundIterator
......
...@@ -4,12 +4,12 @@ HEADERS = basehandler.h mainhandler.h \ ...@@ -4,12 +4,12 @@ HEADERS = basehandler.h mainhandler.h \
compoundhandler.h sectionhandler.h \ compoundhandler.h sectionhandler.h \
memberhandler.h paramhandler.h \ memberhandler.h paramhandler.h \
dochandler.h linkedtexthandler.h \ dochandler.h linkedtexthandler.h \
debug.h debug.h graphhandler.h
SOURCES = mainhandler.cpp \ SOURCES = mainhandler.cpp \
compoundhandler.cpp sectionhandler.cpp \ compoundhandler.cpp sectionhandler.cpp \
memberhandler.cpp paramhandler.cpp \ memberhandler.cpp paramhandler.cpp \
dochandler.cpp linkedtexthandler.cpp \ dochandler.cpp linkedtexthandler.cpp \
basehandler.cpp debug.cpp basehandler.cpp debug.cpp graphhandler.cpp
unix:LIBS += -L../../../lib -lqtools unix:LIBS += -L../../../lib -lqtools
win32:INCLUDEPATH += . win32:INCLUDEPATH += .
win32-mingw:LIBS += -L../../../lib -lqtools win32-mingw:LIBS += -L../../../lib -lqtools
......
#include "graphhandler.h"
GraphHandler::GraphHandler(IBaseHandler *parent,const char *endTag)
: m_parent(parent)
{
addEndHandler(endTag,this,&GraphHandler::endGraph);
addStartHandler("node",this,&GraphHandler::startNode);
m_nodes.setAutoDelete(TRUE);
}
GraphHandler::~GraphHandler()
{
}
void GraphHandler::startGraph(const QXmlAttributes &)
{
m_parent->setDelegate(this);
}
void GraphHandler::endGraph()
{
m_parent->setDelegate(0);
}
void GraphHandler::startNode(const QXmlAttributes &attrib)
{
NodeHandler *n = new NodeHandler(this);
n->startNode(attrib);
m_nodes.append(n);
}
INodeIterator *GraphHandler::nodes() const
{
return new NodeIterator(*this);
}
//------------------------------------------------------------------------
NodeHandler::NodeHandler(IBaseHandler *parent)
: m_parent(parent)
{
addEndHandler("node",this,&NodeHandler::endNode);
addStartHandler("link",this,&NodeHandler::startLink);
addEndHandler("link",this,&NodeHandler::endLink);
addStartHandler("label",this,&NodeHandler::startLabel);
addEndHandler("label",this,&NodeHandler::endLabel);
}
NodeHandler::~NodeHandler()
{
}
void NodeHandler::startNode(const QXmlAttributes &attrib)
{
m_parent->setDelegate(this);
m_id = attrib.value("id");
}
void NodeHandler::endNode()
{
m_parent->setDelegate(0);
}
void NodeHandler::startLink(const QXmlAttributes &attrib)
{
m_link = attrib.value("id");
}
void NodeHandler::endLink()
{
}
void NodeHandler::startLabel(const QXmlAttributes &/*attrib*/)
{
m_curString="";
}
void NodeHandler::endLabel()
{
m_label = m_curString;
}
/******************************************************************************
*
* $Id$
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
*/
#ifndef _GRAPHHANDLER_H
#define _GRAPHHANDLER_H
#include "doxmlintf.h"
#include "basehandler.h"
#include "baseiterator.h"
class NodeHandler;
class ChildNodeHandler;
class GraphHandler : public IGraph, public BaseHandler<GraphHandler>
{
friend class NodeIterator;
public:
GraphHandler(IBaseHandler *parent,const char *endTag);
virtual ~GraphHandler();
void startGraph(const QXmlAttributes &attrib);
void endGraph();
void startNode(const QXmlAttributes &attrib);
// IGraph
virtual INodeIterator *nodes() const;
private:
IBaseHandler *m_parent;
QList<NodeHandler> m_nodes;
};
//----------------------------------------------------------------------
class NodeHandler : public INode, public BaseHandler<NodeHandler>
{
friend class ChildNodeIterator;
public:
NodeHandler(IBaseHandler *parent);
virtual ~NodeHandler();
void startNode(const QXmlAttributes &attrib);
void endNode();
void startLabel(const QXmlAttributes &attrib);
void endLabel();
void startLink(const QXmlAttributes &attrib);
void endLink();
// INode
virtual QString id() const { return m_id; }
virtual QString label() const { return m_label; }
virtual QString linkId() const { return m_link; }
virtual IChildNodeIterator *children() const { return 0; } // TODO: implement
private:
IBaseHandler *m_parent;
QString m_id;
QString m_label;
QString m_link;
QList<ChildNodeHandler> m_children;
};
class NodeIterator : public BaseIterator<INodeIterator,INode,NodeHandler>
{
public:
NodeIterator(const GraphHandler &handler) :
BaseIterator<INodeIterator,INode,NodeHandler>(handler.m_nodes) {}
};
//----------------------------------------------------------------------
class ChildNodeHandler : public IChildNode, public BaseHandler<ChildNodeHandler>
{
public:
ChildNodeHandler(IBaseHandler *parent);
virtual ~ChildNodeHandler();
void startChildNode(const QXmlAttributes &attrib);
void endChildNode();
// IChildNode
virtual QString id() const { return m_id; }
private:
IBaseHandler *m_parent;
QString m_id;
};
class ChildNodeIterator : public BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>
{
public:
ChildNodeIterator(const NodeHandler &handler) :
BaseIterator<IChildNodeIterator,IChildNode,ChildNodeHandler>(handler.m_children) {}
};
#endif
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <qxml.h> #include <qxml.h>
#include "mainhandler.h" #include "mainhandler.h"
#include "compoundhandler.h" #include "compoundhandler.h"
#include "sectionhandler.h"
#include "debug.h" #include "debug.h"
class ErrorHandler : public QXmlErrorHandler class ErrorHandler : public QXmlErrorHandler
......
...@@ -234,12 +234,6 @@ void DumpDoc(IDoc *doc) ...@@ -234,12 +234,6 @@ void DumpDoc(IDoc *doc)
ASSERT(hl!=0); ASSERT(hl!=0);
} }
break; break;
case IDoc::Anchor:
{
IDocAnchor *anc = dynamic_cast<IDocAnchor*>(anc);
ASSERT(anc!=0);
}
break;
case IDoc::Formula: case IDoc::Formula:
{ {
IDocFormula *fm = dynamic_cast<IDocFormula*>(fm); IDocFormula *fm = dynamic_cast<IDocFormula*>(fm);
......
...@@ -14,6 +14,7 @@ DESTDIR = ...@@ -14,6 +14,7 @@ DESTDIR =
OBJECTS_DIR = ../objects OBJECTS_DIR = ../objects
TARGET = xmlparse TARGET = xmlparse
INCLUDEPATH += ../../../qtools ../include INCLUDEPATH += ../../../qtools ../include
DEPENDPATH += ../include
unix:TARGETDEPS = ../lib/libdoxmlparser.a unix:TARGETDEPS = ../lib/libdoxmlparser.a
win32:TARGETDEPS = ..\lib\doxmlparser.lib win32:TARGETDEPS = ..\lib\doxmlparser.lib
# #
# #
# #
# Copyright (C) 1997-2001 by Dimitri van Heesch. # Copyright (C) 1997-2002 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
# #
# #
# #
# Copyright (C) 1997-2001 by Dimitri van Heesch. # Copyright (C) 1997-2002 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
# #
# #
# #
# Copyright (C) 1997-2001 by Dimitri van Heesch. # Copyright (C) 1997-2002 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
# #
# #
# #
# Copyright (C) 1997-2001 by Dimitri van Heesch. # Copyright (C) 1997-2002 by Dimitri van Heesch.
# #
# Permission to use, copy, modify, and distribute this software and its # Permission to use, copy, modify, and distribute this software and its
# documentation under the terms of the GNU General Public License is hereby # documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
% %
% %
% %
% Copyright (C) 1997-2001 by Dimitri van Heesch. % Copyright (C) 1997-2002 by Dimitri van Heesch.
% %
% Permission to use, copy, modify, and distribute this software and its % Permission to use, copy, modify, and distribute this software and its
% documentation under the terms of the GNU General Public License is hereby % documentation under the terms of the GNU General Public License is hereby
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
{\fancyplain{}{\bfseries\rightmark}} {\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}] \rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}} {\fancyplain{}{\bfseries\thepage}}
\rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2001}]{} \rfoot[\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2002}]{}
\lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2001}} \lfoot[]{\fancyplain{}{\bfseries\scriptsize User Manual for Doxygen $VERSION, written by Dimitri van Heesch \copyright 1997-2002}}
\cfoot{} \cfoot{}
\newenvironment{CompactList} \newenvironment{CompactList}
{\begin{list}{}{ {\begin{list}{}{
......
% %
% %
% %
% Copyright (C) 1997-2001 by Dimitri van Heesch. % Copyright (C) 1997-2002 by Dimitri van Heesch.
% %
% Permission to use, copy, modify, and distribute this software and its % Permission to use, copy, modify, and distribute this software and its
% documentation under the terms of the GNU General Public License is hereby % documentation under the terms of the GNU General Public License is hereby
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
\begin{center} \begin{center}
Manual for version $VERSION\\[2ex] Manual for version $VERSION\\[2ex]
Written by Dimitri van Heesch\\[2ex] Written by Dimitri van Heesch\\[2ex]
\copyright 1997-2001 \copyright 1997-2002
\end{center} \end{center}
\end{titlepage} \end{titlepage}
\clearemptydoublepage \clearemptydoublepage
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -218,7 +218,7 @@ Qt had nicely generated documentation (using an internal tool which ...@@ -218,7 +218,7 @@ Qt had nicely generated documentation (using an internal tool which
they didn't want to release) and I wrote similar docs by hand. they didn't want to release) and I wrote similar docs by hand.
This was a nightmare to maintain, so I wanted a similar tool. I looked at This was a nightmare to maintain, so I wanted a similar tool. I looked at
Doc++ but that just wasn't good enough (it didn't support signals and Doc++ but that just wasn't good enough (it didn't support signals and
slots and did have the Qt look and feel I have grown to like), slots and did not have the Qt look and feel I had grown to like),
so I started to write my own tool... so I started to write my own tool...
</ol> </ol>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -115,5 +115,11 @@ The special HTML character entities that are recognized by Doxygen: ...@@ -115,5 +115,11 @@ The special HTML character entities that are recognized by Doxygen:
<li>\c &nbsp; a non breakable space. <li>\c &nbsp; a non breakable space.
</ul> </ul>
Finally, to put invisible comments inside comment blocks, HTML style
comments can be used:
\verbatim
/*! <!-- This is a comment with a comment block --> Visible text */
\endverbatim
*/ */
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -25,25 +25,6 @@ Version: $(VERSION) ...@@ -25,25 +25,6 @@ Version: $(VERSION)
</center> </center>
\endif \endif
<h2>Doxygen license</h2>
\addindex license
\addindex GPL
Copyright &copy; 1997-2001 by
<a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.<p>
Permission to use, copy, modify, and distribute this software and its
documentation under the terms of the GNU General Public License is hereby
granted. No representations are made about the suitability of this software
for any purpose. It is provided "as is" without express or implied warranty.
See the
<a href="http://www.gnu.org/copyleft/gpl.html">
GNU General Public License</a>
for more details.
<p>
Documents produced by doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
<h2>Introduction</h2> <h2>Introduction</h2>
Doxygen is a documentation system for C++, Java, IDL Doxygen is a documentation system for C++, Java, IDL
(Corba, Microsoft and KDE-DCOP flavors) and C. (Corba, Microsoft and KDE-DCOP flavors) and C.
...@@ -70,8 +51,8 @@ It can help you in three ways: ...@@ -70,8 +51,8 @@ It can help you in three ways:
Doxygen is developed under <a href="http://www.linux.org">Linux</a>, Doxygen is developed under <a href="http://www.linux.org">Linux</a>,
but is set-up to be highly portable. As a result, it runs on most but is set-up to be highly portable. As a result, it runs on most
other Unix flavors as well. Furthermore, an executable for other Unix flavors as well. Furthermore, executables for
Windows 9x/NT is also available. Windows 9x/NT and Mac OS X are available.
This manual is divided into three parts, each of which is divided into several This manual is divided into three parts, each of which is divided into several
sections. sections.
...@@ -128,6 +109,25 @@ The third part provides information for developers: ...@@ -128,6 +109,25 @@ The third part provides information for developers:
output languages. output languages.
</ul> </ul>
<h2>Doxygen license</h2>
\addindex license
\addindex GPL
Copyright &copy; 1997-2002 by
<a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.<p>
Permission to use, copy, modify, and distribute this software and its
documentation under the terms of the GNU General Public License is hereby
granted. No representations are made about the suitability of this software
for any purpose. It is provided "as is" without express or implied warranty.
See the
<a href="http://www.gnu.org/copyleft/gpl.html">
GNU General Public License</a>
for more details.
<p>
Documents produced by doxygen are derivative works derived from the
input used in their production; they are not affected by this license.
<h2>Projects using doxygen</h2> <h2>Projects using doxygen</h2>
I have compiled a I have compiled a
...@@ -165,20 +165,19 @@ Thanks go to: ...@@ -165,20 +165,19 @@ Thanks go to:
<li>My brother <a href="http://www.stack.nl/~fidget/index.html">Frank</a> <li>My brother <a href="http://www.stack.nl/~fidget/index.html">Frank</a>
for rendering the logos. for rendering the logos.
<li>Harm van der Heijden for adding HTML help support. <li>Harm van der Heijden for adding HTML help support.
<li>Wouter Slegers for registering the www.doxygen.org domain. <li>Wouter Slegers of
<a href="http://www.yourcreativesolutions.nl">Your Creative Solutions</a>
for registering the www.doxygen.org domain.
<li>Parker Waechter for adding the RTF output generator. <li>Parker Waechter for adding the RTF output generator.
<li>Joerg Baumann, for adding conditional documentation blocks, <li>Joerg Baumann, for adding conditional documentation blocks,
PDF links, and the configuration generator. PDF links, and the configuration generator.
<li>Matthias Andree for providing a .spec script for building rpms from the <li>Matthias Andree for providing a .spec script for building rpms from the
sources. sources.
<li>Tim Mensch for adding the todo command. <li>Tim Mensch for adding the todo command.
<li>Christian Hammond for redesigning the web-site.
<li>Ken Wong for providing the HTML tree view code. <li>Ken Wong for providing the HTML tree view code.
<li>Jens Breitenstein, Christophe Bordeaux, Samuel Hägglund, Xet Erixon, <li>Petr Prikryl for coordinating the internationalisation support.
Vlastimil Havran, Petr Prikryl, Ahmed Also Faisal, Alessandro Falappa, All language maintainers for providing translations into many languages.
Kenji Nagamatsu, Francisco Oltra Thennet, Olli Korhonen,
Boris Bralo, Nickolay Semyonov, Richard Kim, Földvári György,
Grzegorz Kowal, and Wang Weihan
for providing translations into various languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a> for <li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a> for
donating money. donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* Do not edit this file. Edit the above mentioned files! * Do not edit this file. Edit the above mentioned files!
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means ...@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time. languages other than English (the default) at configuration time.
Currently (version 1.2.13-20020210), 25 languages Currently (version 1.2.14-20020224), 25 languages
are supported (sorted alphabetically): are supported (sorted alphabetically):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German, Dutch, English, Finnish, French, German,
...@@ -72,7 +72,7 @@ when the translator was updated. ...@@ -72,7 +72,7 @@ when the translator was updated.
<TD>Czech</TD> <TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD> <TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD> <TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.2.13</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Danish</TD> <TD>Danish</TD>
...@@ -143,7 +143,7 @@ when the translator was updated. ...@@ -143,7 +143,7 @@ when the translator was updated.
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Norwegian</TD> <TD>Norwegian</TD>
<TD>Lars Erik Jordet</TD> <TD>Lars Erik Jordet</TD>
<TD>larsej@NOSPAM.stud.ifd.hibu.no</TD> <TD>lej@NOSPAM.circuitry.no</TD>
<TD>1.2.2</TD> <TD>1.2.2</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -156,7 +156,7 @@ when the translator was updated. ...@@ -156,7 +156,7 @@ when the translator was updated.
<TD>Portuguese</TD> <TD>Portuguese</TD>
<TD>Rui Godinho Lopes</TD> <TD>Rui Godinho Lopes</TD>
<TD>ruiglopes@NOSPAM.yahoo.com</TD> <TD>ruiglopes@NOSPAM.yahoo.com</TD>
<TD>1.2.13</TD> <TD>up-to-date</TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD>Romanian</TD> <TD>Romanian</TD>
...@@ -218,7 +218,7 @@ when the translator was updated. ...@@ -218,7 +218,7 @@ when the translator was updated.
\hline \hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\hline \hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & 1.2.13 \\ Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline \hline
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\ Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\
\hline \hline
...@@ -245,11 +245,11 @@ when the translator was updated. ...@@ -245,11 +245,11 @@ when the translator was updated.
\hline \hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\ Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\
\hline \hline
Norwegian & Lars Erik Jordet & {\tt larsej@stud.ifd.hibu.no} & 1.2.2 \\ Norwegian & Lars Erik Jordet & {\tt lej@circuitry.no} & 1.2.2 \\
\hline \hline
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\ Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\
\hline \hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.13 \\ Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
\hline \hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\ Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\
\hline \hline
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* Edit manually this file, not the language.doc!</notice> * Edit manually this file, not the language.doc!</notice>
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -51,7 +51,7 @@ Korean ...@@ -51,7 +51,7 @@ Korean
Richard Kim: ryk@dspwiz.com Richard Kim: ryk@dspwiz.com
Norwegian Norwegian
Lars Erik Jordet: larsej@stud.ifd.hibu.no Lars Erik Jordet: lej@circuitry.no
Polish Polish
Grzegorz Kowal: g_kowal@poczta.onet.pl Grzegorz Kowal: g_kowal@poczta.onet.pl
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* *
* *
* Copyright (C) 1997-2001 by Dimitri van Heesch. * Copyright (C) 1997-2002 by Dimitri van Heesch.
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.14_20020224 Version: 1.2.14_20020310
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
...@@ -881,9 +881,10 @@ void Config::check() ...@@ -881,9 +881,10 @@ void Config::check()
if (p) if (p)
{ {
char c; char c;
while ((c=*p++)) while ((c=*p))
{ {
if (c=='\\') c='/'; if (c=='\\') *p='/';
p++;
} }
} }
QCString path = sfp; QCString path = sfp;
......
...@@ -752,13 +752,30 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) ...@@ -752,13 +752,30 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
else else
{ {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: could not write output image %s",outputFile.data()); "Warning: could not write output image %s",outputFile.data());
} }
} }
else else
{ {
warn(yyFileName,yyLineNr, warn(yyFileName,yyLineNr,
"Warning: could not open image %s",fileName); "Warning: could not open image %s",fileName);
}
if (type==IT_Latex && Config_getBool("USE_PDFLATEX") &&
fd->name().right(4)==".eps"
)
{ // we have an .eps image in pdflatex mode => convert it to a pdf.
QCString outputDir = Config_getString("LATEX_OUTPUT");
QCString baseName = fd->name().left(fd->name().length()-4);
QCString epstopdfArgs(4096);
epstopdfArgs.sprintf("\"%s/%s.eps\" --outfile=\"%s/%s.pdf\"",
outputDir.data(), baseName.data(),
outputDir.data(), baseName.data());
if (iSystem("epstopdf",epstopdfArgs,TRUE)!=0)
{
err("Error: Problems running epstopdf. Check your TeX installation!\n");
}
return baseName;
} }
} }
else if (ambig) else if (ambig)
...@@ -1202,13 +1219,13 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -1202,13 +1219,13 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocScan>{CMD}"link"/{BN} { BEGIN( DocLink ); } <DocScan>{CMD}"link"/{BN} { BEGIN( DocLink ); }
<DocScan>"{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); } <DocScan>"{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); }
<DocSkipWord>[a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); } <DocSkipWord>[a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); }
<DocLink>[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+ { // TODO: support operators as well! <DocLink>[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? { // TODO: support operators as well!
linkRef = stripKnownExtensions(yytext); linkRef = stripKnownExtensions(yytext);
linkText = ""; linkText = "";
BEGIN( DocLinkText ); BEGIN( DocLinkText );
} }
<DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ } <DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ }
<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well! <DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")?({B}*("const"|"volatile"))? { // TODO: support operators as well!
linkRef = yytext; linkRef = yytext;
linkText = ""; linkText = "";
BEGIN( DocJavaLinkText ); BEGIN( DocJavaLinkText );
...@@ -2076,7 +2093,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2076,7 +2093,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
} }
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")" { <DocScan,DocRefName>{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")"({B}*("const"|"volatile"))? {
if (!insideHtmlLink) if (!insideHtmlLink)
{ {
generateRef(*outDoc,className,yytext,inSeeBlock); generateRef(*outDoc,className,yytext,inSeeBlock);
...@@ -2087,7 +2104,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2087,7 +2104,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
} }
BEGIN(DocScan); BEGIN(DocScan);
} }
<DocScan,DocRefName>{SCOPEMASK}("()")? { <DocScan,DocRefName>{SCOPEMASK}("()"({B}*("const"|"volatile"))?)? {
if (!insideHtmlLink) if (!insideHtmlLink)
{ {
generateRef(*outDoc,className,yytext,inSeeBlock); generateRef(*outDoc,className,yytext,inSeeBlock);
...@@ -2617,7 +2634,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG}) ...@@ -2617,7 +2634,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
{ {
outDoc->newParagraph(); outDoc->newParagraph();
} }
if (ib) endBlock(); if (ib && currentListIndent.top()=="P")
{ // inside paragraph block
endBlock();
}
} }
} }
<DocScan>{BN}+/\n { <DocScan>{BN}+/\n {
......
...@@ -3909,7 +3909,8 @@ static void findMember(Entry *root, ...@@ -3909,7 +3909,8 @@ static void findMember(Entry *root,
int count=0; int count=0;
MemberNameIterator mni(*mn); MemberNameIterator mni(*mn);
MemberDef *md; MemberDef *md;
for (mni.toFirst();(md=mni.current());++mni) bool memFound=FALSE;
for (mni.toFirst();!memFound && (md=mni.current());++mni)
{ {
ClassDef *cd=md->getClassDef(); ClassDef *cd=md->getClassDef();
Debug::print(Debug::FindMembers,0, Debug::print(Debug::FindMembers,0,
...@@ -3993,13 +3994,64 @@ static void findMember(Entry *root, ...@@ -3993,13 +3994,64 @@ static void findMember(Entry *root,
bool ambig; bool ambig;
FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig); FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// list of namespaces using in the file that this member definition is part of
NamespaceList *nl = 0; // list of namespaces using in the file/namespace that this
if (nd) nl = nd->getUsedNamespaces(); // member definition is part of
else if (fd) nl = fd->getUsedNamespaces(); NamespaceList *nl = new NamespaceList;
ClassList *cl = 0; if (nd)
if (nd) cl = nd->getUsedClasses(); {
else if (fd) cl = fd->getUsedClasses(); NamespaceList *nnl = nd->getUsedNamespaces();
if (nnl)
{
NamespaceDef *nnd = nnl->first();
while (nnd)
{
nl->append(nnd);
nnd = nnl->next();
}
}
}
if (fd)
{
NamespaceList *fnl = fd->getUsedNamespaces();
if (fnl)
{
NamespaceDef *fnd = fnl->first();
while (fnd)
{
nl->append(fnd);
fnd = fnl->next();
}
}
}
ClassList *cl = new ClassList;
if (nd)
{
ClassList *ncl = nd->getUsedClasses();
if (ncl)
{
ClassDef *ncd = ncl->first();
while (ncd)
{
cl->append(ncd);
ncd = ncl->next();
}
}
}
if (fd)
{
ClassList *fcl = fd->getUsedClasses();
if (fcl)
{
ClassDef *fcd = fcl->first();
while (fcd)
{
cl->append(fcd);
fcd = fcl->next();
}
}
}
bool matching= bool matching=
md->isVariable() || md->isTypedef() || // needed for function pointers md->isVariable() || md->isTypedef() || // needed for function pointers
...@@ -4038,8 +4090,10 @@ static void findMember(Entry *root, ...@@ -4038,8 +4090,10 @@ static void findMember(Entry *root,
// root->inLine,md->isInline()); // root->inLine,md->isInline());
addMemberDocs(root,md,funcDecl,0,overloaded,nl); addMemberDocs(root,md,funcDecl,0,overloaded,nl);
count++; count++;
break; memFound=TRUE;
} }
delete cl;
delete nl;
} }
} }
if (count==0 && !(isFriend && funcType=="class")) if (count==0 && !(isFriend && funcType=="class"))
...@@ -6565,13 +6619,19 @@ void readConfiguration(int argc, char **argv) ...@@ -6565,13 +6619,19 @@ void readConfiguration(int argc, char **argv)
else else
{ {
Config::instance()->init(); Config::instance()->init();
setTranslator("English");
} }
if (optind+3>=argc) if (optind+3>=argc)
{ {
err("Error: option \"-w html\" does not have enough arguments\n"); err("Error: option \"-w html\" does not have enough arguments\n");
exit(1); exit(1);
} }
QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
if (!setTranslator(outputLanguage))
{
err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data());
}
QFile f; QFile f;
if (openOutputFile(argv[optind+1],f)) if (openOutputFile(argv[optind+1],f))
{ {
...@@ -6605,13 +6665,19 @@ void readConfiguration(int argc, char **argv) ...@@ -6605,13 +6665,19 @@ void readConfiguration(int argc, char **argv)
else // use default config else // use default config
{ {
Config::instance()->init(); Config::instance()->init();
setTranslator("English");
} }
if (optind+2>=argc) if (optind+2>=argc)
{ {
err("Error: option \"-w html\" does not have enough arguments\n"); err("Error: option \"-w latex\" does not have enough arguments\n");
exit(1); exit(1);
} }
QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
if (!setTranslator(outputLanguage))
{
err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data());
}
QFile f; QFile f;
if (openOutputFile(argv[optind+1],f)) if (openOutputFile(argv[optind+1],f))
{ {
...@@ -6713,7 +6779,7 @@ void readConfiguration(int argc, char **argv) ...@@ -6713,7 +6779,7 @@ void readConfiguration(int argc, char **argv)
Config::instance()->check(); Config::instance()->check();
initWarningFormat(); initWarningFormat();
QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE"); QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
if (!outputLanguage.isEmpty() && !setTranslator(outputLanguage)) if (!setTranslator(outputLanguage))
{ {
err("Error: Output language %s not supported! Using English instead.\n", err("Error: Output language %s not supported! Using English instead.\n",
outputLanguage.data()); outputLanguage.data());
...@@ -7335,13 +7401,13 @@ void generateOutput() ...@@ -7335,13 +7401,13 @@ void generateOutput()
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME")) theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
); );
outputList->writeStyleInfo(1); // write second part outputList->writeStyleInfo(1); // write second part
parseText(*outputList,theTranslator->trWrittenBy()); //parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part outputList->writeStyleInfo(2); // write third part
parseText(*outputList, parseText(*outputList,
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME")) theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
); );
outputList->writeStyleInfo(3); // write fourth part outputList->writeStyleInfo(3); // write fourth part
parseText(*outputList,theTranslator->trWrittenBy()); //parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part outputList->writeStyleInfo(4); // write last part
outputList->enableAll(); outputList->enableAll();
......
...@@ -181,14 +181,16 @@ void HtmlGenerator::writeHeaderFile(QFile &file) ...@@ -181,14 +181,16 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void HtmlGenerator::writeFooterFile(QFile &file) void HtmlGenerator::writeFooterFile(QFile &file)
{ {
QTextStream t(&file); QTextStream t(&file);
t << "<hr><address><small>\n"; t << "<hr><address align=\"right\"><small>\n";
t << theTranslator->trGeneratedAt( "$datetime", "$projectname" ); t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
t << " <a href=\"http://www.doxygen.org/index.html\">\n" t << " <a href=\"http://www.doxygen.org/index.html\">\n"
<< "<img src=\"doxygen.png\" alt=\"doxygen\" " << "<img src=\"doxygen.png\" alt=\"doxygen\" "
<< "align=\"middle\" border=0 width=110 height=53>\n" << "align=\"middle\" border=0 width=110 height=53>\n"
<< "</a> $doxygenversion " << theTranslator->trWrittenBy() << "</a> $doxygenversion";
<< " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n" // << " " << theTranslator->trWrittenBy()
<< " &copy;&nbsp;1997-2002</small></address>\n" // << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
// << " &copy;&nbsp;1997-2002"
t << "</small></address>\n"
<< "</body>\n" << "</body>\n"
<< "</html>\n"; << "</html>\n";
} }
...@@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external) ...@@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
{ {
case 0: case 0:
if (g_footer.isEmpty()) if (g_footer.isEmpty())
t << "<hr><address><small>"; t << "<hr><address align=\"right\"><small>";
else else
t << substituteKeywords(g_footer,convertToHtml(lastTitle)); t << substituteKeywords(g_footer,convertToHtml(lastTitle));
break; break;
...@@ -280,8 +282,10 @@ void HtmlGenerator::writeFooter(int part,bool external) ...@@ -280,8 +282,10 @@ void HtmlGenerator::writeFooter(int part,bool external)
break; break;
default: default:
if (g_footer.isEmpty()) if (g_footer.isEmpty())
t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;" {
"1997-2002</small></address>\n</body>\n</html>\n"; //t << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n &copy;&nbsp;1997-2002";
t << "</small></address>\n</body>\n</html>\n";
}
break; break;
} }
......
...@@ -340,10 +340,10 @@ void endFile(OutputList &ol,bool external) ...@@ -340,10 +340,10 @@ void endFile(OutputList &ol,bool external)
)); ));
} }
ol.writeFooter(1,external); // write the link to the picture ol.writeFooter(1,external); // write the link to the picture
if (Config_getString("HTML_FOOTER").isEmpty()) //if (Config_getString("HTML_FOOTER").isEmpty())
{ //{
parseText(ol,theTranslator->trWrittenBy()); // parseText(ol,theTranslator->trWrittenBy());
} //}
ol.writeFooter(2,external); // end the footer ol.writeFooter(2,external); // end the footer
ol.popGeneratorState(); ol.popGeneratorState();
ol.endFile(); ol.endFile();
...@@ -2228,7 +2228,10 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level) ...@@ -2228,7 +2228,10 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
ftvHelp = FTVHelp::getInstance(); ftvHelp = FTVHelp::getInstance();
} }
if (!gd->visited && (!gd->isASubGroup() || level>0)) /* Some groups should appear twice under different parent-groups.
* That is why we should not check if it was visited
*/
if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0))
{ {
//printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers()); //printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info // write group info
...@@ -2503,7 +2506,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level) ...@@ -2503,7 +2506,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
if (htmlHelp) htmlHelp->decContentsDepth(); if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth(); if (ftvHelp) ftvHelp->decContentsDepth();
gd->visited=TRUE; //gd->visited=TRUE;
} }
} }
......
...@@ -407,12 +407,14 @@ void LatexGenerator::writeStyleSheetFile(QFile &f) ...@@ -407,12 +407,14 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
QCString &projectName = Config_getString("PROJECT_NAME"); QCString &projectName = Config_getString("PROJECT_NAME");
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName ); t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen " << theTranslator->trWrittenBy() << " "; t << " doxygen";
t << "Dimitri van Heesch \\copyright~1997-2002"; //t << " " << theTranslator->trWrittenBy() << " ";
//t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart2(t); writeDefaultStyleSheetPart2(t);
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName ); t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen " << theTranslator->trWrittenBy() << " "; t << " doxygen";
t << "Dimitri van Heesch \\copyright~1997-2002"; //t << " << theTranslator->trWrittenBy() << " ";
//t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t); writeDefaultStyleSheetPart3(t);
} }
...@@ -824,14 +826,14 @@ void LatexGenerator::writeStyleInfo(int part) ...@@ -824,14 +826,14 @@ void LatexGenerator::writeStyleInfo(int part)
break; break;
case 2: case 2:
{ {
t << " Dimitri van Heesch \\copyright~1997-2002"; //t << " Dimitri van Heesch \\copyright~1997-2002";
t << "}]{}\n"; t << "}]{}\n";
writeDefaultStyleSheetPart2(t); writeDefaultStyleSheetPart2(t);
} }
break; break;
case 4: case 4:
{ {
t << " Dimitri van Heesch \\copyright~1997-2002"; //t << " Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t); writeDefaultStyleSheetPart3(t);
endPlainFile(); endPlainFile();
} }
......
...@@ -99,7 +99,7 @@ void PngEncoder::write(const char *name) ...@@ -99,7 +99,7 @@ void PngEncoder::write(const char *name)
png_palette[i].green = palette[i].green; png_palette[i].green = palette[i].green;
png_palette[i].blue = palette[i].blue; png_palette[i].blue = palette[i].blue;
} }
png_set_PLTE(png_ptr, info_ptr, png_palette, PNG_MAX_PALETTE_LENGTH); png_set_PLTE(png_ptr, info_ptr, png_palette, numOfColors);
png_set_IHDR( png_ptr, info_ptr, width, height, bit_depth, png_set_IHDR( png_ptr, info_ptr, width, height, bit_depth,
PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE, PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE
......
...@@ -2859,7 +2859,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -2859,7 +2859,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->brief+=' '; current->brief+=' ';
lineCount(); lineCount();
} }
<JavaDoc>".\\"/[ \t\r\n] { <JavaDoc,AfterDocBrief>".\\"/[ \t\r\n] {
current->brief+="."; current->brief+=".";
} }
<JavaDoc>"."[ \t\r\n] { <JavaDoc>"."[ \t\r\n] {
......
...@@ -135,6 +135,9 @@ ...@@ -135,6 +135,9 @@
// - trImplementedFromList() and trImplementedInList() implemented // - trImplementedFromList() and trImplementedInList() implemented
// (new since 1.2.13) // (new since 1.2.13)
// //
// 2002/03/05
// - ... forgot to replace TranslatorAdapter... base class by Translator.
//
// Todo // Todo
// ---- // ----
// - The trReimplementedFromList() should pass the kind of the // - The trReimplementedFromList() should pass the kind of the
...@@ -154,7 +157,7 @@ ...@@ -154,7 +157,7 @@
// probably slightly faster. // probably slightly faster.
class TranslatorCzech : public TranslatorAdapter_1_2_13 class TranslatorCzech : public Translator
{ {
private: private:
/*! The decode() inline assumes the source written in the /*! The decode() inline assumes the source written in the
......
...@@ -15,9 +15,12 @@ ...@@ -15,9 +15,12 @@
* *
* The translation into Portuguese was provided by * The translation into Portuguese was provided by
* Rui Godinho Lopes <ruiglopes@yahoo.com> * Rui Godinho Lopes <ruiglopes@yahoo.com>
* http://www.ruilopes.com
* *
* VERSION HISTORY * VERSION HISTORY
* --------------- * ---------------
* 004 03 march 2002
* ! Updated for doxygen v1.2.14
* 003 23 november 2001 * 003 23 november 2001
* - Removed some obsolete methods (latexBabelPackage, trAuthor, trAuthors and trFiles) * - Removed some obsolete methods (latexBabelPackage, trAuthor, trAuthors and trFiles)
* 002 19 november 2001 * 002 19 november 2001
...@@ -31,7 +34,7 @@ ...@@ -31,7 +34,7 @@
#ifndef TRANSLATOR_PT_H #ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H #define TRANSLATOR_PT_H
class TranslatorPortuguese : public TranslatorAdapter_1_2_13 class TranslatorPortuguese : public Translator
{ {
public: public:
...@@ -1048,7 +1051,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13 ...@@ -1048,7 +1051,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
"\\endcode\n" "\\endcode\n"
"Se no ficheiro de configuração estiver a tag \\c MAX_DOT_GRAPH_HEIGHT " "Se no ficheiro de configuração estiver a tag \\c MAX_DOT_GRAPH_HEIGHT "
"com o valor de 200 então o seguinte grafo será gerado:" "com o valor de 200 então o seguinte grafo será gerado:"
"<p><center><img src=\"graph_legend.png\"></center>\n" "<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n" "<p>\n"
"As caixas no grafo anterior têm as seguintes interpretações:\n" "As caixas no grafo anterior têm as seguintes interpretações:\n"
"<ul>\n" "<ul>\n"
...@@ -1345,6 +1348,26 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13 ...@@ -1345,6 +1348,26 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
return "Referências"; return "Referências";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual QCString trImplementedFromList(int numEntries)
{
return "Implementa "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
* all members that implement this abstract member.
*/
virtual QCString trImplementedInList(int numEntries)
{
return "Implementado em "+trWriteList(numEntries)+".";
}
}; };
#endif #endif
...@@ -1999,7 +1999,8 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -1999,7 +1999,8 @@ bool getDefs(const QCString &scName,const QCString &memberName,
MemberDef *&md, MemberDef *&md,
ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd, ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd,
bool forceEmptyScope, bool forceEmptyScope,
FileDef *currentFile FileDef *currentFile,
bool checkCV
) )
{ {
fd=0, md=0, cd=0, nd=0, gd=0; fd=0, md=0, cd=0, nd=0, gd=0;
...@@ -2076,7 +2077,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -2076,7 +2077,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
if (mmd->isLinkable()) if (mmd->isLinkable())
{ {
bool match=args==0 || bool match=args==0 ||
matchArguments(mmd->argumentList(),argList,className,0,FALSE); matchArguments(mmd->argumentList(),argList,className,0,checkCV);
//printf("match=%d\n",match); //printf("match=%d\n",match);
if (match) if (match)
{ {
...@@ -2187,7 +2188,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -2187,7 +2188,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
argList=new ArgumentList; argList=new ArgumentList;
stringToArgumentList(args,argList); stringToArgumentList(args,argList);
match=matchArguments(mmd->argumentList(),argList,0, match=matchArguments(mmd->argumentList(),argList,0,
namespaceName,FALSE); namespaceName,checkCV);
} }
if (match) if (match)
{ {
...@@ -2247,7 +2248,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, ...@@ -2247,7 +2248,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{ {
argList=new ArgumentList; argList=new ArgumentList;
stringToArgumentList(args,argList); stringToArgumentList(args,argList);
match=matchArguments(md->argumentList(),argList); match=matchArguments(md->argumentList(),argList,0,0,checkCV);
delete argList; argList=0; delete argList; argList=0;
} }
if (match) if (match)
...@@ -2489,8 +2490,13 @@ bool generateRef(OutputDocInterface &od,const char *scName, ...@@ -2489,8 +2490,13 @@ bool generateRef(OutputDocInterface &od,const char *scName,
// scopeStr.data(),nameStr.data(),argsStr.data()); // scopeStr.data(),nameStr.data(),argsStr.data());
// check if nameStr is a member or global. // check if nameStr is a member or global.
if (getDefs(scopeStr,nameStr,argsStr,md,cd,fd,nd,gd, if (getDefs(scopeStr,nameStr,argsStr,
scopePos==0 && !memberScopeFirst)) md,cd,fd,nd,gd,
scopePos==0 && !memberScopeFirst,
0,
TRUE
)
)
{ {
//printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd); //printf("after getDefs md=%p cd=%p fd=%p nd=%p gd=%p\n",md,cd,fd,nd,gd);
QCString anchor; QCString anchor;
......
...@@ -86,7 +86,8 @@ extern bool getDefs(const QCString &scopeName, ...@@ -86,7 +86,8 @@ extern bool getDefs(const QCString &scopeName,
NamespaceDef *&nd, NamespaceDef *&nd,
GroupDef *&gd, GroupDef *&gd,
bool forceEmptyScope=FALSE, bool forceEmptyScope=FALSE,
FileDef *currentFile=0 FileDef *currentFile=0,
bool checkCV=FALSE
); );
extern bool generateRef(OutputDocInterface &od,const char *, extern bool generateRef(OutputDocInterface &od,const char *,
......
...@@ -1309,7 +1309,7 @@ static void writeTemplateLists(Definition *d,QTextStream &t) ...@@ -1309,7 +1309,7 @@ static void writeTemplateLists(Definition *d,QTextStream &t)
} }
} }
static void writeListOfAllMember(ClassDef *cd,QTextStream &t) static void writeListOfAllMembers(ClassDef *cd,QTextStream &t)
{ {
t << " <listofallmembers>" << endl; t << " <listofallmembers>" << endl;
MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict()); MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict());
...@@ -1365,7 +1365,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1365,7 +1365,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
// + list of direct sub classes // + list of direct sub classes
// + list of inner classes // + list of inner classes
// + collaboration diagram // + collaboration diagram
// - list of all members // + list of all members
// + user defined member sections // + user defined member sections
// + standard member sections // + standard member sections
// + detailed member documentation // + detailed member documentation
...@@ -1459,7 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1459,7 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
} }
} }
writeTemplateLists(cd,t); writeTemplateLists(cd,t);
writeListOfAllMember(cd,t); writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict); MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg; MemberGroup *mg;
for (;(mg=mgli.current());++mgli) for (;(mg=mgli.current());++mgli)
......
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