Commit 57a81b6e authored by dimitri's avatar dimitri

Release-1.2.14-20020310

parent c7bc295f
DOXYGEN Version 1.2.14-20020224
DOXYGEN Version 1.2.14-20020310
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.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
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
enum Kind
{
Invalid = 0, // 0
Para, // 1 -> IDocPara
Text, // 2 -> IDocText
Para = 1, // 1 -> IDocPara
Text = 2, // 2 -> IDocText
MarkupModifier, // 3 -> IDocMarkupModifier
ItemizedList, // 4 -> IDocItemizedList
OrderedList, // 5 -> IDocOrderedList
......@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc
{
public:
virtual QString url() = 0;
virtual QString text() = 0;
virtual QString url() const = 0;
virtual QString text() const = 0;
};
class IDocEMail : public IDoc
{
public:
virtual QString address() = 0;
virtual QString address() const = 0;
};
class IDocLink : public IDoc
{
public:
virtual QString refId() = 0;
virtual QString text() = 0;
virtual QString refId() const = 0;
virtual QString text() const = 0;
};
class IDocProgramListing : public IDoc
{
public:
virtual IDocIterator *codeLines() = 0;
virtual IDocIterator *codeLines() const = 0;
};
class IDocCodeLine : public IDoc
{
public:
virtual int lineNumber() = 0;
virtual QString refId() = 0;
virtual IDocIterator *codeElements() = 0;
virtual int lineNumber() const = 0;
virtual QString refId() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
class IDocHighlight : public IDoc
......@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc
KeywordType, KeywordFlow, CharLiteral,
StringLiteral, Preprocessor
};
virtual HighlightKind highlightKind() = 0;
virtual IDocIterator *codeElements() = 0;
virtual HighlightKind highlightKind() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
class IDocFormula : public IDoc
{
public:
virtual QString id() = 0;
virtual QString text() = 0;
virtual QString id() const = 0;
virtual QString text() const = 0;
};
class IDocImage : public IDoc
{
public:
virtual QString name() = 0;
virtual QString caption() = 0;
virtual QString name() const = 0;
virtual QString caption() const = 0;
};
class IDocDotFile : public IDoc
{
public:
virtual QString name() = 0;
virtual QString caption() = 0;
virtual QString name() const = 0;
virtual QString caption() const = 0;
};
class IDocIndexEntry : public IDoc
{
public:
virtual QString primary() = 0;
virtual QString secondary() = 0;
virtual QString primary() const = 0;
virtual QString secondary() const = 0;
};
class IDocTable : public IDoc
{
public:
virtual IDocIterator *rows() = 0;
virtual int numColumns() = 0;
virtual QString caption() = 0;
virtual IDocIterator *rows() const = 0;
virtual int numColumns() const = 0;
virtual QString caption() const = 0;
};
class IDocRow : public IDoc
{
public:
virtual IDocIterator *entries() = 0;
virtual IDocIterator *entries() const = 0;
};
class IDocEntry : public IDoc
{
public:
virtual IDocIterator *contents() = 0;
virtual IDocIterator *contents() const = 0;
};
class IDocSection : public IDoc
......@@ -388,6 +388,72 @@ class IDocIterator
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
{
public:
......@@ -501,6 +567,33 @@ class ICompound
* zero, the memory for the compound will be released.
*/
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
......
......@@ -22,6 +22,8 @@
#include "debug.h"
//-----------------------------------------------------------------------------
class IBaseHandler
{
public:
......@@ -30,6 +32,8 @@ class IBaseHandler
virtual ~IBaseHandler() {}
};
//-----------------------------------------------------------------------------
class IFallBackHandler
{
public:
......@@ -39,6 +43,8 @@ class IFallBackHandler
virtual ~IFallBackHandler() {}
};
//-----------------------------------------------------------------------------
template<class T> class ElementMapper
{
class StartElementHandler
......@@ -108,11 +114,15 @@ template<class T> class ElementMapper
QDict<EndElementHandlerT> m_endHandlers;
};
//-----------------------------------------------------------------------------
struct LocatorContainer
{
static QXmlLocator *s_theLocator;
};
//-----------------------------------------------------------------------------
template<class T> class BaseHandler : public QXmlDefaultHandler,
public ElementMapper<T>,
public LocatorContainer,
......@@ -269,6 +279,8 @@ template<class T> class BaseHandler : public QXmlDefaultHandler,
IFallBackHandler *m_fallBackHandler;
};
//-----------------------------------------------------------------------------
template<class T> class BaseFallBackHandler : public ElementMapper<T>,
public IFallBackHandler
{
......
......@@ -17,6 +17,8 @@
#include "compoundhandler.h"
#include "dochandler.h"
#include "debug.h"
#include "graphhandler.h"
#include "sectionhandler.h"
class CompoundErrorHandler : public QXmlErrorHandler
{
......@@ -129,6 +131,10 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
addStartHandler("programlisting",this,&CompoundHandler::startProgramListing);
addStartHandler("inheritancegraph",this,&CompoundHandler::startInheritanceGraph);
addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph);
}
CompoundHandler::~CompoundHandler()
......@@ -194,7 +200,7 @@ void CompoundHandler::endCompoundName()
void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
{
SuperClass *sc=new SuperClass(
RelatedClass *sc=new RelatedClass(
attrib.value("refid"),
attrib.value("prot"),
attrib.value("virt")
......@@ -208,7 +214,7 @@ void CompoundHandler::addSuperClass(const QXmlAttributes& attrib)
void CompoundHandler::addSubClass(const QXmlAttributes& attrib)
{
SubClass *sc = new SubClass(
RelatedClass *sc = new RelatedClass(
attrib.value("refid"),
attrib.value("prot"),
attrib.value("virt")
......@@ -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 @@
#include "basehandler.h"
#include "baseiterator.h"
#include "sectionhandler.h"
class MainHandler;
class DocHandler;
class ProgramListingHandler;
class GraphHandler;
class MemberHandler;
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 startLocation(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++; }
CompoundHandler(const QString &dirName);
......@@ -54,43 +57,25 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
QString id() const { return m_id; }
CompoundKind kind() const { return m_kind; }
QString kindString() const { return m_kindString; }
ISectionIterator *sections() const
{ return new SectionIterator(m_sections); }
virtual IDocRoot *briefDescription() const
{ return m_brief; }
virtual IDocRoot *detailedDescription() const
{ return m_detailed; }
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();
ISectionIterator *sections() const;
IDocRoot *briefDescription() const;
IDocRoot *detailedDescription() const;
IMember *memberById(const QString &id) const;
IMemberIterator *memberByName(const QString &name) const;
void release();
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) {}
QString m_id;
QString m_protection;
QString m_virtualness;
};
struct SubClass
{
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<RelatedClass> m_superClasses;
QList<RelatedClass> m_subClasses;
QList<ISection> m_sections;
DocHandler *m_brief;
DocHandler *m_detailed;
......@@ -106,6 +91,9 @@ class CompoundHandler : public ICompound, public BaseHandler<CompoundHandler>
QDict<MemberHandler> m_memberDict;
QDict<QList<MemberHandler> > m_memberNameDict;
MainHandler *m_mainHandler;
GraphHandler *m_inheritanceGraph;
GraphHandler *m_collaborationGraph;
};
void compoundhandler_init();
......
......@@ -17,51 +17,77 @@
#include "debug.h"
#include <qmap.h>
//----------------------------------------------------------------------
class TypeNameMapper
{
public:
TypeNameMapper()
{
m_typeNameMap.insert("see", SimpleSectHandler::See);
m_typeNameMap.insert("return", SimpleSectHandler::Return);
m_typeNameMap.insert("author", SimpleSectHandler::Author);
m_typeNameMap.insert("version", SimpleSectHandler::Version);
m_typeNameMap.insert("since", SimpleSectHandler::Since);
m_typeNameMap.insert("date", SimpleSectHandler::Date);
m_typeNameMap.insert("bug", SimpleSectHandler::Bug);
m_typeNameMap.insert("note", SimpleSectHandler::Note);
m_typeNameMap.insert("warning", SimpleSectHandler::Warning);
m_typeNameMap.insert("par", SimpleSectHandler::Par);
m_typeNameMap.insert("deprecated",SimpleSectHandler::Deprecated);
m_typeNameMap.insert("pre", SimpleSectHandler::Pre);
m_typeNameMap.insert("post", SimpleSectHandler::Post);
m_typeNameMap.insert("invariant", SimpleSectHandler::Invar);
m_typeNameMap.insert("remark", SimpleSectHandler::Remark);
m_typeNameMap.insert("attention", SimpleSectHandler::Attention);
m_typeNameMap.insert("todo", SimpleSectHandler::Todo);
m_typeNameMap.insert("test", SimpleSectHandler::Test);
m_typeNameMap.insert("rcs", SimpleSectHandler::RCS);
m_typeNameMap.insert("enumvalues",SimpleSectHandler::EnumValues);
m_typeNameMap.insert("examples", SimpleSectHandler::Examples);
m_map.insert("see", SimpleSectHandler::See);
m_map.insert("return", SimpleSectHandler::Return);
m_map.insert("author", SimpleSectHandler::Author);
m_map.insert("version", SimpleSectHandler::Version);
m_map.insert("since", SimpleSectHandler::Since);
m_map.insert("date", SimpleSectHandler::Date);
m_map.insert("bug", SimpleSectHandler::Bug);
m_map.insert("note", SimpleSectHandler::Note);
m_map.insert("warning", SimpleSectHandler::Warning);
m_map.insert("par", SimpleSectHandler::Par);
m_map.insert("deprecated",SimpleSectHandler::Deprecated);
m_map.insert("pre", SimpleSectHandler::Pre);
m_map.insert("post", SimpleSectHandler::Post);
m_map.insert("invariant", SimpleSectHandler::Invar);
m_map.insert("remark", SimpleSectHandler::Remark);
m_map.insert("attention", SimpleSectHandler::Attention);
m_map.insert("todo", SimpleSectHandler::Todo);
m_map.insert("test", SimpleSectHandler::Test);
m_map.insert("rcs", SimpleSectHandler::RCS);
m_map.insert("enumvalues",SimpleSectHandler::EnumValues);
m_map.insert("examples", SimpleSectHandler::Examples);
}
SimpleSectHandler::Types stringToType(const QString &typeStr)
{
return m_typeNameMap[typeStr];
return m_map[typeStr];
}
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 HighlightMapper *s_highlightMapper;
void dochandler_init()
{
s_typeMapper = new TypeNameMapper;
s_highlightMapper = new HighlightMapper;
}
void dochandler_exit()
{
delete s_typeMapper;
delete s_highlightMapper;
}
//----------------------------------------------------------------------
......@@ -820,6 +846,7 @@ HighlightHandler::HighlightHandler(IBaseHandler *parent)
m_children.setAutoDelete(TRUE);
addEndHandler("highlight",this,&HighlightHandler::endHighlight);
addStartHandler("ref",this,&HighlightHandler::startRef);
m_hl = Invalid;
}
HighlightHandler::~HighlightHandler()
......@@ -828,7 +855,8 @@ HighlightHandler::~HighlightHandler()
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_parent->setDelegate(this);
}
......@@ -836,7 +864,7 @@ void HighlightHandler::startHighlight(const QXmlAttributes& attrib)
void HighlightHandler::endHighlight()
{
addTextNode();
debug(2,"highlight class=`%s'\n",m_class.data());
debug(2,"highlight class=`%s'\n",m_hlString.data());
m_parent->setDelegate(0);
}
......@@ -859,6 +887,11 @@ void HighlightHandler::addTextNode()
}
}
IDocIterator *HighlightHandler::codeElements() const
{
return new HighlightIterator(*this);
}
//----------------------------------------------------------------------
// CodeLineHandler
//----------------------------------------------------------------------
......@@ -931,6 +964,12 @@ void CodeLineHandler::addTextNode()
}
}
IDocIterator *CodeLineHandler::codeElements() const
{
return new CodeLineIterator(*this);
}
//----------------------------------------------------------------------
// ProgramListingHandler
//----------------------------------------------------------------------
......@@ -987,6 +1026,13 @@ void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib)
m_hasLineNumber=FALSE;
}
IDocIterator *ProgramListingHandler::codeLines() const
{
return new ProgramListingIterator(*this);
}
//----------------------------------------------------------------------
// FormulaHandler
//----------------------------------------------------------------------
......@@ -1155,6 +1201,11 @@ void EntryHandler::startParagraph(const QXmlAttributes& attrib)
m_children.append(ph);
}
IDocIterator *EntryHandler::contents() const
{
return new EntryIterator(*this);
}
//----------------------------------------------------------------------
// RowHandler
//----------------------------------------------------------------------
......@@ -1188,6 +1239,11 @@ void RowHandler::startEntry(const QXmlAttributes& attrib)
m_children.append(eh);
}
IDocIterator *RowHandler::entries() const
{
return new RowIterator(*this);
}
//----------------------------------------------------------------------
// TableHandler
//----------------------------------------------------------------------
......@@ -1235,6 +1291,12 @@ void TableHandler::endCaption()
m_caption = m_curString;
}
IDocIterator *TableHandler::rows() const
{
return new TableIterator(*this);
}
//----------------------------------------------------------------------
// ParagraphHandler
//----------------------------------------------------------------------
......
......@@ -162,6 +162,13 @@ class ParagraphHandler : public IDocPara,
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.
......@@ -358,6 +365,8 @@ class LinkHandler : public IDocLink, public BaseHandler<LinkHandler>
// IDocLink
virtual Kind kind() const { return Link; }
virtual QString refId() const { return m_ref; }
virtual QString text() const { return m_text; }
private:
IBaseHandler *m_parent;
......@@ -382,6 +391,7 @@ class EMailHandler : public IDocEMail, public BaseHandler<EMailHandler>
// IDocEMail
virtual Kind kind() const { return EMail; }
virtual QString address() const { return m_address; }
private:
IBaseHandler *m_parent;
......@@ -405,6 +415,8 @@ class ULinkHandler : public IDocULink, public BaseHandler<ULinkHandler>
// IDocULink
virtual Kind kind() const { return ULink; }
virtual QString url() const { return m_url; }
virtual QString text() const { return m_text; }
private:
IBaseHandler *m_parent;
......@@ -601,9 +613,10 @@ class VariableListIterator : public BaseIterator<IDocIterator,IDoc,VariableListE
/*! \brief Node representing a highlighted text fragment.
*
*/
// TODO: children: ref
// children: ref
class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandler>
{
friend class HighlightIterator;
public:
HighlightHandler(IBaseHandler *parent);
virtual ~HighlightHandler();
......@@ -613,13 +626,23 @@ class HighlightHandler : public IDocHighlight, public BaseHandler<HighlightHandl
// IDocHighlight
virtual Kind kind() const { return Highlight; }
virtual HighlightKind highlightKind() const { return m_hl; }
virtual IDocIterator *codeElements() const;
private:
void addTextNode();
IBaseHandler *m_parent;
QString m_class;
QList<IDoc> m_children;
HighlightKind m_hl;
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
// children: linenumber, highlight, anchor, ref
class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
{
friend class CodeLineIterator;
public:
virtual void startCodeLine(const QXmlAttributes&);
......@@ -644,6 +668,9 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
// IDocCodeLine
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:
void addTextNode();
......@@ -654,6 +681,13 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
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
......@@ -662,6 +696,7 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler<CodeLineHandler>
// children: codeline, linenumber
class ProgramListingHandler : public IDocProgramListing, public BaseHandler<ProgramListingHandler>
{
friend class ProgramListingIterator;
public:
virtual void startProgramListing(const QXmlAttributes& attrib);
virtual void endProgramListing();
......@@ -673,6 +708,7 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler<Prog
// IDocProgramListing
virtual Kind kind() const { return ProgramListing; }
virtual IDocIterator *codeLines() const;
private:
IBaseHandler *m_parent;
......@@ -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.
*
*/
......@@ -696,6 +741,8 @@ class FormulaHandler : public IDocFormula, public BaseHandler<FormulaHandler>
// IDocFormula
virtual Kind kind() const { return Formula; }
virtual QString id() const { return m_id; }
virtual QString text() const { return m_text; }
private:
IBaseHandler *m_parent;
......@@ -719,6 +766,8 @@ class ImageHandler : public IDocImage, public BaseHandler<ImageHandler>
// IDocImage
virtual Kind kind() const { return Image; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
private:
IBaseHandler *m_parent;
......@@ -742,6 +791,8 @@ class DotFileHandler : public IDocDotFile, public BaseHandler<DotFileHandler>
// IDocDotFile
virtual Kind kind() const { return DotFile; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
private:
IBaseHandler *m_parent;
......@@ -769,6 +820,8 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa
// IDocIndexEntry
virtual Kind kind() const { return IndexEntry; }
virtual QString primary() const { return m_primary; }
virtual QString secondary() const { return m_secondary; }
private:
IBaseHandler *m_parent;
......@@ -784,6 +837,7 @@ class IndexEntryHandler : public IDocIndexEntry, public BaseHandler<IndexEntryHa
// children: para
class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
{
friend class EntryIterator;
public:
EntryHandler(IBaseHandler *parent);
virtual ~EntryHandler();
......@@ -793,12 +847,20 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
// IDocEntry
virtual Kind kind() const { return Entry; }
virtual IDocIterator *contents() const;
private:
IBaseHandler *m_parent;
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.
......@@ -807,6 +869,7 @@ class EntryHandler : public IDocEntry, public BaseHandler<EntryHandler>
// children: entry
class RowHandler : public IDocRow, public BaseHandler<RowHandler>
{
friend class RowIterator;
public:
RowHandler(IBaseHandler *parent);
virtual ~RowHandler();
......@@ -816,12 +879,20 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
// IDocRow
virtual Kind kind() const { return Row; }
virtual IDocIterator *entries() const;
private:
IBaseHandler *m_parent;
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.
......@@ -830,6 +901,7 @@ class RowHandler : public IDocRow, public BaseHandler<RowHandler>
// children: row, caption
class TableHandler : public IDocTable, public BaseHandler<TableHandler>
{
friend class TableIterator;
public:
TableHandler(IBaseHandler *parent);
virtual ~TableHandler();
......@@ -841,6 +913,9 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
// IDocTable
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:
IBaseHandler *m_parent;
......@@ -849,13 +924,11 @@ class TableHandler : public IDocTable, public BaseHandler<TableHandler>
QString m_caption;
};
//-----------------------------------------------------------------------------
class ParagraphIterator : public BaseIterator<IDocIterator,IDoc,IDoc>
class TableIterator : public BaseIterator<IDocIterator,IDoc,RowHandler>
{
public:
ParagraphIterator(const ParagraphHandler &handler) :
BaseIterator<IDocIterator,IDoc,IDoc>(handler.m_children) {}
TableIterator(const TableHandler &handler) :
BaseIterator<IDocIterator,IDoc,RowHandler>(handler.m_children) {}
};
......
......@@ -110,8 +110,8 @@ class IDoc
enum Kind
{
Invalid = 0, // 0
Para, // 1 -> IDocPara
Text, // 2 -> IDocText
Para = 1, // 1 -> IDocPara
Text = 2, // 2 -> IDocText
MarkupModifier, // 3 -> IDocMarkupModifier
ItemizedList, // 4 -> IDocItemizedList
OrderedList, // 5 -> IDocOrderedList
......@@ -271,35 +271,35 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc
{
public:
virtual QString url() = 0;
virtual QString text() = 0;
virtual QString url() const = 0;
virtual QString text() const = 0;
};
class IDocEMail : public IDoc
{
public:
virtual QString address() = 0;
virtual QString address() const = 0;
};
class IDocLink : public IDoc
{
public:
virtual QString refId() = 0;
virtual QString text() = 0;
virtual QString refId() const = 0;
virtual QString text() const = 0;
};
class IDocProgramListing : public IDoc
{
public:
virtual IDocIterator *codeLines() = 0;
virtual IDocIterator *codeLines() const = 0;
};
class IDocCodeLine : public IDoc
{
public:
virtual int lineNumber() = 0;
virtual QString refId() = 0;
virtual IDocIterator *codeElements() = 0;
virtual int lineNumber() const = 0;
virtual QString refId() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
class IDocHighlight : public IDoc
......@@ -311,56 +311,56 @@ class IDocHighlight : public IDoc
KeywordType, KeywordFlow, CharLiteral,
StringLiteral, Preprocessor
};
virtual HighlightKind highlightKind() = 0;
virtual IDocIterator *codeElements() = 0;
virtual HighlightKind highlightKind() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
class IDocFormula : public IDoc
{
public:
virtual QString id() = 0;
virtual QString text() = 0;
virtual QString id() const = 0;
virtual QString text() const = 0;
};
class IDocImage : public IDoc
{
public:
virtual QString name() = 0;
virtual QString caption() = 0;
virtual QString name() const = 0;
virtual QString caption() const = 0;
};
class IDocDotFile : public IDoc
{
public:
virtual QString name() = 0;
virtual QString caption() = 0;
virtual QString name() const = 0;
virtual QString caption() const = 0;
};
class IDocIndexEntry : public IDoc
{
public:
virtual QString primary() = 0;
virtual QString secondary() = 0;
virtual QString primary() const = 0;
virtual QString secondary() const = 0;
};
class IDocTable : public IDoc
{
public:
virtual IDocIterator *rows() = 0;
virtual int numColumns() = 0;
virtual QString caption() = 0;
virtual IDocIterator *rows() const = 0;
virtual int numColumns() const = 0;
virtual QString caption() const = 0;
};
class IDocRow : public IDoc
{
public:
virtual IDocIterator *entries() = 0;
virtual IDocIterator *entries() const = 0;
};
class IDocEntry : public IDoc
{
public:
virtual IDocIterator *contents() = 0;
virtual IDocIterator *contents() const = 0;
};
class IDocSection : public IDoc
......@@ -388,6 +388,72 @@ class IDocIterator
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
{
public:
......@@ -501,6 +567,33 @@ class ICompound
* zero, the memory for the compound will be released.
*/
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
......
......@@ -4,12 +4,12 @@ HEADERS = basehandler.h mainhandler.h \
compoundhandler.h sectionhandler.h \
memberhandler.h paramhandler.h \
dochandler.h linkedtexthandler.h \
debug.h
debug.h graphhandler.h
SOURCES = mainhandler.cpp \
compoundhandler.cpp sectionhandler.cpp \
memberhandler.cpp paramhandler.cpp \
dochandler.cpp linkedtexthandler.cpp \
basehandler.cpp debug.cpp
basehandler.cpp debug.cpp graphhandler.cpp
unix:LIBS += -L../../../lib -lqtools
win32:INCLUDEPATH += .
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 @@
#include <qxml.h>
#include "mainhandler.h"
#include "compoundhandler.h"
#include "sectionhandler.h"
#include "debug.h"
class ErrorHandler : public QXmlErrorHandler
......
......@@ -234,12 +234,6 @@ void DumpDoc(IDoc *doc)
ASSERT(hl!=0);
}
break;
case IDoc::Anchor:
{
IDocAnchor *anc = dynamic_cast<IDocAnchor*>(anc);
ASSERT(anc!=0);
}
break;
case IDoc::Formula:
{
IDocFormula *fm = dynamic_cast<IDocFormula*>(fm);
......
......@@ -14,6 +14,7 @@ DESTDIR =
OBJECTS_DIR = ../objects
TARGET = xmlparse
INCLUDEPATH += ../../../qtools ../include
DEPENDPATH += ../include
unix:TARGETDEPS = ../lib/libdoxmlparser.a
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
# 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
# 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
# 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
# documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* 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
% documentation under the terms of the GNU General Public License is hereby
......@@ -24,8 +24,8 @@
{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]
{\fancyplain{}{\bfseries\thepage}}
\rfoot[\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-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-2002}}
\cfoot{}
\newenvironment{CompactList}
{\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
% documentation under the terms of the GNU General Public License is hereby
......@@ -37,7 +37,7 @@
\begin{center}
Manual for version $VERSION\\[2ex]
Written by Dimitri van Heesch\\[2ex]
\copyright 1997-2001
\copyright 1997-2002
\end{center}
\end{titlepage}
\clearemptydoublepage
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* 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
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
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...
</ol>
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* 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:
<li>\c &nbsp; a non breakable space.
</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 @@
*
*
*
* 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
* documentation under the terms of the GNU General Public License is hereby
......@@ -25,25 +25,6 @@ Version: $(VERSION)
</center>
\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>
Doxygen is a documentation system for C++, Java, IDL
(Corba, Microsoft and KDE-DCOP flavors) and C.
......@@ -70,8 +51,8 @@ It can help you in three ways:
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
other Unix flavors as well. Furthermore, an executable for
Windows 9x/NT is also available.
other Unix flavors as well. Furthermore, executables for
Windows 9x/NT and Mac OS X are available.
This manual is divided into three parts, each of which is divided into several
sections.
......@@ -128,6 +109,25 @@ The third part provides information for developers:
output languages.
</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>
I have compiled a
......@@ -165,20 +165,19 @@ Thanks go to:
<li>My brother <a href="http://www.stack.nl/~fidget/index.html">Frank</a>
for rendering the logos.
<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>Joerg Baumann, for adding conditional documentation blocks,
PDF links, and the configuration generator.
<li>Matthias Andree for providing a .spec script for building rpms from the
sources.
<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>Jens Breitenstein, Christophe Bordeaux, Samuel Hägglund, Xet Erixon,
Vlastimil Havran, Petr Prikryl, Ahmed Also Faisal, Alessandro Falappa,
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>Petr Prikryl for coordinating the internationalisation support.
All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a> for
donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -5,7 +5,7 @@
* 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
* 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
that the text fragments that doxygen generates can be produced in
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):
Brazilian Portuguese, Chinese, Croatian, Czech, Danish,
Dutch, English, Finnish, French, German,
......@@ -72,7 +72,7 @@ when the translator was updated.
<TD>Czech</TD>
<TD>Petr P&#x0159;ikryl</TD>
<TD>prikrylp@NOSPAM.skil.cz</TD>
<TD>1.2.13</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Danish</TD>
......@@ -143,7 +143,7 @@ when the translator was updated.
<TR BGCOLOR="#ffffff">
<TD>Norwegian</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>
</TR>
<TR BGCOLOR="#ffffff">
......@@ -156,7 +156,7 @@ when the translator was updated.
<TD>Portuguese</TD>
<TD>Rui Godinho Lopes</TD>
<TD>ruiglopes@NOSPAM.yahoo.com</TD>
<TD>1.2.13</TD>
<TD>up-to-date</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Romanian</TD>
......@@ -218,7 +218,7 @@ when the translator was updated.
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} & up-to-date \\
\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
Danish & Erik S\o{}e S\o{}rensen & {\tt erik@mail.nu} & 1.2.7 \\
\hline
......@@ -245,11 +245,11 @@ when the translator was updated.
\hline
Korean & Richard Kim & {\tt ryk@dspwiz.com} & 1.2.13 \\
\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
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} & 1.2.1 \\
\hline
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & 1.2.13 \\
Portuguese & Rui Godinho Lopes & {\tt ruiglopes@yahoo.com} & up-to-date \\
\hline
Romanian & Alexandru Iosup & {\tt aiosup@yahoo.com} & 1.2.1 \\
\hline
......
......@@ -3,7 +3,7 @@
* 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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -51,7 +51,7 @@ Korean
Richard Kim: ryk@dspwiz.com
Norwegian
Lars Erik Jordet: larsej@stud.ifd.hibu.no
Lars Erik Jordet: lej@circuitry.no
Polish
Grzegorz Kowal: g_kowal@poczta.onet.pl
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
......@@ -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
* documentation under the terms of the GNU General Public License is hereby
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.14_20020224
Version: 1.2.14_20020310
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -881,9 +881,10 @@ void Config::check()
if (p)
{
char c;
while ((c=*p++))
while ((c=*p))
{
if (c=='\\') c='/';
if (c=='\\') *p='/';
p++;
}
}
QCString path = sfp;
......
......@@ -752,13 +752,30 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type)
else
{
warn(yyFileName,yyLineNr,
"Warning: could not write output image %s",outputFile.data());
"Warning: could not write output image %s",outputFile.data());
}
}
else
{
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)
......@@ -1202,13 +1219,13 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
<DocScan>{CMD}"link"/{BN} { BEGIN( DocLink ); }
<DocScan>"{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); }
<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);
linkText = "";
BEGIN( DocLinkText );
}
<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;
linkText = "";
BEGIN( DocJavaLinkText );
......@@ -2076,7 +2093,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
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)
{
generateRef(*outDoc,className,yytext,inSeeBlock);
......@@ -2087,7 +2104,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
}
BEGIN(DocScan);
}
<DocScan,DocRefName>{SCOPEMASK}("()")? {
<DocScan,DocRefName>{SCOPEMASK}("()"({B}*("const"|"volatile"))?)? {
if (!insideHtmlLink)
{
generateRef(*outDoc,className,yytext,inSeeBlock);
......@@ -2617,7 +2634,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
{
outDoc->newParagraph();
}
if (ib) endBlock();
if (ib && currentListIndent.top()=="P")
{ // inside paragraph block
endBlock();
}
}
}
<DocScan>{BN}+/\n {
......
......@@ -3909,7 +3909,8 @@ static void findMember(Entry *root,
int count=0;
MemberNameIterator mni(*mn);
MemberDef *md;
for (mni.toFirst();(md=mni.current());++mni)
bool memFound=FALSE;
for (mni.toFirst();!memFound && (md=mni.current());++mni)
{
ClassDef *cd=md->getClassDef();
Debug::print(Debug::FindMembers,0,
......@@ -3993,13 +3994,64 @@ static void findMember(Entry *root,
bool 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;
if (nd) nl = nd->getUsedNamespaces();
else if (fd) nl = fd->getUsedNamespaces();
ClassList *cl = 0;
if (nd) cl = nd->getUsedClasses();
else if (fd) cl = fd->getUsedClasses();
// list of namespaces using in the file/namespace that this
// member definition is part of
NamespaceList *nl = new NamespaceList;
if (nd)
{
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=
md->isVariable() || md->isTypedef() || // needed for function pointers
......@@ -4038,8 +4090,10 @@ static void findMember(Entry *root,
// root->inLine,md->isInline());
addMemberDocs(root,md,funcDecl,0,overloaded,nl);
count++;
break;
memFound=TRUE;
}
delete cl;
delete nl;
}
}
if (count==0 && !(isFriend && funcType=="class"))
......@@ -6565,13 +6619,19 @@ void readConfiguration(int argc, char **argv)
else
{
Config::instance()->init();
setTranslator("English");
}
if (optind+3>=argc)
{
err("Error: option \"-w html\" does not have enough arguments\n");
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;
if (openOutputFile(argv[optind+1],f))
{
......@@ -6605,13 +6665,19 @@ void readConfiguration(int argc, char **argv)
else // use default config
{
Config::instance()->init();
setTranslator("English");
}
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);
}
QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE");
if (!setTranslator(outputLanguage))
{
err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data());
}
QFile f;
if (openOutputFile(argv[optind+1],f))
{
......@@ -6713,7 +6779,7 @@ void readConfiguration(int argc, char **argv)
Config::instance()->check();
initWarningFormat();
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",
outputLanguage.data());
......@@ -7335,13 +7401,13 @@ void generateOutput()
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(1); // write second part
parseText(*outputList,theTranslator->trWrittenBy());
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part
parseText(*outputList,
theTranslator->trGeneratedAt(dateToString(TRUE),Config_getString("PROJECT_NAME"))
);
outputList->writeStyleInfo(3); // write fourth part
parseText(*outputList,theTranslator->trWrittenBy());
//parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part
outputList->enableAll();
......
......@@ -181,14 +181,16 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void HtmlGenerator::writeFooterFile(QFile &file)
{
QTextStream t(&file);
t << "<hr><address><small>\n";
t << "<hr><address align=\"right\"><small>\n";
t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
t << " <a href=\"http://www.doxygen.org/index.html\">\n"
<< "<img src=\"doxygen.png\" alt=\"doxygen\" "
<< "align=\"middle\" border=0 width=110 height=53>\n"
<< "</a> $doxygenversion " << theTranslator->trWrittenBy()
<< " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
<< " &copy;&nbsp;1997-2002</small></address>\n"
<< "</a> $doxygenversion";
// << " " << theTranslator->trWrittenBy()
// << " <a href=\"mailto:dimitri@stack.nl\">Dimitri van Heesch</a>,\n"
// << " &copy;&nbsp;1997-2002"
t << "</small></address>\n"
<< "</body>\n"
<< "</html>\n";
}
......@@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
{
case 0:
if (g_footer.isEmpty())
t << "<hr><address><small>";
t << "<hr><address align=\"right\"><small>";
else
t << substituteKeywords(g_footer,convertToHtml(lastTitle));
break;
......@@ -280,8 +282,10 @@ void HtmlGenerator::writeFooter(int part,bool external)
break;
default:
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;
}
......
......@@ -340,10 +340,10 @@ void endFile(OutputList &ol,bool external)
));
}
ol.writeFooter(1,external); // write the link to the picture
if (Config_getString("HTML_FOOTER").isEmpty())
{
parseText(ol,theTranslator->trWrittenBy());
}
//if (Config_getString("HTML_FOOTER").isEmpty())
//{
// parseText(ol,theTranslator->trWrittenBy());
//}
ol.writeFooter(2,external); // end the footer
ol.popGeneratorState();
ol.endFile();
......@@ -2228,7 +2228,10 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
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());
// write group info
......@@ -2503,7 +2506,7 @@ void writeGroupTreeNode(OutputList &ol, GroupDef *gd,int level)
if (htmlHelp) htmlHelp->decContentsDepth();
if (ftvHelp) ftvHelp->decContentsDepth();
gd->visited=TRUE;
//gd->visited=TRUE;
}
}
......
......@@ -407,12 +407,14 @@ void LatexGenerator::writeStyleSheetFile(QFile &f)
QCString &projectName = Config_getString("PROJECT_NAME");
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen " << theTranslator->trWrittenBy() << " ";
t << "Dimitri van Heesch \\copyright~1997-2002";
t << " doxygen";
//t << " " << theTranslator->trWrittenBy() << " ";
//t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart2(t);
t << theTranslator->trGeneratedAt( dateToString(TRUE), projectName );
t << " doxygen " << theTranslator->trWrittenBy() << " ";
t << "Dimitri van Heesch \\copyright~1997-2002";
t << " doxygen";
//t << " << theTranslator->trWrittenBy() << " ";
//t << "Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t);
}
......@@ -824,14 +826,14 @@ void LatexGenerator::writeStyleInfo(int part)
break;
case 2:
{
t << " Dimitri van Heesch \\copyright~1997-2002";
//t << " Dimitri van Heesch \\copyright~1997-2002";
t << "}]{}\n";
writeDefaultStyleSheetPart2(t);
}
break;
case 4:
{
t << " Dimitri van Heesch \\copyright~1997-2002";
//t << " Dimitri van Heesch \\copyright~1997-2002";
writeDefaultStyleSheetPart3(t);
endPlainFile();
}
......
......@@ -99,7 +99,7 @@ void PngEncoder::write(const char *name)
png_palette[i].green = palette[i].green;
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_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE,
PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE
......
......@@ -2859,7 +2859,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->brief+=' ';
lineCount();
}
<JavaDoc>".\\"/[ \t\r\n] {
<JavaDoc,AfterDocBrief>".\\"/[ \t\r\n] {
current->brief+=".";
}
<JavaDoc>"."[ \t\r\n] {
......
......@@ -135,6 +135,9 @@
// - trImplementedFromList() and trImplementedInList() implemented
// (new since 1.2.13)
//
// 2002/03/05
// - ... forgot to replace TranslatorAdapter... base class by Translator.
//
// Todo
// ----
// - The trReimplementedFromList() should pass the kind of the
......@@ -154,7 +157,7 @@
// probably slightly faster.
class TranslatorCzech : public TranslatorAdapter_1_2_13
class TranslatorCzech : public Translator
{
private:
/*! The decode() inline assumes the source written in the
......
......@@ -15,9 +15,12 @@
*
* The translation into Portuguese was provided by
* Rui Godinho Lopes <ruiglopes@yahoo.com>
* http://www.ruilopes.com
*
* VERSION HISTORY
* ---------------
* 004 03 march 2002
* ! Updated for doxygen v1.2.14
* 003 23 november 2001
* - Removed some obsolete methods (latexBabelPackage, trAuthor, trAuthors and trFiles)
* 002 19 november 2001
......@@ -31,7 +34,7 @@
#ifndef TRANSLATOR_PT_H
#define TRANSLATOR_PT_H
class TranslatorPortuguese : public TranslatorAdapter_1_2_13
class TranslatorPortuguese : public Translator
{
public:
......@@ -1048,7 +1051,7 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
"\\endcode\n"
"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:"
"<p><center><img src=\"graph_legend.png\"></center>\n"
"<p><center><img src=\"graph_legend.gif\"></center>\n"
"<p>\n"
"As caixas no grafo anterior têm as seguintes interpretações:\n"
"<ul>\n"
......@@ -1345,6 +1348,26 @@ class TranslatorPortuguese : public TranslatorAdapter_1_2_13
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
......@@ -1999,7 +1999,8 @@ bool getDefs(const QCString &scName,const QCString &memberName,
MemberDef *&md,
ClassDef *&cd, FileDef *&fd, NamespaceDef *&nd, GroupDef *&gd,
bool forceEmptyScope,
FileDef *currentFile
FileDef *currentFile,
bool checkCV
)
{
fd=0, md=0, cd=0, nd=0, gd=0;
......@@ -2076,7 +2077,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
if (mmd->isLinkable())
{
bool match=args==0 ||
matchArguments(mmd->argumentList(),argList,className,0,FALSE);
matchArguments(mmd->argumentList(),argList,className,0,checkCV);
//printf("match=%d\n",match);
if (match)
{
......@@ -2187,7 +2188,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
argList=new ArgumentList;
stringToArgumentList(args,argList);
match=matchArguments(mmd->argumentList(),argList,0,
namespaceName,FALSE);
namespaceName,checkCV);
}
if (match)
{
......@@ -2247,7 +2248,7 @@ bool getDefs(const QCString &scName,const QCString &memberName,
{
argList=new ArgumentList;
stringToArgumentList(args,argList);
match=matchArguments(md->argumentList(),argList);
match=matchArguments(md->argumentList(),argList,0,0,checkCV);
delete argList; argList=0;
}
if (match)
......@@ -2489,8 +2490,13 @@ bool generateRef(OutputDocInterface &od,const char *scName,
// scopeStr.data(),nameStr.data(),argsStr.data());
// check if nameStr is a member or global.
if (getDefs(scopeStr,nameStr,argsStr,md,cd,fd,nd,gd,
scopePos==0 && !memberScopeFirst))
if (getDefs(scopeStr,nameStr,argsStr,
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);
QCString anchor;
......
......@@ -86,7 +86,8 @@ extern bool getDefs(const QCString &scopeName,
NamespaceDef *&nd,
GroupDef *&gd,
bool forceEmptyScope=FALSE,
FileDef *currentFile=0
FileDef *currentFile=0,
bool checkCV=FALSE
);
extern bool generateRef(OutputDocInterface &od,const char *,
......
......@@ -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;
MemberNameInfoSDict::Iterator mnii(*cd->memberNameInfoSDict());
......@@ -1365,7 +1365,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
// + list of direct sub classes
// + list of inner classes
// + collaboration diagram
// - list of all members
// + list of all members
// + user defined member sections
// + standard member sections
// + detailed member documentation
......@@ -1459,7 +1459,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
}
}
writeTemplateLists(cd,t);
writeListOfAllMember(cd,t);
writeListOfAllMembers(cd,t);
MemberGroupSDict::Iterator mgli(*cd->memberGroupSDict);
MemberGroup *mg;
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