From 5e4af367aa86722cd1545657727247d9008e9a16 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 10 Mar 2002 16:02:35 +0000 Subject: Release-1.2.14-20020310 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- addon/doxmlparser/include/doxmlintf.h | 145 ++++++++++++++++++++++++------ addon/doxmlparser/src/basehandler.h | 12 +++ addon/doxmlparser/src/compoundhandler.cpp | 49 +++++++++- addon/doxmlparser/src/compoundhandler.h | 46 ++++------ addon/doxmlparser/src/dochandler.cpp | 112 +++++++++++++++++------ addon/doxmlparser/src/dochandler.h | 89 ++++++++++++++++-- addon/doxmlparser/src/doxmlintf.h | 145 ++++++++++++++++++++++++------ addon/doxmlparser/src/doxmlparser.pro.in | 4 +- addon/doxmlparser/src/graphhandler.cpp | 86 ++++++++++++++++++ addon/doxmlparser/src/graphhandler.h | 110 +++++++++++++++++++++++ addon/doxmlparser/src/mainhandler.cpp | 1 + addon/doxmlparser/test/main.cpp | 6 -- addon/doxmlparser/test/xmlparse.pro.in | 1 + doc/Makefile.in | 2 +- doc/Makefile.latex | 2 +- doc/Makefile.win_make.in | 2 +- doc/Makefile.win_nmake.in | 2 +- doc/arch.doc | 2 +- doc/autolink.doc | 2 +- doc/commands.doc | 2 +- doc/config.doc | 2 +- doc/diagrams.doc | 2 +- doc/docblocks.doc | 2 +- doc/doxygen.sty | 6 +- doc/doxygen_manual.tex | 4 +- doc/doxygen_usage.doc | 2 +- doc/doxysearch_usage.doc | 2 +- doc/doxytag_usage.doc | 2 +- doc/doxywizard_usage.doc | 2 +- doc/external.doc | 2 +- doc/faq.doc | 4 +- doc/features.doc | 2 +- doc/formulas.doc | 2 +- doc/grouping.doc | 2 +- doc/history.doc | 2 +- doc/htmlcmds.doc | 8 +- doc/index.doc | 57 ++++++------ doc/install.doc | 2 +- doc/installdox_usage.doc | 2 +- doc/language.doc | 16 ++-- doc/language.tpl | 2 +- doc/maintainers.txt | 2 +- doc/output.doc | 2 +- doc/preprocessing.doc | 2 +- doc/starting.doc | 2 +- doc/trouble.doc | 2 +- packages/rpm/doxygen.spec | 2 +- src/config.l | 5 +- src/doc.l | 34 +++++-- src/doxygen.cpp | 96 ++++++++++++++++---- src/htmlgen.cpp | 18 ++-- src/index.cpp | 15 ++-- src/latexgen.cpp | 14 +-- src/pngenc.cpp | 2 +- src/scanner.l | 2 +- src/translator_cz.h | 5 +- src/translator_pt.h | 27 +++++- src/util.cpp | 18 ++-- src/util.h | 3 +- src/xmlgen.cpp | 6 +- 63 files changed, 952 insertions(+), 260 deletions(-) create mode 100644 addon/doxmlparser/src/graphhandler.cpp create mode 100644 addon/doxmlparser/src/graphhandler.h diff --git a/INSTALL b/INSTALL index 7e989ae..7c2d118 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,6 @@ -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) diff --git a/README b/README index fd927e1..ba73328 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -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) diff --git a/VERSION b/VERSION index 87b668c..417bc95 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.14-20020224 +1.2.14-20020310 diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h index 067e5fd..89e567d 100644 --- a/addon/doxmlparser/include/doxmlintf.h +++ b/addon/doxmlparser/include/doxmlintf.h @@ -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 diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h index 89f9504..c86316b 100644 --- a/addon/doxmlparser/src/basehandler.h +++ b/addon/doxmlparser/src/basehandler.h @@ -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 ElementMapper { class StartElementHandler @@ -108,11 +114,15 @@ template class ElementMapper QDict m_endHandlers; }; +//----------------------------------------------------------------------------- + struct LocatorContainer { static QXmlLocator *s_theLocator; }; +//----------------------------------------------------------------------------- + template class BaseHandler : public QXmlDefaultHandler, public ElementMapper, public LocatorContainer, @@ -269,6 +279,8 @@ template class BaseHandler : public QXmlDefaultHandler, IFallBackHandler *m_fallBackHandler; }; +//----------------------------------------------------------------------------- + template class BaseFallBackHandler : public ElementMapper, public IFallBackHandler { diff --git a/addon/doxmlparser/src/compoundhandler.cpp b/addon/doxmlparser/src/compoundhandler.cpp index 18a8c0c..caca36b 100644 --- a/addon/doxmlparser/src/compoundhandler.cpp +++ b/addon/doxmlparser/src/compoundhandler.cpp @@ -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 *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]; +} + diff --git a/addon/doxmlparser/src/compoundhandler.h b/addon/doxmlparser/src/compoundhandler.h index 762641f..1639487 100644 --- a/addon/doxmlparser/src/compoundhandler.h +++ b/addon/doxmlparser/src/compoundhandler.h @@ -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 { @@ -41,6 +42,8 @@ class CompoundHandler : public ICompound, public BaseHandler 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 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 *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 m_superClasses; - QList m_subClasses; + QList m_superClasses; + QList m_subClasses; QList m_sections; DocHandler *m_brief; DocHandler *m_detailed; @@ -106,6 +91,9 @@ class CompoundHandler : public ICompound, public BaseHandler QDict m_memberDict; QDict > m_memberNameDict; MainHandler *m_mainHandler; + GraphHandler *m_inheritanceGraph; + GraphHandler *m_collaborationGraph; + }; void compoundhandler_init(); diff --git a/addon/doxmlparser/src/dochandler.cpp b/addon/doxmlparser/src/dochandler.cpp index 12a3a24..8f1249f 100644 --- a/addon/doxmlparser/src/dochandler.cpp +++ b/addon/doxmlparser/src/dochandler.cpp @@ -17,51 +17,77 @@ #include "debug.h" #include +//---------------------------------------------------------------------- + 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 m_typeNameMap; + QMap 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 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 //---------------------------------------------------------------------- diff --git a/addon/doxmlparser/src/dochandler.h b/addon/doxmlparser/src/dochandler.h index 0161576..c3b8242 100644 --- a/addon/doxmlparser/src/dochandler.h +++ b/addon/doxmlparser/src/dochandler.h @@ -162,6 +162,13 @@ class ParagraphHandler : public IDocPara, MarkupHandler *m_markupHandler; }; +class ParagraphIterator : public BaseIterator +{ + public: + ParagraphIterator(const ParagraphHandler &handler) : + BaseIterator(handler.m_children) {} +}; + //----------------------------------------------------------------------------- /*! \brief Node representing a list item. @@ -358,6 +365,8 @@ class LinkHandler : public IDocLink, public BaseHandler // 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 // 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 // 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 { + friend class HighlightIterator; public: HighlightHandler(IBaseHandler *parent); virtual ~HighlightHandler(); @@ -613,13 +626,23 @@ class HighlightHandler : public IDocHighlight, public BaseHandler m_children; + HighlightKind m_hl; + QString m_hlString; + QList m_children; +}; + +class HighlightIterator : public BaseIterator +{ + public: + HighlightIterator(const HighlightHandler &handler) : + BaseIterator(handler.m_children) {} }; //----------------------------------------------------------------------------- @@ -630,6 +653,7 @@ class HighlightHandler : public IDocHighlight, public BaseHandler { + friend class CodeLineIterator; public: virtual void startCodeLine(const QXmlAttributes&); @@ -644,6 +668,9 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler // 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 QList m_children; }; +class CodeLineIterator : public BaseIterator +{ + public: + CodeLineIterator(const CodeLineHandler &handler) : + BaseIterator(handler.m_children) {} +}; + //----------------------------------------------------------------------------- /*! \brief Node representing a program listing @@ -662,6 +696,7 @@ class CodeLineHandler : public IDocCodeLine, public BaseHandler // children: codeline, linenumber class ProgramListingHandler : public IDocProgramListing, public BaseHandler { + friend class ProgramListingIterator; public: virtual void startProgramListing(const QXmlAttributes& attrib); virtual void endProgramListing(); @@ -673,6 +708,7 @@ class ProgramListingHandler : public IDocProgramListing, public BaseHandler +{ + public: + ProgramListingIterator(const ProgramListingHandler &handler) : + BaseIterator(handler.m_children) {} +}; + +//----------------------------------------------------------------------------- + /*! \brief Node representing a formula. * */ @@ -696,6 +741,8 @@ class FormulaHandler : public IDocFormula, public BaseHandler // 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 // 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 // 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 { + friend class EntryIterator; public: EntryHandler(IBaseHandler *parent); virtual ~EntryHandler(); @@ -793,12 +847,20 @@ class EntryHandler : public IDocEntry, public BaseHandler // IDocEntry virtual Kind kind() const { return Entry; } + virtual IDocIterator *contents() const; private: IBaseHandler *m_parent; QList m_children; }; +class EntryIterator : public BaseIterator +{ + public: + EntryIterator(const EntryHandler &handler) : + BaseIterator(handler.m_children) {} +}; + //----------------------------------------------------------------------------- /*! \brief Node representing an entry in the table row. @@ -807,6 +869,7 @@ class EntryHandler : public IDocEntry, public BaseHandler // children: entry class RowHandler : public IDocRow, public BaseHandler { + friend class RowIterator; public: RowHandler(IBaseHandler *parent); virtual ~RowHandler(); @@ -816,12 +879,20 @@ class RowHandler : public IDocRow, public BaseHandler // IDocRow virtual Kind kind() const { return Row; } + virtual IDocIterator *entries() const; private: IBaseHandler *m_parent; QList m_children; }; +class RowIterator : public BaseIterator +{ + public: + RowIterator(const RowHandler &handler) : + BaseIterator(handler.m_children) {} +}; + //----------------------------------------------------------------------------- /*! \brief Node representing an entry in the table. @@ -830,6 +901,7 @@ class RowHandler : public IDocRow, public BaseHandler // children: row, caption class TableHandler : public IDocTable, public BaseHandler { + friend class TableIterator; public: TableHandler(IBaseHandler *parent); virtual ~TableHandler(); @@ -841,6 +913,9 @@ class TableHandler : public IDocTable, public BaseHandler // 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 QString m_caption; }; -//----------------------------------------------------------------------------- - -class ParagraphIterator : public BaseIterator +class TableIterator : public BaseIterator { public: - ParagraphIterator(const ParagraphHandler &handler) : - BaseIterator(handler.m_children) {} + TableIterator(const TableHandler &handler) : + BaseIterator(handler.m_children) {} }; diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h index 067e5fd..89e567d 100644 --- a/addon/doxmlparser/src/doxmlintf.h +++ b/addon/doxmlparser/src/doxmlintf.h @@ -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 diff --git a/addon/doxmlparser/src/doxmlparser.pro.in b/addon/doxmlparser/src/doxmlparser.pro.in index 889f069..1d05f5b 100644 --- a/addon/doxmlparser/src/doxmlparser.pro.in +++ b/addon/doxmlparser/src/doxmlparser.pro.in @@ -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 diff --git a/addon/doxmlparser/src/graphhandler.cpp b/addon/doxmlparser/src/graphhandler.cpp new file mode 100644 index 0000000..9c822de --- /dev/null +++ b/addon/doxmlparser/src/graphhandler.cpp @@ -0,0 +1,86 @@ +#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; +} + + + + + diff --git a/addon/doxmlparser/src/graphhandler.h b/addon/doxmlparser/src/graphhandler.h new file mode 100644 index 0000000..47222d1 --- /dev/null +++ b/addon/doxmlparser/src/graphhandler.h @@ -0,0 +1,110 @@ +/****************************************************************************** + * + * $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 +{ + 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 m_nodes; +}; + +//---------------------------------------------------------------------- + +class NodeHandler : public INode, public BaseHandler +{ + 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 m_children; +}; + +class NodeIterator : public BaseIterator +{ + public: + NodeIterator(const GraphHandler &handler) : + BaseIterator(handler.m_nodes) {} +}; + +//---------------------------------------------------------------------- + +class ChildNodeHandler : public IChildNode, public BaseHandler +{ + 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 +{ + public: + ChildNodeIterator(const NodeHandler &handler) : + BaseIterator(handler.m_children) {} +}; + + +#endif + diff --git a/addon/doxmlparser/src/mainhandler.cpp b/addon/doxmlparser/src/mainhandler.cpp index 99cb665..98249ee 100644 --- a/addon/doxmlparser/src/mainhandler.cpp +++ b/addon/doxmlparser/src/mainhandler.cpp @@ -16,6 +16,7 @@ #include #include "mainhandler.h" #include "compoundhandler.h" +#include "sectionhandler.h" #include "debug.h" class ErrorHandler : public QXmlErrorHandler diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp index c90883e..4359ba5 100644 --- a/addon/doxmlparser/test/main.cpp +++ b/addon/doxmlparser/test/main.cpp @@ -234,12 +234,6 @@ void DumpDoc(IDoc *doc) ASSERT(hl!=0); } break; - case IDoc::Anchor: - { - IDocAnchor *anc = dynamic_cast(anc); - ASSERT(anc!=0); - } - break; case IDoc::Formula: { IDocFormula *fm = dynamic_cast(fm); diff --git a/addon/doxmlparser/test/xmlparse.pro.in b/addon/doxmlparser/test/xmlparse.pro.in index 1dc095b..cfb95be 100644 --- a/addon/doxmlparser/test/xmlparse.pro.in +++ b/addon/doxmlparser/test/xmlparse.pro.in @@ -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 diff --git a/doc/Makefile.in b/doc/Makefile.in index 4deee03..6dfddcc 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,7 +1,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 diff --git a/doc/Makefile.latex b/doc/Makefile.latex index 43489ce..f824b70 100644 --- a/doc/Makefile.latex +++ b/doc/Makefile.latex @@ -1,7 +1,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 diff --git a/doc/Makefile.win_make.in b/doc/Makefile.win_make.in index 3161b31..1f576cb 100644 --- a/doc/Makefile.win_make.in +++ b/doc/Makefile.win_make.in @@ -1,7 +1,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 diff --git a/doc/Makefile.win_nmake.in b/doc/Makefile.win_nmake.in index 05820b0..bd79a33 100644 --- a/doc/Makefile.win_nmake.in +++ b/doc/Makefile.win_nmake.in @@ -1,7 +1,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 diff --git a/doc/arch.doc b/doc/arch.doc index 2529fcb..1851d31 100644 --- a/doc/arch.doc +++ b/doc/arch.doc @@ -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 diff --git a/doc/autolink.doc b/doc/autolink.doc index ee0cd09..94b28d4 100644 --- a/doc/autolink.doc +++ b/doc/autolink.doc @@ -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 diff --git a/doc/commands.doc b/doc/commands.doc index fd4f71d..edd5804 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -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 diff --git a/doc/config.doc b/doc/config.doc index 8300a84..d36dfc5 100644 --- a/doc/config.doc +++ b/doc/config.doc @@ -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 diff --git a/doc/diagrams.doc b/doc/diagrams.doc index 3094720..d44a8b4 100644 --- a/doc/diagrams.doc +++ b/doc/diagrams.doc @@ -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 diff --git a/doc/docblocks.doc b/doc/docblocks.doc index 611f0ee..49a2f5f 100644 --- a/doc/docblocks.doc +++ b/doc/docblocks.doc @@ -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 diff --git a/doc/doxygen.sty b/doc/doxygen.sty index 86ee4ca..bada1f9 100644 --- a/doc/doxygen.sty +++ b/doc/doxygen.sty @@ -1,7 +1,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 @@ -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}{}{ diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex index 6f3313a..2b718e3 100644 --- a/doc/doxygen_manual.tex +++ b/doc/doxygen_manual.tex @@ -1,7 +1,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 @@ -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 diff --git a/doc/doxygen_usage.doc b/doc/doxygen_usage.doc index 865f5ca..bf86ffb 100644 --- a/doc/doxygen_usage.doc +++ b/doc/doxygen_usage.doc @@ -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 diff --git a/doc/doxysearch_usage.doc b/doc/doxysearch_usage.doc index e878a9c..a919360 100644 --- a/doc/doxysearch_usage.doc +++ b/doc/doxysearch_usage.doc @@ -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 diff --git a/doc/doxytag_usage.doc b/doc/doxytag_usage.doc index 506dc5f..187c285 100644 --- a/doc/doxytag_usage.doc +++ b/doc/doxytag_usage.doc @@ -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 diff --git a/doc/doxywizard_usage.doc b/doc/doxywizard_usage.doc index 5c17add..05d1d9f 100644 --- a/doc/doxywizard_usage.doc +++ b/doc/doxywizard_usage.doc @@ -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 diff --git a/doc/external.doc b/doc/external.doc index 111703e..e7d3bf0 100644 --- a/doc/external.doc +++ b/doc/external.doc @@ -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 diff --git a/doc/faq.doc b/doc/faq.doc index cf18fab..77ba440 100644 --- a/doc/faq.doc +++ b/doc/faq.doc @@ -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... diff --git a/doc/features.doc b/doc/features.doc index 71c2a1f..806a5b5 100644 --- a/doc/features.doc +++ b/doc/features.doc @@ -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 diff --git a/doc/formulas.doc b/doc/formulas.doc index e90424f..52a30e7 100644 --- a/doc/formulas.doc +++ b/doc/formulas.doc @@ -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 diff --git a/doc/grouping.doc b/doc/grouping.doc index ae80ae8..0d20b39 100644 --- a/doc/grouping.doc +++ b/doc/grouping.doc @@ -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 diff --git a/doc/history.doc b/doc/history.doc index 5a28e9d..0866130 100644 --- a/doc/history.doc +++ b/doc/history.doc @@ -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 diff --git a/doc/htmlcmds.doc b/doc/htmlcmds.doc index 12d5356..476be78 100644 --- a/doc/htmlcmds.doc +++ b/doc/htmlcmds.doc @@ -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:
  • \c   a non breakable space. +Finally, to put invisible comments inside comment blocks, HTML style +comments can be used: +\verbatim +/*! Visible text */ +\endverbatim + */ diff --git a/doc/index.doc b/doc/index.doc index 450bfe9..ca2d9b5 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -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) \endif -

    Doxygen license

    -\addindex license -\addindex GPL - -Copyright © 1997-2001 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. -

    -Documents produced by doxygen are derivative works derived from the -input used in their production; they are not affected by this license. -

    Introduction

    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 Linux, 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. +

    Doxygen license

    +\addindex license +\addindex GPL + +Copyright © 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. +

    +Documents produced by doxygen are derivative works derived from the +input used in their production; they are not affected by this license. +

    Projects using doxygen

    I have compiled a @@ -165,20 +165,19 @@ Thanks go to:
  • My brother Frank for rendering the logos.
  • Harm van der Heijden for adding HTML help support. -
  • Wouter Slegers for registering the www.doxygen.org domain. +
  • Wouter Slegers of + Your Creative Solutions + for registering the www.doxygen.org domain.
  • Parker Waechter for adding the RTF output generator.
  • Joerg Baumann, for adding conditional documentation blocks, PDF links, and the configuration generator.
  • Matthias Andree for providing a .spec script for building rpms from the sources.
  • Tim Mensch for adding the todo command. +
  • Christian Hammond for redesigning the web-site.
  • Ken Wong for providing the HTML tree view code. -
  • 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. +
  • Petr Prikryl for coordinating the internationalisation support. + All language maintainers for providing translations into many languages.
  • Erik Jan Lingen of Habanera for donating money.
  • The Comms group of Symbian for donating diff --git a/doc/install.doc b/doc/install.doc index 78a61cf..7472355 100644 --- a/doc/install.doc +++ b/doc/install.doc @@ -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 diff --git a/doc/installdox_usage.doc b/doc/installdox_usage.doc index 1662a10..df9973e 100644 --- a/doc/installdox_usage.doc +++ b/doc/installdox_usage.doc @@ -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 diff --git a/doc/language.doc b/doc/language.doc index 966fc6a..4b3bcca 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -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. Czech Petr Přikryl prikrylp@NOSPAM.skil.cz - 1.2.13 + up-to-date Danish @@ -143,7 +143,7 @@ when the translator was updated. Norwegian Lars Erik Jordet - larsej@NOSPAM.stud.ifd.hibu.no + lej@NOSPAM.circuitry.no 1.2.2 @@ -156,7 +156,7 @@ when the translator was updated. Portuguese Rui Godinho Lopes ruiglopes@NOSPAM.yahoo.com - 1.2.13 + up-to-date Romanian @@ -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 diff --git a/doc/language.tpl b/doc/language.tpl index bc14fd5..875d770 100644 --- a/doc/language.tpl +++ b/doc/language.tpl @@ -3,7 +3,7 @@ * Edit manually this file, not the language.doc! * * - * 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 diff --git a/doc/maintainers.txt b/doc/maintainers.txt index 93de235..488573d 100644 --- a/doc/maintainers.txt +++ b/doc/maintainers.txt @@ -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 diff --git a/doc/output.doc b/doc/output.doc index 4ee733c..e4ee62f 100644 --- a/doc/output.doc +++ b/doc/output.doc @@ -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 diff --git a/doc/preprocessing.doc b/doc/preprocessing.doc index 1be3ecd..9b7e8bc 100644 --- a/doc/preprocessing.doc +++ b/doc/preprocessing.doc @@ -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 diff --git a/doc/starting.doc b/doc/starting.doc index f7578c9..5729087 100644 --- a/doc/starting.doc +++ b/doc/starting.doc @@ -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 diff --git a/doc/trouble.doc b/doc/trouble.doc index f03eb99..bfac14a 100644 --- a/doc/trouble.doc +++ b/doc/trouble.doc @@ -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 diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 49f091d..eedb104 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ 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 diff --git a/src/config.l b/src/config.l index 810287e..fe32174 100644 --- a/src/config.l +++ b/src/config.l @@ -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; diff --git a/src/doc.l b/src/doc.l index c519ee4..b6469a7 100644 --- a/src/doc.l +++ b/src/doc.l @@ -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}) {CMD}"link"/{BN} { BEGIN( DocLink ); } "{"{CMD}"link"{BN}+ { BEGIN( DocJavaLink ); } [a-z_A-Z0-9.:()]+ { BEGIN( DocScan ); } -[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+ { // TODO: support operators as well! +[a-z_A-Z0-9:#.,~&*/\[\]<>()\-\+]+({B}*("const"|"volatile"))? { // TODO: support operators as well! linkRef = stripKnownExtensions(yytext); linkText = ""; BEGIN( DocLinkText ); } ([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ } -([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")? { // TODO: support operators as well! +([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); } -{SCOPEMASK}"("[a-z_A-Z0-9,:\<\> \t\*\&]+")" { +{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); } -{SCOPEMASK}("()")? { +{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(); + } } } {BN}+/\n { diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 1363348..f420437 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -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(); diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index af01a96..4f971c2 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -181,14 +181,16 @@ void HtmlGenerator::writeHeaderFile(QFile &file) void HtmlGenerator::writeFooterFile(QFile &file) { QTextStream t(&file); - t << "
    \n"; + t << "
    \n"; t << theTranslator->trGeneratedAt( "$datetime", "$projectname" ); t << " \n" << "\"doxygen\"\n" - << " $doxygenversion " << theTranslator->trWrittenBy() - << " Dimitri van Heesch,\n" - << " © 1997-2002
    \n" + << " $doxygenversion"; + // << " " << theTranslator->trWrittenBy() + // << " Dimitri van Heesch,\n" + // << " © 1997-2002" + t << "
    \n" << "\n" << "\n"; } @@ -255,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external) { case 0: if (g_footer.isEmpty()) - t << "
    "; + t << "
    "; 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 << " Dimitri van Heesch,\n © " - "1997-2002
    \n\n\n"; + { + //t << " Dimitri van Heesch,\n © 1997-2002"; + t << "
    \n\n\n"; + } break; } diff --git a/src/index.cpp b/src/index.cpp index 9b20b51..47bdaab 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -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; } } diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 4604a58..c02428c 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -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(); } diff --git a/src/pngenc.cpp b/src/pngenc.cpp index 438b4b5..b7e54f4 100644 --- a/src/pngenc.cpp +++ b/src/pngenc.cpp @@ -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 diff --git a/src/scanner.l b/src/scanner.l index e558eb1..ab08498 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -2859,7 +2859,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->brief+=' '; lineCount(); } -".\\"/[ \t\r\n] { +".\\"/[ \t\r\n] { current->brief+="."; } "."[ \t\r\n] { diff --git a/src/translator_cz.h b/src/translator_cz.h index e785da4..07941bb 100644 --- a/src/translator_cz.h +++ b/src/translator_cz.h @@ -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 diff --git a/src/translator_pt.h b/src/translator_pt.h index 232eecb..6d73bbd 100644 --- a/src/translator_pt.h +++ b/src/translator_pt.h @@ -15,9 +15,12 @@ * * The translation into Portuguese was provided by * Rui Godinho Lopes + * 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:" - "

    \n" + "

    \n" "

    \n" "As caixas no grafo anterior têm as seguintes interpretações:\n" "

      \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 diff --git a/src/util.cpp b/src/util.cpp index ed55620..c99b1bd 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -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; diff --git a/src/util.h b/src/util.h index 2a68fad..6831c2b 100644 --- a/src/util.h +++ b/src/util.h @@ -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 *, diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 9273f63..c5b1fb0 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -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 << " " << 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) -- cgit v0.12