From 5b23c9573e3e7925987dc706c17357d54f517e40 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 16 Mar 2008 22:09:59 +0000 Subject: Release-1.5.5-20080316 --- INSTALL | 4 +- README | 4 +- addon/doxmlparser/include/doxmlintf.h | 31 + addon/doxmlparser/src/basehandler.h | 8 +- addon/doxmlparser/src/doxmlintf.h | 1102 +-------------------------------- configure | 2 +- src/index.cpp | 13 +- src/index.h | 1 + src/latexgen.cpp | 22 +- src/pagedef.cpp | 96 ++- src/pagedef.h | 15 +- src/rtfgen.cpp | 21 +- 12 files changed, 176 insertions(+), 1143 deletions(-) mode change 100644 => 120000 addon/doxmlparser/src/doxmlintf.h diff --git a/INSTALL b/INSTALL index 90371bd..ce4bc33 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.5.5-20080309 +DOXYGEN Version 1.5.5-20080316 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (09 March 2008) +Dimitri van Heesch (16 March 2008) diff --git a/README b/README index bf356fe..458c951 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.5.5_20080309 +DOXYGEN Version 1.5.5_20080316 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) (09 March 2008) +Dimitri van Heesch (dimitri@stack.nl) (16 March 2008) diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h index f2e6902..79d7bc7 100644 --- a/addon/doxmlparser/include/doxmlintf.h +++ b/addon/doxmlparser/include/doxmlintf.h @@ -35,11 +35,14 @@ class INode; class IDocInternal; class IDocRoot; +#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {} + /*! \brief Read only interface to a string. */ class IString { public: + VIRTUAL_DESTRUCTOR(IString) /*! Returns a latin1 character representation of the string. */ virtual const char *latin1() const = 0; /*! Returns a 16-bit unicode character representation of the character at @@ -60,6 +63,7 @@ class IString class ILinkedText { public: + VIRTUAL_DESTRUCTOR(ILinkedText) enum Kind { Kind_Text, Kind_Ref }; virtual Kind kind() const = 0; }; @@ -69,6 +73,7 @@ class ILinkedText class ILT_Text : public ILinkedText { public: + VIRTUAL_DESTRUCTOR(ILT_Text) virtual const IString *text() const = 0; }; @@ -77,6 +82,7 @@ class ILT_Text : public ILinkedText class ILT_Ref : public ILinkedText { public: + VIRTUAL_DESTRUCTOR(ILT_Ref) enum TargetKind { Member, Compound }; virtual const IString *id() const = 0; virtual TargetKind targetKind() const = 0; @@ -89,6 +95,7 @@ class ILT_Ref : public ILinkedText class ILinkedTextIterator { public: + VIRTUAL_DESTRUCTOR(ILinkedTextIterator) virtual ILinkedText *toFirst() = 0; virtual ILinkedText *toLast() = 0; virtual ILinkedText *toNext() = 0; @@ -101,6 +108,7 @@ class ILinkedTextIterator class IParam { public: + VIRTUAL_DESTRUCTOR(IParam) virtual ILinkedTextIterator *type() const = 0; virtual const IString * declarationName() const = 0; virtual const IString * definitionName() const = 0; @@ -113,6 +121,7 @@ class IParam class IParamIterator { public: + VIRTUAL_DESTRUCTOR(IParamIterator) virtual IParam *toFirst() = 0; virtual IParam *toLast() = 0; virtual IParam *toNext() = 0; @@ -124,6 +133,7 @@ class IParamIterator class IMemberReference { public: + VIRTUAL_DESTRUCTOR(IMemberReference) virtual IMember *member() const = 0; virtual const IString * name() const = 0; virtual const IString * scope() const = 0; @@ -135,6 +145,7 @@ class IMemberReference class IMemberReferenceIterator { public: + VIRTUAL_DESTRUCTOR(IMemberReferenceIterator) virtual IMemberReference *toFirst() = 0; virtual IMemberReference *toLast() = 0; virtual IMemberReference *toNext() = 0; @@ -146,6 +157,7 @@ class IMemberReferenceIterator class IDoc { public: + VIRTUAL_DESTRUCTOR(IDoc) enum Kind { Invalid = 0, // 0 @@ -492,6 +504,7 @@ class IDocRoot : public IDoc class IDocIterator { public: + VIRTUAL_DESTRUCTOR(IDocIterator) virtual IDoc *toFirst() = 0; virtual IDoc *toLast() = 0; virtual IDoc *toNext() = 0; @@ -503,12 +516,14 @@ class IDocIterator class IEdgeLabel { public: + VIRTUAL_DESTRUCTOR(IEdgeLabel) virtual const IString * label() const = 0; }; class IEdgeLabelIterator { public: + VIRTUAL_DESTRUCTOR(IEdgeLabelIterator) virtual IEdgeLabel *toFirst() = 0; virtual IEdgeLabel *toLast() = 0; virtual IEdgeLabel *toNext() = 0; @@ -520,6 +535,7 @@ class IEdgeLabelIterator class IChildNode { public: + VIRTUAL_DESTRUCTOR(IChildNode) enum NodeRelation { PublicInheritance, ProtectedInheritance, PrivateInheritance, Usage, TemplateInstance }; @@ -532,6 +548,7 @@ class IChildNode class IChildNodeIterator { public: + VIRTUAL_DESTRUCTOR(IChildNodeIterator) virtual IChildNode *toFirst() = 0; virtual IChildNode *toLast() = 0; virtual IChildNode *toNext() = 0; @@ -543,6 +560,7 @@ class IChildNodeIterator class INode { public: + VIRTUAL_DESTRUCTOR(INode) virtual const IString * id() const = 0; virtual const IString * label() const = 0; virtual const IString * linkId() const = 0; @@ -552,6 +570,7 @@ class INode class INodeIterator { public: + VIRTUAL_DESTRUCTOR(INodeIterator) virtual INode *toFirst() = 0; virtual INode *toLast() = 0; virtual INode *toNext() = 0; @@ -563,12 +582,14 @@ class INodeIterator class IGraph { public: + VIRTUAL_DESTRUCTOR(IGraph) virtual INodeIterator *nodes() const = 0; }; class IMember { public: + VIRTUAL_DESTRUCTOR(IMember) enum MemberKind { Invalid=0, Define, Property, Variable, Typedef, Enum, Function, Signal, Prototype, Friend, DCOP, Slot, @@ -675,6 +696,7 @@ class IEnumValue : public IMember class IInclude { public: + VIRTUAL_DESTRUCTOR(IInclude) virtual const IString * name() const = 0; virtual const IString * refId() const = 0; virtual bool isLocal() const = 0; @@ -683,6 +705,7 @@ class IInclude class IIncludeIterator { public: + VIRTUAL_DESTRUCTOR(IIncludeIterator) virtual IInclude *toFirst() = 0; virtual IInclude *toLast() = 0; virtual IInclude *toNext() = 0; @@ -694,6 +717,7 @@ class IIncludeIterator class IMemberIterator { public: + VIRTUAL_DESTRUCTOR(IMemberIterator) virtual IMember *toFirst() = 0; virtual IMember *toLast() = 0; virtual IMember *toNext() = 0; @@ -721,6 +745,7 @@ class IEnum : public IMember class ISection { public: + VIRTUAL_DESTRUCTOR(ISection) /*! Possible section types */ enum SectionKind { Invalid=0, @@ -804,6 +829,7 @@ class IUserDefined : public ISection class ISectionIterator { public: + VIRTUAL_DESTRUCTOR(ISectionIterator) virtual ISection *toFirst() = 0; virtual ISection *toLast() = 0; virtual ISection *toNext() = 0; @@ -840,6 +866,7 @@ class ISectionIterator class ICompound { public: + VIRTUAL_DESTRUCTOR(ICompound) /*! Represents the kind of compounds recognised by doxygen. */ enum CompoundKind { Invalid=0, Class, Struct, Union, Interface, Protocol, Category, @@ -900,6 +927,7 @@ class ICompound class ICompoundIterator { public: + VIRTUAL_DESTRUCTOR(ICompoundIterator) virtual void toFirst() = 0; virtual void toLast() = 0; virtual void toNext() = 0; @@ -911,6 +939,7 @@ class ICompoundIterator class IRelatedCompound { public: + VIRTUAL_DESTRUCTOR(IRelatedCompound) enum Protection { Public, Protected, Private }; enum Kind { Normal, Virtual }; virtual ICompound *compound() const = 0; @@ -923,6 +952,7 @@ class IRelatedCompound class IRelatedCompoundIterator { public: + VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator) virtual IRelatedCompound *toFirst() = 0; virtual IRelatedCompound *toLast() = 0; virtual IRelatedCompound *toNext() = 0; @@ -1042,6 +1072,7 @@ class IPage : public ICompound class IDoxygen { public: + VIRTUAL_DESTRUCTOR(IDoxygen) /*! Returns an iterator that can be used to iterate over the list * of compounds found in the project. diff --git a/addon/doxmlparser/src/basehandler.h b/addon/doxmlparser/src/basehandler.h index 44bedb6..cc275a6 100644 --- a/addon/doxmlparser/src/basehandler.h +++ b/addon/doxmlparser/src/basehandler.h @@ -165,7 +165,7 @@ template class BaseHandler : public QXmlDefaultHandler, return TRUE; } - StartElementHandlerT *handler = m_startHandlers[name]; + StartElementHandlerT *handler = ElementMapper::m_startHandlers[name]; if (handler) { (*handler)(attrib); @@ -205,7 +205,7 @@ template class BaseHandler : public QXmlDefaultHandler, } else if (m_skipUntil.isEmpty()) { - EndElementHandlerT *handler = m_endHandlers[name]; + EndElementHandlerT *handler = ElementMapper::m_endHandlers[name]; if (handler) { (*handler)(); @@ -301,7 +301,7 @@ template class BaseFallBackHandler : public ElementMapper, bool handleStartElement(const QString & name, const QXmlAttributes & attrib) { - StartElementHandlerT *handler = m_startHandlers[name]; + StartElementHandlerT *handler = ElementMapper::m_startHandlers[name]; if (handler) { (*handler)(attrib); @@ -311,7 +311,7 @@ template class BaseFallBackHandler : public ElementMapper, } bool handleEndElement(const QString &name) { - EndElementHandlerT *handler = m_endHandlers[name]; + EndElementHandlerT *handler = ElementMapper::m_endHandlers[name]; if (handler) { (*handler)(); diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h deleted file mode 100644 index f2e6902..0000000 --- a/addon/doxmlparser/src/doxmlintf.h +++ /dev/null @@ -1,1101 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2006 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 _DOXMLINTF_H -#define _DOXMLINTF_H - -/*! \file - * \brief The interface to the object model provided by the XML parser - * library. - * - * To start using this library one calls createObjectModel() and then - * uses the returned IDoxygen interface to read doxygen generated - * XML output and navigate through the information contained in it. - * - * @see createObjectModel() - */ - -class IMember; -class IDocIterator; -class ICompound; -class ISection; -class INode; -class IDocInternal; -class IDocRoot; - -/*! \brief Read only interface to a string. - */ -class IString -{ - public: - /*! Returns a latin1 character representation of the string. */ - virtual const char *latin1() const = 0; - /*! Returns a 16-bit unicode character representation of the character at - * position \a index in the string. The first character is at index 0. - */ - virtual unsigned short unicodeCharAt(int index) const = 0; - /*! Returns true if this string is empty or false otherwise */ - virtual bool isEmpty() const = 0; - /*! Returns the number of characters in the string. */ - virtual int length() const = 0; -}; - -/*! \brief Base interface for hyperlinked text - * - * Depending on the result of kind() the interface is extended by - * ILT_Text or ILT_Ref. - */ -class ILinkedText -{ - public: - enum Kind { Kind_Text, Kind_Ref }; - virtual Kind kind() const = 0; -}; - -/*! \brief Plain text fragment. - */ -class ILT_Text : public ILinkedText -{ - public: - virtual const IString *text() const = 0; -}; - -/*! \brief Reference to an object. - */ -class ILT_Ref : public ILinkedText -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString *id() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString *external() const = 0; - virtual const IString *text() const = 0; -}; - -/*! \brief Iterates over a list of ILinkedText fragments. - */ -class ILinkedTextIterator -{ - public: - virtual ILinkedText *toFirst() = 0; - virtual ILinkedText *toLast() = 0; - virtual ILinkedText *toNext() = 0; - virtual ILinkedText *toPrev() = 0; - virtual ILinkedText *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief Representation of a parameter of a function. */ -class IParam -{ - public: - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * declarationName() const = 0; - virtual const IString * definitionName() const = 0; - virtual const IString * attrib() const = 0; - virtual const IString * arraySpecifier() const = 0; - virtual ILinkedTextIterator *defaultValue() const = 0; - virtual IDocRoot *briefDescription() const = 0; -}; - -class IParamIterator -{ - public: - virtual IParam *toFirst() = 0; - virtual IParam *toLast() = 0; - virtual IParam *toNext() = 0; - virtual IParam *toPrev() = 0; - virtual IParam *current() const = 0; - virtual void release() = 0; -}; - -class IMemberReference -{ - public: - virtual IMember *member() const = 0; - virtual const IString * name() const = 0; - virtual const IString * scope() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual const IString * ambiguityScope() const = 0; -}; - -class IMemberReferenceIterator -{ - public: - virtual IMemberReference *toFirst() = 0; - virtual IMemberReference *toLast() = 0; - virtual IMemberReference *toNext() = 0; - virtual IMemberReference *toPrev() = 0; - virtual IMemberReference *current() const = 0; - virtual void release() = 0; -}; - -class IDoc -{ - public: - enum Kind - { - Invalid = 0, // 0 - Para, // 1 -> IDocPara - Text, // 2 -> IDocText - MarkupModifier, // 3 -> IDocMarkupModifier - ItemizedList, // 4 -> IDocItemizedList - OrderedList, // 5 -> IDocOrderedList - ListItem, // 6 -> IDocListItem - ParameterList, // 7 -> IDocParameterList - Parameter, // 8 -> IDocParameter - SimpleSect, // 9 -> IDocSimpleSect - Title, // 10 -> IDocTitle - Ref, // 11 -> IDocRef - VariableList, // 12 -> IDocVariableList - VariableListEntry, // 13 -> IDocVariableListEntry - HRuler, // 14 -> IDocHRuler - LineBreak, // 15 -> IDocLineBreak - ULink, // 16 -> IDocULink - EMail, // 17 -> IDocEMail - Link, // 18 -> IDocLink - ProgramListing, // 19 -> IDocProgramListing - CodeLine, // 20 -> IDocCodeLine - Highlight, // 21 -> IDocHighlight - Formula, // 22 -> IDocFormula - Image, // 23 -> IDocImage - DotFile, // 24 -> IDocDotFile - IndexEntry, // 25 -> IDocIndexEntry - Table, // 26 -> IDocTable - Row, // 27 -> IDocRow - Entry, // 28 -> IDocEntry - Section, // 29 -> IDocSection - Verbatim, // 30 -> IDocVerbatim - Copy, // 31 -> IDocCopy - TocList, // 32 -> IDocTocList - TocItem, // 33 -> IDocTocItem - Anchor, // 34 -> IDocAnchor - Symbol, // 35 -> IDocSymbol - Internal, // 36 -> IDocInternal - Root, // 37 -> IDocRoot - ParameterItem // 38 -> IDocParameterItem - }; - virtual Kind kind() const = 0; -}; - -class IDocMarkup : public IDoc -{ - public: - enum Markup - { - Normal = 0x000, - Bold = 0x001, - Emphasis = 0x002, - ComputerOutput = 0x004, - Subscript = 0x008, - Superscript = 0x010, - SmallFont = 0x020, - Center = 0x040, - Preformatted = 0x080, - Heading = 0x100 - }; -}; - -class IDocPara : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocText : public IDocMarkup -{ - public: - virtual const IString * text() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocMarkupModifier : public IDoc -{ - public: - virtual bool enabled() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocItemizedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocOrderedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocListItem : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocParameterList : public IDoc -{ - public: - enum Types { Param, RetVal, Exception }; - virtual Types sectType() const = 0; - virtual IDocIterator *params() const = 0; -}; - -class IDocParameterItem : public IDoc -{ - public: - virtual IDocIterator *paramNames() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocParameter : public IDoc -{ - public: - virtual const IString * name() const = 0; -}; - -class IDocTitle : public IDoc -{ - public: - virtual IDocIterator *title() const = 0; -}; - -class IDocSimpleSect : public IDoc -{ - public: - enum Types { Invalid = 0, - See, Return, Author, Version, - Since, Date, Bug, Note, - Warning, Par, Deprecated, Pre, - Post, Invar, Remark, Attention, - Todo, Test, RCS, EnumValues, - Examples - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocRef : public IDoc -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString * refId() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString * external() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocVariableList : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocVariableListEntry : public IDoc -{ - public: - virtual ILinkedTextIterator * term() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocHRuler : public IDoc -{ -}; - -class IDocLineBreak : public IDoc -{ -}; - -class IDocULink : public IDoc -{ - public: - virtual const IString * url() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocEMail : public IDoc -{ - public: - virtual const IString * address() const = 0; -}; - -class IDocLink : public IDoc -{ - public: - virtual const IString * refId() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocProgramListing : public IDoc -{ - public: - virtual IDocIterator *codeLines() const = 0; -}; - -class IDocCodeLine : public IDoc -{ - public: - virtual int lineNumber() const = 0; - virtual const IString * refId() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocHighlight : public IDoc -{ - public: - enum HighlightKind - { Invalid=0, - Comment, Keyword, - KeywordType, KeywordFlow, CharLiteral, - StringLiteral, Preprocessor - }; - virtual HighlightKind highlightKind() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocFormula : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocImage : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocDotFile : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocIndexEntry : public IDoc -{ - public: - virtual const IString * primary() const = 0; - virtual const IString * secondary() const = 0; -}; - -class IDocTable : public IDoc -{ - public: - virtual IDocIterator *rows() const = 0; - virtual int numColumns() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocRow : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocEntry : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocSection : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual int level() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocInternal : public IDoc -{ - public: - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; -}; - -class IDocTocList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocTocItem : public IDoc -{ - public: - virtual const IString *id() const = 0; - virtual const IString *title() const = 0; -}; - -class IDocCopy : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocVerbatim : public IDoc -{ - public: - enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim }; - virtual const IString *text() const = 0; - virtual Types type() const = 0; -}; - -class IDocAnchor : public IDoc -{ - public: - virtual const IString *id() const = 0; -}; - -class IDocSymbol : public IDoc -{ - public: - enum Types - { Invalid = 0, - Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual char letter() const = 0; -}; - -class IDocRoot : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocIterator -{ - public: - virtual IDoc *toFirst() = 0; - virtual IDoc *toLast() = 0; - virtual IDoc *toNext() = 0; - virtual IDoc *toPrev() = 0; - virtual IDoc *current() const = 0; - virtual void release() = 0; -}; - -class IEdgeLabel -{ - public: - virtual const IString * label() const = 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, TemplateInstance - }; - virtual INode * node() const = 0; - virtual NodeRelation relation() const = 0; - virtual const IString * relationString() 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 const IString * id() const = 0; - virtual const IString * label() const = 0; - virtual const IString * 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; -}; - -class IMember -{ - public: - enum MemberKind { Invalid=0, - Define, Property, Variable, Typedef, Enum, - Function, Signal, Prototype, Friend, DCOP, Slot, - EnumValue - }; - virtual ICompound *compound() const = 0; - virtual ISection *section() const = 0; - virtual MemberKind kind() const = 0; - virtual const IString * kindString() const = 0; - virtual const IString * id() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * typeString() const = 0; - virtual const IString * name() const = 0; - virtual const IString * readAccessor() const = 0; - virtual const IString * writeAccessor() const = 0; - virtual const IString * definition() const = 0; - virtual const IString * argsstring() const = 0; - virtual bool isConst() const = 0; - virtual bool isVolatile() const = 0; - virtual bool isStatic() const = 0; - virtual bool isExplicit() const = 0; - virtual bool isInline() const = 0; - virtual bool isMutable() const = 0; - virtual bool isReadable() const = 0; - virtual bool isWritable() const = 0; - virtual IParamIterator *parameters() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual ILinkedTextIterator *initializer() const = 0; - virtual ILinkedTextIterator *exceptions() const = 0; - virtual IMemberReferenceIterator *references() const = 0; - virtual IMemberReferenceIterator *referencedBy() const = 0; - virtual const IString *bodyFile() const = 0; - virtual int bodyStart() const = 0; - virtual int bodyEnd() const = 0; - virtual const IString * definitionFile() const = 0; - virtual int definitionLine() const = 0; - virtual IMemberReference *reimplements() const = 0; - virtual IMemberReferenceIterator *reimplementedBy() const = 0; - virtual IDocRoot *briefDescription() const = 0; - virtual IDocRoot *detailedDescription() const = 0; - virtual IDocRoot *inbodyDescription() const = 0; -}; - -class IDefine : public IMember -{ - public: -}; - -class IProperty : public IMember -{ - public: -}; - -class IVariable : public IMember -{ - public: -}; - -class ITypedef : public IMember -{ - public: -}; - -class IFunction : public IMember -{ - public: -}; - -class ISignal : public IMember -{ - public: -}; - -class IPrototype : public IMember -{ - public: -}; - -class IFriend : public IMember -{ - public: -}; - -class IDCOP : public IMember -{ - public: -}; - -class ISlot : public IMember -{ - public: -}; - -class IEnumValue : public IMember -{ - public: - virtual const IString * name() const = 0; -}; - -/*! \brief Include relation - */ -class IInclude -{ - public: - virtual const IString * name() const = 0; - virtual const IString * refId() const = 0; - virtual bool isLocal() const = 0; -}; - -class IIncludeIterator -{ - public: - virtual IInclude *toFirst() = 0; - virtual IInclude *toLast() = 0; - virtual IInclude *toNext() = 0; - virtual IInclude *toPrev() = 0; - virtual IInclude *current() const = 0; - virtual void release() = 0; -}; - -class IMemberIterator -{ - public: - virtual IMember *toFirst() = 0; - virtual IMember *toLast() = 0; - virtual IMember *toNext() = 0; - virtual IMember *toPrev() = 0; - virtual IMember *current() const = 0; - virtual void release() = 0; -}; - -class IEnum : public IMember -{ - public: - virtual IMemberIterator *enumValues() const = 0; -}; - -/*! \brief The interface to a section in the object model. - * - * A compound can have a number of sections, where each - * section contains a set of members with the properties implied by - * the section kind. The kind() method returns the kind of the section. - * The members of the section can be accessed via members(). Apart - * from using kind(), some of the individual properties of the section can - * also be inspected via isStatic(), isPublic(), isProtected() and - * isPrivate(). - */ -class ISection -{ - public: - /*! Possible section types */ - enum SectionKind - { Invalid=0, - UserDefined, //!< A user defined member group - PubTypes, //!< Public member typedefs - PubFuncs, //!< Public member functions - PubAttribs, //!< Public member attributes - PubSlots, //!< Public Qt Slots - Signals, //!< Qt Signals - DCOPFuncs, //!< KDE-DCOP interface functions - Properties, //!< IDL properties - Events, //!< C# events - PubStatFuncs, //!< Public static member functions - PubStatAttribs, //!< Public static attributes - ProTypes, //!< Protected member typedefs - ProFuncs, //!< Protected member functions - ProAttribs, //!< Protected member attributes - ProSlots, //!< Protected slots - ProStatFuncs, //!< Protected static member functions - ProStatAttribs, //!< Protected static member attributes - PacTypes, //!< Package member typedefs - PacFuncs, //!< Package member functions - PacAttribs, //!< Package member attributes - PacStatFuncs, //!< Package static member functions - PacStatAttribs, //!< Package static member attributes - PriTypes, //!< Private member typedefs - PriFuncs, //!< Private member functions - PriAttribs, //!< Private member attributes - PriSlots, //!< Private Qt slots - PriStatFuncs, //!< Private static member functions - PriStatAttribs, //!< Private static member attributes - Friend, //!< Friends - Related, //!< Function marked as related - Defines, //!< Preprocessor defines - Prototypes, //!< Global function prototypes - Typedefs, //!< Global typedefs - Enums, //!< Enumerations - Functions, //!< Global functions - Variables //!< Global variables - }; - - /*! Returns a string representation of the value returned by kind() */ - virtual const IString * kindString() const = 0; - - /*! Returns what kind of section this is */ - virtual SectionKind kind() const = 0; - - /*! Returns the description attached to this section (for user defined - * sections, also known as member groups). - */ - virtual IDocRoot *description() const = 0; - - /*! Returns an iterator for the members of this section */ - virtual IMemberIterator *members() const = 0; - - /*! Returns \c true if this section contains statics */ - virtual bool isStatic() const = 0; - - /*! Returns \c true if this section belongs to a - * public section of a class - */ - virtual bool isPublic() const = 0; - - /*! Returns \c true if this section belongs to a - * private section of a class - */ - virtual bool isPrivate() const = 0; - - /*! Returns \c true if this section belongs to a - * protected section of a class - * */ - virtual bool isProtected() const = 0; -}; - -class IUserDefined : public ISection -{ - public: - virtual const IString * header() const = 0; -}; - -class ISectionIterator -{ - public: - virtual ISection *toFirst() = 0; - virtual ISection *toLast() = 0; - virtual ISection *toNext() = 0; - virtual ISection *toPrev() = 0; - virtual ISection *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a compound in the object model. - * - * A compound has a name which can be obtained via the name() method - * and a unique id, which is return via the id() method. - * A compound consists zero or more members which are grouped into sections. - * The sections() method can be used to access the individual sections. - * Alternatively, members can be obtained by name or id. There are - * different types of compounds. The kind() method returns what kind of - * compound this is. Depending on the return value one can dynamically - * cast an interface pointer to an more specialised interface that provides - * additional methods. - * Example: - * \code - * ICompound *comp=...; - * if (comp->kind()==ICompound::Class) - * { - * IClass *cls = dynamic_cast(comp); - * // use methods of IClass - * } - * \endcode - * The documentation that is provided by a compound is available via - * the briefDescription() and detailedDescription() methods. - * To avoid excessive memory usage, release() should be called (once) on each - * compound interface pointer that is no longer needed. - */ -class ICompound -{ - public: - /*! Represents the kind of compounds recognised by doxygen. */ - enum CompoundKind { Invalid=0, - Class, Struct, Union, Interface, Protocol, Category, - Exception, File, Namespace, Group, Page, Example, Dir - }; - - /*! Returns the name of this compound */ - virtual const IString * name() const = 0; - - /*! Returns the id of this compound. The id is a - * unique string representing a specific compound object. - */ - virtual const IString * id() const = 0; - - /*! Returns the kind of compound. See #CompoundKind for possible - * values. - */ - virtual CompoundKind kind() const = 0; - - /*! Returns a string representation of the compound kind. - * @see kind() - */ - virtual const IString * kindString() const = 0; - - /*! Returns an iterator for the different member sections in this - * compound. - */ - virtual ISectionIterator *sections() const = 0; - - /*! Returns a tree-structured representation of the brief - * description that is attached to this compound. - */ - virtual IDocRoot *briefDescription() const = 0; - - /*! Returns a tree-structured representation of the detailed - * description that is attached to this compound. - */ - virtual IDocRoot *detailedDescription() const = 0; - - /*! Returns an interface to a member given its id. - * @param id The member id. - */ - virtual IMember *memberById(const char * id) const = 0; - - /*! Returns a list of all members within the compound having a certain - * name. Member overloading is the reason why there can be more than - * one member. - * @param name The name of the member. - */ - virtual IMemberIterator *memberByName(const char * name) const = 0; - - /*! Decreases the reference counter for this compound. If it reaches - * zero, the memory for the compound will be released. - */ - virtual void release() = 0; -}; - -class ICompoundIterator -{ - public: - virtual void toFirst() = 0; - virtual void toLast() = 0; - virtual void toNext() = 0; - virtual void toPrev() = 0; - virtual ICompound *current() const = 0; - virtual void release() = 0; -}; - -class IRelatedCompound -{ - public: - enum Protection { Public, Protected, Private }; - enum Kind { Normal, Virtual }; - virtual ICompound *compound() const = 0; - virtual Protection protection() const = 0; - virtual Kind kind() const = 0; - virtual const IString *name() const = 0; - -}; - -class IRelatedCompoundIterator -{ - public: - virtual IRelatedCompound *toFirst() = 0; - virtual IRelatedCompound *toLast() = 0; - virtual IRelatedCompound *toNext() = 0; - virtual IRelatedCompound *toPrev() = 0; - virtual IRelatedCompound *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a class in the object model. - */ -class IClass : public ICompound -{ - public: - virtual IGraph *inheritanceGraph() const = 0; - virtual IGraph *collaborationGraph() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual const IString *locationBodyFile() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; - - // TODO: - // class: - // listOfAllMembers() - // protection() - // isAbstract() -}; - -/*! \brief The interface to a struct in the object model. - */ -class IStruct : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; -}; - -/*! \brief The interface to a union in the object model. - */ -class IUnion : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a Java/IDL interface in the object model. - */ -class IInterface : public ICompound -{ - public: - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; -}; - - -/*! \brief The interface to a Java/IDL exception in the object model. - */ -class IException : public ICompound -{ -}; - -/*! \brief The interface to a namespace in the object model. - */ -class INamespace : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a file in the object model. - */ -class IFile : public ICompound -{ - public: - virtual IGraph *includeDependencyGraph() const = 0; - virtual IGraph *includedByDependencyGraph() const = 0; - virtual IDocProgramListing *source() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - - virtual IIncludeIterator *includes() const = 0; - virtual IIncludeIterator *includedBy() const = 0; - - // ICompound *innerNamespaces() - // ICompoundIterator *innerClasses() -}; - -/*! \brief The interface to a group in the object model. - */ -class IGroup : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - // group: - // Title() - // innerFile() - // innerPage() -}; - -/*! \brief The interface to a page in the object model. - */ -class IPage : public ICompound -{ - public: - virtual const IDocTitle *title() const = 0; -}; - -/*! Root node of the object model. */ -class IDoxygen -{ - public: - - /*! Returns an iterator that can be used to iterate over the list - * of compounds found in the project. - */ - virtual ICompoundIterator *compounds() const = 0; - - /*! Returns a compound given its unique \a id. If you have a - * compound id this function is much more efficient than iterating - * over the compound list. Returns 0 if the id is not valid. - */ - virtual ICompound *compoundById(const char * id) const = 0; - - /*! Returns a compound given its name (including the scope). - * Returns 0 if the name is not found in the project. - */ - virtual ICompound *compoundByName(const char * name) const = 0; - - /*! Returns an interface to a compound containing a member given it the - * member's id. Given the ICompound interface one can use the same id - * to obtain the IMember interface. - * @param id The member id. - */ - virtual ICompound *memberById(const char * id) const = 0; - - /*! Returns a list of all compounds containing at least one members - * with a certain name. Each compound can be asked to return the - * list of members with that name. - * @param name The name of the member. - */ - virtual ICompoundIterator *memberByName(const char * name) const = 0; - - /*! Releases the memory for the object hierarchy obtained by - * createdObjecModelFromXML(). First release all iterators before calling - * this function. - */ - virtual void release() = 0; - - /*! Sets the debug level. - * - 0 all debugging messages are disabled (the default). - * - 1 display important messages only - * - 2 display any messages. - */ - virtual void setDebugLevel(int level) = 0; - - /*! Reads an XML directory produced by doxygen and builds up a data - * structure representing the contents of the XML files in the directory. - */ - virtual bool readXMLDir(const char *xmlDirName) = 0; -}; - -/*! Factory method that creates an empty object model for a doxygen generated XML file. - * Use the readXMLDir() method to build the model from an XML output - * directory containing doxygen output. - */ -IDoxygen *createObjectModel(); - -#endif diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h new file mode 120000 index 0000000..1b1e847 --- /dev/null +++ b/addon/doxmlparser/src/doxmlintf.h @@ -0,0 +1 @@ +../include/doxmlintf.h \ No newline at end of file diff --git a/configure b/configure index 751e270..cce41da 100755 --- a/configure +++ b/configure @@ -20,7 +20,7 @@ doxygen_version_minor=5 doxygen_version_revision=5 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20080309 +doxygen_version_mmn=20080316 bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/src/index.cpp b/src/index.cpp index 711e760..e2b7750 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -2937,7 +2937,7 @@ void writeIndex(OutputList &ol) ol.startIndexSection(isMainPage); if (mainPageHasTitle()) { - ol.parseDoc(defFileName,defLine,Doxygen::mainPage,0,Doxygen::mainPage->title(),FALSE,FALSE); + ol.parseText(Doxygen::mainPage->title()); } else { @@ -2954,13 +2954,22 @@ void writeIndex(OutputList &ol) bool first=Doxygen::mainPage==0; for (pdi.toFirst();(pd=pdi.current());++pdi) { - if (!pd->getGroupDef() && !pd->isReference()) + if (!pd->getGroupDef() && !pd->isReference() && + !pd->hasParentPage() + ) { QCString title = pd->title(); if (title.isEmpty()) title=pd->name(); ol.startIndexSection(isPageDocumentation); ol.parseText(title); ol.endIndexSection(isPageDocumentation); + ol.pushGeneratorState(); // write TOC title (RTF only) + ol.disableAllBut(OutputGenerator::RTF); + ol.startIndexSection(isPageDocumentation2); + ol.parseText(title); + ol.endIndexSection(isPageDocumentation2); + ol.popGeneratorState(); + ol.writeAnchor(0,pd->name()); ol.writePageLink(pd->getOutputFileBase(),first); first=FALSE; diff --git a/src/index.h b/src/index.h index fe31d0f..ef8b543 100644 --- a/src/index.h +++ b/src/index.h @@ -115,6 +115,7 @@ enum IndexSections isFileDocumentation, isExampleDocumentation, isPageDocumentation, + isPageDocumentation2, isEndIndex }; diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 4dd4e06..7dd48f9 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -236,7 +236,7 @@ static void writeDefaultHeaderPart1(QTextStream &t) s=extraPackages.next(); } t << "\\makeindex\n" - "\\setcounter{tocdepth}{1}\n" + "\\setcounter{tocdepth}{3}\n" "\\renewcommand{\\footrulewidth}{0.4pt}\n" "\\begin{document}\n"; if (theTranslator->idLanguage()=="greek") t << "\\selectlanguage{greek}\n"; @@ -585,6 +585,8 @@ void LatexGenerator::startIndexSection(IndexSections is) t << "{"; //Page Documentation}\n"; } break; + case isPageDocumentation2: + break; case isEndIndex: break; } @@ -793,6 +795,8 @@ void LatexGenerator::endIndexSection(IndexSections is) #endif } break; + case isPageDocumentation2: + break; case isEndIndex: t << "\\printindex\n"; t << "\\end{document}\n"; @@ -1104,7 +1108,7 @@ void LatexGenerator::endMemberHeader() void LatexGenerator::startMemberDoc(const char *clname, const char *memname, const char *, - const char *) + const char *title) { if (memname && memname[0]!='@') { @@ -1141,6 +1145,9 @@ void LatexGenerator::startMemberDoc(const char *clname, // escapeMakeIndexChars(this,t,memname); // t << "]"; //} + t << "["; + escapeMakeIndexChars(title); + t << "]"; t << "{\\setlength{\\rightskip}{0pt plus 5cm}"; disableLinks=TRUE; } @@ -1181,9 +1188,16 @@ void LatexGenerator::writeAnchor(const char *fName,const char *name) { //printf("LatexGenerator::writeAnchor(%s,%s)\n",fName,name); t << "\\label{" << name << "}" << endl; - if (fName && Config_getBool("PDF_HYPERLINKS")) + if (Config_getBool("PDF_HYPERLINKS")) { - t << "\\hypertarget{" << stripPath(fName) << "_" << name << "}{}" << endl; + if (fName) + { + t << "\\hypertarget{" << stripPath(fName) << "_" << name << "}{}" << endl; + } + else + { + t << "\\hypertarget{" << name << "}{}" << endl; + } } } diff --git a/src/pagedef.cpp b/src/pagedef.cpp index c159283..9168d82 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -13,13 +13,14 @@ PageDef::PageDef(const char *f,int l,const char *n, : Definition(f,l,n), m_title(t) { setDocumentation(d,f,l); - subPageDict = new PageSDict(7); - pageScope = 0; + m_subPageDict = new PageSDict(7); + m_pageScope = 0; + m_nestingLevel = 0; } PageDef::~PageDef() { - delete subPageDict; + delete m_subPageDict; } void PageDef::findSectionsInDocumentation() @@ -46,11 +47,18 @@ void PageDef::addInnerCompound(Definition *def) if (def->definitionType()==Definition::TypePage) { PageDef *pd = (PageDef*)def; - subPageDict->append(pd->name(),pd); + m_subPageDict->append(pd->name(),pd); def->setOuterScope(this); + pd->setNestingLevel(m_nestingLevel+1); } } +bool PageDef::hasParentPage() const +{ + return getOuterScope() && + getOuterScope()->definitionType()==Definition::TypePage; +} + void PageDef::writeDocumentation(OutputList &ol) { //outputList->disable(OutputGenerator::Man); @@ -62,6 +70,17 @@ void PageDef::writeDocumentation(OutputList &ol) startFile(ol,pageName,pageName,title(),HLI_None,TRUE); + ol.pushGeneratorState(); + + if (m_nestingLevel>0) // a sub page + { + // do not generate sub page output for RTF and LaTeX, as these are + // part of their parent page + ol.disableAll(); + ol.enable(OutputGenerator::Man); + ol.enable(OutputGenerator::Html); + } + if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) { getOuterScope()->writeNavigationPath(ol); @@ -80,6 +99,7 @@ void PageDef::writeDocumentation(OutputList &ol) // for Latex the section is already generated as a chapter in the index! ol.pushGeneratorState(); ol.disable(OutputGenerator::Latex); + ol.disable(OutputGenerator::RTF); SectionInfo *si=0; if (!title().isEmpty() && !name().isEmpty() && (si=Doxygen::sectionDict.find(pageName))!=0) @@ -93,18 +113,11 @@ void PageDef::writeDocumentation(OutputList &ol) } ol.popGeneratorState(); - ol.startTextBlock(); - ol.parseDoc(docFile(), // fileName - docLine(), // startLine - this, // context - 0, // memberdef - documentation(), // docStr - TRUE, // index words - FALSE // not an example - ); - ol.endTextBlock(); + writePageDocumentation(ol); + + ol.popGeneratorState(); + endFile(ol); - //outputList->enable(OutputGenerator::Man); if (!Config_getString("GENERATE_TAGFILE").isEmpty()) { @@ -131,6 +144,53 @@ void PageDef::writeDocumentation(OutputList &ol) } } +void PageDef::writePageDocumentation(OutputList &ol) +{ + ol.startTextBlock(); + ol.parseDoc(docFile(), // fileName + docLine(), // startLine + this, // context + 0, // memberdef + documentation(), // docStr + TRUE, // index words + FALSE // not an example + ); + ol.endTextBlock(); + + if (hasSubPages()) + { + // for printed documentation we write subpages as section's of the + // parent page. + ol.pushGeneratorState(); + ol.disableAll(); + ol.enable(OutputGenerator::Latex); + ol.enable(OutputGenerator::RTF); + + PageSDict::Iterator pdi(*m_subPageDict); + PageDef *subPage=pdi.toFirst(); + for (pdi.toFirst();(subPage=pdi.current());++pdi) + { + SectionInfo::SectionType sectionType = SectionInfo::Paragraph; + switch (m_nestingLevel) + { + case 0: sectionType = SectionInfo::Page; break; + case 1: sectionType = SectionInfo::Section; break; + case 2: sectionType = SectionInfo::Subsection; break; + case 3: sectionType = SectionInfo::Subsubsection; break; + default: sectionType = SectionInfo::Paragraph; break; + } + QCString title = subPage->title(); + if (title.isEmpty()) title = subPage->name(); + ol.startSection(subPage->name(),title,sectionType); + ol.parseText(title); + ol.endSection(subPage->name(),sectionType); + subPage->writePageDocumentation(ol); + } + + ol.popGeneratorState(); + } +} + bool PageDef::visibleInIndex() const { return // not part of a group @@ -153,7 +213,11 @@ bool PageDef::documentedPage() const bool PageDef::hasSubPages() const { - return subPageDict->count()>0; + return m_subPageDict->count()>0; } +void PageDef::setNestingLevel(int l) +{ + m_nestingLevel = l; +} diff --git a/src/pagedef.h b/src/pagedef.h index 98ed31b..2087d24 100644 --- a/src/pagedef.h +++ b/src/pagedef.h @@ -35,7 +35,6 @@ class PageDef : public Definition { return isLinkableInProject() || isReference(); } - void addSubPage(PageDef *def); void writeDocumentation(OutputList &ol); // functions to get a uniform interface with Definitions @@ -43,21 +42,25 @@ class PageDef : public Definition void findSectionsInDocumentation(); QCString title() const { return m_title; } GroupDef * getGroupDef() const; - PageSDict * getSubPages() const { return subPageDict; } + PageSDict * getSubPages() const { return m_subPageDict; } void setFileName(const char *name) { m_fileName = name; } void addInnerCompound(Definition *d); bool visibleInIndex() const; bool documentedPage() const; bool hasSubPages() const; - void setPageScope(Definition *d){ pageScope = d; } - Definition *getPageScope() const { return pageScope; } + bool hasParentPage() const; + void setPageScope(Definition *d){ m_pageScope = d; } + Definition *getPageScope() const { return m_pageScope; } private: + void setNestingLevel(int l); + void writePageDocumentation(OutputList &ol); QCString m_fileName; QCString m_title; GroupDef *m_inGroup; - PageSDict *subPageDict; // list of pages in the group - Definition *pageScope; + PageSDict *m_subPageDict; // list of pages in the group + Definition *m_pageScope; + int m_nestingLevel; }; class PageSDict : public SDict diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 79e2fec..9634acc 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -39,8 +39,8 @@ #include "dirdef.h" #include "vhdldocgen.h" -//#define DBG_RTF(x) x; -#define DBG_RTF(x) +#define DBG_RTF(x) x; +//#define DBG_RTF(x) static QCString dateToRTFDateString() { @@ -515,6 +515,10 @@ void RTFGenerator::startIndexSection(IndexSections is) { //Page Documentation beginRTFChapter(); + } + break; + case isPageDocumentation2: + { t << "{\\tc \\v "; } break; @@ -833,7 +837,7 @@ void RTFGenerator::endIndexSection(IndexSections is) { //#error "fix me in the same way as the latex index..." //t << "{\\tc \\v " << theTranslator->trPageDocumentation() << "}"<< endl; - t << "}"<< endl; + //t << "}"<< endl; //PageSDict::Iterator pdi(*Doxygen::pageSDict); //PageDef *pd=pdi.toFirst(); //bool first=TRUE; @@ -850,6 +854,12 @@ void RTFGenerator::endIndexSection(IndexSections is) //} } break; + case isPageDocumentation2: + { + t << "}"; + t << "\\par " << rtf_Style_Reset << endl; + } + break; case isEndIndex: beginRTFChapter(); t << rtf_Style["Heading1"]->reference; @@ -1607,8 +1617,9 @@ void RTFGenerator::startSection(const char *,const char *title,SectionInfo::Sect void RTFGenerator::endSection(const char *lab,SectionInfo::SectionType) { DBG_RTF(t << "{\\comment (endSection)}" << endl) - newParagraph(); // make bookmark + m_omitParagraph=FALSE; + newParagraph(); writeAnchor(0,lab); t << "}"; } @@ -1813,7 +1824,7 @@ void RTFGenerator::writeAnchor(const char *fileName,const char *name) anchor+=name; } - DBG_RTF(t <<"{\\comment writeAncheor (" << anchor << ")}" << endl) + DBG_RTF(t <<"{\\comment writeAnchor (" << anchor << ")}" << endl) t << "{\\bkmkstart " << rtfFormatBmkStr(anchor) << "}" << endl; t << "{\\bkmkend " << rtfFormatBmkStr(anchor) << "}" << endl; } -- cgit v0.12