summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2008-03-16 22:09:59 (GMT)
committerdimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7>2008-03-16 22:09:59 (GMT)
commitf630007a569f8342ada7b2ecf06692353ddbce3c (patch)
tree087be77a871260c8a278c994394567a146fb25b8
parentfb91b752942b81dac21be5ad18bcb09fbafa711b (diff)
downloadDoxygen-f630007a569f8342ada7b2ecf06692353ddbce3c.zip
Doxygen-f630007a569f8342ada7b2ecf06692353ddbce3c.tar.gz
Doxygen-f630007a569f8342ada7b2ecf06692353ddbce3c.tar.bz2
Release-1.5.5-20080316
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--addon/doxmlparser/include/doxmlintf.h31
-rw-r--r--addon/doxmlparser/src/basehandler.h8
l---------[-rw-r--r--]addon/doxmlparser/src/doxmlintf.h1102
-rwxr-xr-xconfigure2
-rw-r--r--src/index.cpp13
-rw-r--r--src/index.h1
-rw-r--r--src/latexgen.cpp22
-rw-r--r--src/pagedef.cpp96
-rw-r--r--src/pagedef.h15
-rw-r--r--src/rtfgen.cpp21
12 files changed, 176 insertions, 1143 deletions
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 T> class BaseHandler : public QXmlDefaultHandler,
return TRUE;
}
- StartElementHandlerT *handler = m_startHandlers[name];
+ StartElementHandlerT *handler = ElementMapper<T>::m_startHandlers[name];
if (handler)
{
(*handler)(attrib);
@@ -205,7 +205,7 @@ template<class T> class BaseHandler : public QXmlDefaultHandler,
}
else if (m_skipUntil.isEmpty())
{
- EndElementHandlerT *handler = m_endHandlers[name];
+ EndElementHandlerT *handler = ElementMapper<T>::m_endHandlers[name];
if (handler)
{
(*handler)();
@@ -301,7 +301,7 @@ template<class T> class BaseFallBackHandler : public ElementMapper<T>,
bool handleStartElement(const QString & name,
const QXmlAttributes & attrib)
{
- StartElementHandlerT *handler = m_startHandlers[name];
+ StartElementHandlerT *handler = ElementMapper<T>::m_startHandlers[name];
if (handler)
{
(*handler)(attrib);
@@ -311,7 +311,7 @@ template<class T> class BaseFallBackHandler : public ElementMapper<T>,
}
bool handleEndElement(const QString &name)
{
- EndElementHandlerT *handler = m_endHandlers[name];
+ EndElementHandlerT *handler = ElementMapper<T>::m_endHandlers[name];
if (handler)
{
(*handler)();
diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h
index f2e6902..1b1e847 100644..120000
--- a/addon/doxmlparser/src/doxmlintf.h
+++ b/addon/doxmlparser/src/doxmlintf.h
@@ -1,1101 +1 @@
-/******************************************************************************
- *
- * $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<IClass*>(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
+../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<PageDef>
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;
}