Blame addon/doxmlparser/src/dochandler.h

Packit 1c1d7e
/******************************************************************************
Packit 1c1d7e
 *
Packit 1c1d7e
 * $Id$
Packit 1c1d7e
 *
Packit 1c1d7e
 *
Packit 1c1d7e
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Permission to use, copy, modify, and distribute this software and its
Packit 1c1d7e
 * documentation under the terms of the GNU General Public License is hereby 
Packit 1c1d7e
 * granted. No representations are made about the suitability of this software 
Packit 1c1d7e
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit 1c1d7e
 * See the GNU General Public License for more details.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
Packit 1c1d7e
#ifndef _DOCHANDLER_H
Packit 1c1d7e
#define _DOCHANDLER_H
Packit 1c1d7e
Packit 1c1d7e
#include <qstring.h>
Packit 1c1d7e
#include <qlist.h>
Packit 1c1d7e
#include <qxml.h>
Packit 1c1d7e
Packit 1c1d7e
#include <doxmlintf.h>
Packit 1c1d7e
#include "stringimpl.h"
Packit 1c1d7e
#include "basehandler.h"
Packit 1c1d7e
#include "baseiterator.h"
Packit 1c1d7e
Packit 1c1d7e
class ParagraphHandler;
Packit 1c1d7e
class DocInternalHandler;
Packit 1c1d7e
class LinkedTextImpl;
Packit 1c1d7e
class LinkedTextHandler;
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
class DocImpl : public IDoc { public: virtual ~DocImpl() {} };
Packit 1c1d7e
Packit 1c1d7e
#define DEFINE_CLS_IMPL(cls) \
Packit 1c1d7e
  class cls##Impl : public I##cls, public DocImpl { public: virtual ~cls##Impl() {} }
Packit 1c1d7e
Packit 1c1d7e
DEFINE_CLS_IMPL(DocMarkup);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocPara);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocText);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocMarkupModifier);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocItemizedList);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocOrderedList);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocListItem);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocParameterList);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocParameterItem);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocParameter);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocTitle);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocSimpleSect);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocRef);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocVariableList);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocVariableListEntry);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocHRuler);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocLineBreak);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocULink);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocEMail);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocLink);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocProgramListing);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocCodeLine);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocHighlight);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocFormula);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocImage);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocDotFile);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocIndexEntry);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocTable);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocRow);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocEntry);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocSection);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocVerbatim);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocCopy);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocTocList);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocTocItem);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocAnchor);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocSymbol);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocInternal);
Packit 1c1d7e
DEFINE_CLS_IMPL(DocRoot);
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a piece of text.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class TextNode : public DocTextImpl
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    TextNode(const QString &t,int markup,int level) 
Packit 1c1d7e
      : m_text(t), m_markup(markup), m_headingLevel(level) {}
Packit 1c1d7e
    virtual ~TextNode() {}
Packit 1c1d7e
Packit 1c1d7e
    // IDocText
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Text; }
Packit 1c1d7e
    virtual const IString *text() const { return &m_text; }
Packit 1c1d7e
    virtual int markup() const { return m_markup; }
Packit 1c1d7e
    virtual int headingLevel() const { return m_headingLevel; }
Packit 1c1d7e
  
Packit 1c1d7e
  private:  
Packit 1c1d7e
    StringImpl m_text;
Packit 1c1d7e
    int m_markup;
Packit 1c1d7e
    int m_headingLevel;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a change in the markup style.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class MarkupModifierNode : public DocMarkupModifierImpl
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    MarkupModifierNode(int markup,bool enabled,int level=0) 
Packit 1c1d7e
      : m_markup(markup), m_enabled(enabled), m_headingLevel(level) {}
Packit 1c1d7e
    virtual ~MarkupModifierNode() {}
Packit 1c1d7e
  
Packit 1c1d7e
    // IDocMarkupModifier
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::MarkupModifier; }
Packit 1c1d7e
    virtual bool enabled() const { return m_enabled; }
Packit 1c1d7e
    virtual int markup() const { return m_markup; }
Packit 1c1d7e
    virtual int headingLevel() const { return m_headingLevel; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    int m_markup;
Packit 1c1d7e
    bool m_enabled;
Packit 1c1d7e
    int m_headingLevel;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Handles markup commands in the XML input. 
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    MarkupHandler(QList<DocImpl> &children,QString &curString);
Packit 1c1d7e
    virtual ~MarkupHandler();
Packit 1c1d7e
    int markup() const { return m_curMarkup; }
Packit 1c1d7e
    int headingLevel() const { return m_headingLevel; }
Packit 1c1d7e
Packit 1c1d7e
    virtual void startBold(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endBold();
Packit 1c1d7e
    virtual void startEmphasis(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endEmphasis();
Packit 1c1d7e
    virtual void startComputerOutput(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endComputerOutput();
Packit 1c1d7e
    virtual void startCenter(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endCenter();
Packit 1c1d7e
    virtual void startSmallFont(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endSmallFont();
Packit 1c1d7e
    virtual void startSubscript(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endSubscript();
Packit 1c1d7e
    virtual void startSuperscript(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endSuperscript();
Packit 1c1d7e
    virtual void startPreformatted(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endPreformatted();
Packit 1c1d7e
    virtual void startHeading1(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading1();
Packit 1c1d7e
    virtual void startHeading2(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading2();
Packit 1c1d7e
    virtual void startHeading3(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading3();
Packit 1c1d7e
    virtual void startHeading4(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading4();
Packit 1c1d7e
    virtual void startHeading5(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading5();
Packit 1c1d7e
    virtual void startHeading6(const QXmlAttributes &attrib);
Packit 1c1d7e
    virtual void endHeading6();
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    void addTextNode();
Packit 1c1d7e
Packit 1c1d7e
    QList<DocImpl>  &m_children;
Packit 1c1d7e
    QString         &m_curString;
Packit 1c1d7e
    int             m_curMarkup;
Packit 1c1d7e
    int             m_headingLevel;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a paragraph of text and commands.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: itemizedlist, orderedlist, parameterlist, simplesect, ref,
Packit 1c1d7e
//           variablelist, hruler, linebreak, ulink, email, link
Packit 1c1d7e
//           programlisting, formula, image, dotfile, indexentry,
Packit 1c1d7e
//           table
Packit 1c1d7e
//
Packit 1c1d7e
// children handled by MarkupHandler: 
Packit 1c1d7e
//           bold, computeroutput, emphasis, center,
Packit 1c1d7e
//           small, subscript, superscript. 
Packit 1c1d7e
//
Packit 1c1d7e
class ParagraphHandler : public DocParaImpl, 
Packit 1c1d7e
                         public BaseHandler<ParagraphHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ParagraphIterator;
Packit 1c1d7e
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endParagraph();
Packit 1c1d7e
    virtual void startItemizedList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startOrderedList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startParameterList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startSimpleSect(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startRef(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startVariableList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startHRuler(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startLineBreak(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startULink(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startEMail(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startLink(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startProgramListing(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startFormula(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startImage(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startDotFile(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startIndexEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startTable(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startVerbatim(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startHtmlOnly(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startLatexOnly(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startUmlaut(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startAcute(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startGrave(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startCirc(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startTilde(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startSzlig(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startCedil(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startRing(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startNbsp(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startCopy(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startAnchor(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startCopyDoc(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startTocList(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    ParagraphHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ParagraphHandler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocPara
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Para; }
Packit 1c1d7e
    virtual IDocIterator *contents() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    void addTextNode();
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
    MarkupHandler  *m_markupHandler;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ParagraphIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParagraphIterator(const ParagraphHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a list item.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ListItemHandler : public DocListItemImpl, public BaseHandler<ListItemHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ListItemIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    ListItemHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ListItemHandler();
Packit 1c1d7e
    virtual void startListItem(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endListItem();
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocItem
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ListItem; }
Packit 1c1d7e
    virtual IDocIterator *contents() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ListItemIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ListItemIterator(const ListItemHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing list of items.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class OrderedListHandler : public DocOrderedListImpl, public BaseHandler<OrderedListHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class OrderedListIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    OrderedListHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~OrderedListHandler();
Packit 1c1d7e
    virtual void startOrderedList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endOrderedList();
Packit 1c1d7e
    virtual void startOrderedListItem(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocOrderedList
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::OrderedList; }
Packit 1c1d7e
    virtual IDocIterator *elements() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class OrderedListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    OrderedListIterator(const OrderedListHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing table of contents list.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class TocListHandler : public DocTocListImpl, public BaseHandler<TocListHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class TocListIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    TocListHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~TocListHandler();
Packit 1c1d7e
    virtual void startTocList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endTocList();
Packit 1c1d7e
    virtual void startTocItem(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocTocList
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::TocList; }
Packit 1c1d7e
    virtual IDocIterator *elements() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class TocListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    TocListIterator(const TocListHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a table of contents item.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class TocItemHandler : public DocTocItemImpl, public BaseHandler<TocItemHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class TocItemIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    TocItemHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~TocItemHandler();
Packit 1c1d7e
    virtual void startTocItem(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endTocItem();
Packit 1c1d7e
Packit 1c1d7e
    // IDocItem
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::TocItem; }
Packit 1c1d7e
    virtual const IString *id() const { return &m_id; }
Packit 1c1d7e
    virtual const IString *title() const { return &m_title; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    StringImpl      m_id;
Packit 1c1d7e
    StringImpl      m_title;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing list of items.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ItemizedListHandler : public DocItemizedListImpl, public BaseHandler<ItemizedListHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ItemizedListIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    ItemizedListHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ItemizedListHandler();
Packit 1c1d7e
    virtual void startItemizedList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endItemizedList();
Packit 1c1d7e
    virtual void startItemizedListItem(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocItemizedList
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ItemizedList; }
Packit 1c1d7e
    virtual IDocIterator *elements() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ItemizedListIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ItemizedListIterator(const ItemizedListHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
/*! \brief Node representing a parameter.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ParameterHandler : public DocParameterImpl, 
Packit 1c1d7e
                         public BaseHandler<ParameterHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParameterHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ParameterHandler();
Packit 1c1d7e
    virtual void startParameterName(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endParameterName();
Packit 1c1d7e
Packit 1c1d7e
    // IDocParameter
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Parameter; }
Packit 1c1d7e
    virtual const IString *name() const { return &m_name; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler     *m_parent;
Packit 1c1d7e
    StringImpl        m_name;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a list of param names with a single description.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ParameterItemHandler : public DocParameterItemImpl, 
Packit 1c1d7e
                             public BaseHandler<ParameterItemHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ParameterItemIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParameterItemHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ParameterItemHandler();
Packit 1c1d7e
    virtual void startParameterItem(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endParameterItem();
Packit 1c1d7e
    virtual void startParameterName(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocParameterItem
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ParameterItem; }
Packit 1c1d7e
    virtual IDocIterator *paramNames() const;
Packit 1c1d7e
    virtual IDocPara *description() const { return m_description; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler            *m_parent;
Packit 1c1d7e
    QList<ParameterHandler>  m_parameters;
Packit 1c1d7e
    ParagraphHandler *m_description;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ParameterItemIterator : public BaseIteratorVia<IDocIterator,IDoc,ParameterHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParameterItemIterator(const ParameterItemHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,ParameterHandler,DocImpl>(handler.m_parameters) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a parameter section.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ParameterListHandler : public DocParameterListImpl, 
Packit 1c1d7e
                             public BaseHandler<ParameterListHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ParameterListIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParameterListHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ParameterListHandler();
Packit 1c1d7e
    virtual void startParameterList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endParameterList();
Packit 1c1d7e
    virtual void startParameterItem(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocParameterList
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ParameterList; }
Packit 1c1d7e
    virtual Types sectType() const { return m_type; }
Packit 1c1d7e
    virtual IDocIterator *params() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler            *m_parent;
Packit 1c1d7e
    QList<ParameterItemHandler>  m_paramItems;
Packit 1c1d7e
    Types                    m_type;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ParameterListIterator : public BaseIteratorVia<IDocIterator,IDoc,ParameterItemHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ParameterListIterator(const ParameterListHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,ParameterItemHandler,DocImpl>(handler.m_paramItems) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a horizontal ruler
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class LineBreakHandler : public DocLineBreakImpl, public BaseHandler<LineBreakHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    LineBreakHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~LineBreakHandler();
Packit 1c1d7e
Packit 1c1d7e
    void startLineBreak(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endLineBreak();
Packit 1c1d7e
Packit 1c1d7e
    // IDocLineBreak
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::LineBreak; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a link to section
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class LinkHandler : public DocLinkImpl, public BaseHandler<LinkHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    LinkHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~LinkHandler();
Packit 1c1d7e
Packit 1c1d7e
    void startLink(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endLink();
Packit 1c1d7e
Packit 1c1d7e
    // IDocLink
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Link; }
Packit 1c1d7e
    virtual const IString *refId() const { return &m_ref; }
Packit 1c1d7e
    virtual const IString *text() const { return &m_text; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    StringImpl      m_ref;
Packit 1c1d7e
    StringImpl      m_text;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a link to an email address
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class EMailHandler : public DocEMailImpl, public BaseHandler<EMailHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    EMailHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~EMailHandler();
Packit 1c1d7e
Packit 1c1d7e
    void startEMail(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endEMail();
Packit 1c1d7e
Packit 1c1d7e
    // IDocEMail
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::EMail; }
Packit 1c1d7e
    virtual const IString *address() const { return &m_address; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    StringImpl      m_address;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a link to an URL
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class ULinkHandler : public DocULinkImpl, public BaseHandler<ULinkHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ULinkHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ULinkHandler();
Packit 1c1d7e
Packit 1c1d7e
    void startULink(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endULink();
Packit 1c1d7e
Packit 1c1d7e
    // IDocULink
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ULink; }
Packit 1c1d7e
    virtual const IString * url() const { return &m_url; }
Packit 1c1d7e
    virtual const IString * text() const { return &m_text; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    StringImpl      m_url;
Packit 1c1d7e
    StringImpl      m_text;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a horizontal ruler
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class HRulerHandler : public DocHRulerImpl, public BaseHandler<HRulerHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    HRulerHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~HRulerHandler();
Packit 1c1d7e
Packit 1c1d7e
    void startHRuler(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endHRuler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocHRuler
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::HRuler; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a reference to another item
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class RefHandler : public DocRefImpl, public BaseHandler<RefHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    RefHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~RefHandler();
Packit 1c1d7e
    void startRef(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endRef();
Packit 1c1d7e
Packit 1c1d7e
    // IDocRef
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Ref; }
Packit 1c1d7e
    virtual const IString *refId() const { return &m_refId; }
Packit 1c1d7e
    virtual TargetKind targetKind() const { return m_targetKind; }
Packit 1c1d7e
    virtual const IString *external() const { return &m_extId; }
Packit 1c1d7e
    virtual const IString *text() const { return &m_linkText; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    StringImpl      m_refId;
Packit 1c1d7e
    StringImpl      m_extId;
Packit 1c1d7e
    StringImpl      m_linkText;
Packit 1c1d7e
    TargetKind      m_targetKind;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing the title of a section
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: text, ref
Packit 1c1d7e
// children handled by MarkupHandler: 
Packit 1c1d7e
//           bold, computeroutput, emphasis, center,
Packit 1c1d7e
//           small, subscript, superscript. 
Packit 1c1d7e
class TitleHandler : public DocTitleImpl, public BaseHandler<TitleHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class TitleIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    TitleHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~TitleHandler();
Packit 1c1d7e
    virtual void startTitle(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endTitle();
Packit 1c1d7e
    virtual void startRef(const QXmlAttributes& attrib);
Packit 1c1d7e
    void addTextNode();
Packit 1c1d7e
Packit 1c1d7e
    // IDocTitle
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Title; }
Packit 1c1d7e
    virtual IDocIterator *title() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
    MarkupHandler  *m_markupHandler;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class TitleIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    TitleIterator(const TitleHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing a simple section with an unnumbered header.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: title, para
Packit 1c1d7e
class SimpleSectHandler : public DocSimpleSectImpl, 
Packit 1c1d7e
                          public BaseHandler<SimpleSectHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    SimpleSectHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~SimpleSectHandler();
Packit 1c1d7e
    virtual void startSimpleSect(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endSimpleSect();
Packit 1c1d7e
    virtual void startTitle(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocSimpleSect
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::SimpleSect; }
Packit 1c1d7e
    virtual Types type() const { return m_type; }
Packit 1c1d7e
    virtual const IString *typeString() const { return &m_typeString; }
Packit 1c1d7e
    virtual IDocTitle *title() const { return m_title; }
Packit 1c1d7e
    virtual IDocPara *description() const { return m_paragraph; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler            *m_parent;
Packit 1c1d7e
    ParagraphHandler        *m_paragraph;
Packit 1c1d7e
    Types                    m_type;
Packit 1c1d7e
    StringImpl               m_typeString;
Packit 1c1d7e
    TitleHandler            *m_title;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/* \brief Node representing an named item of a VariableList.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class VariableListEntryHandler : public DocVariableListEntryImpl, 
Packit 1c1d7e
                                 public BaseHandler<VariableListEntryHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual void startVarListEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endVarListEntry();
Packit 1c1d7e
    virtual void startListItem(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endListItem();
Packit 1c1d7e
    virtual void startTerm(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endTerm();
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    VariableListEntryHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~VariableListEntryHandler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocVariableListEntry
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::VariableListEntry; }
Packit 1c1d7e
    virtual ILinkedTextIterator *term() const;
Packit 1c1d7e
    virtual IDocPara *description() const { return m_description; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler*         m_parent;
Packit 1c1d7e
    QList<LinkedTextImpl> m_term;
Packit 1c1d7e
    ParagraphHandler*     m_description;
Packit 1c1d7e
    LinkedTextHandler*    m_linkedTextHandler;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a list of named items.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: varlistentry, listitem
Packit 1c1d7e
class VariableListHandler : public DocVariableListImpl, 
Packit 1c1d7e
                            public BaseHandler<VariableListHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class VariableListIterator;
Packit 1c1d7e
    
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual void startVariableList(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endVariableList();
Packit 1c1d7e
    virtual void startVarListEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startListItem(const QXmlAttributes& attrib);
Packit 1c1d7e
    
Packit 1c1d7e
    VariableListHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~VariableListHandler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocVariableList
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::VariableList; }
Packit 1c1d7e
    virtual IDocIterator *entries() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<VariableListEntryHandler> m_entries;
Packit 1c1d7e
    VariableListEntryHandler *m_curEntry;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class VariableListIterator : public BaseIteratorVia<IDocIterator,IDoc,VariableListEntryHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VariableListIterator(const VariableListHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,VariableListEntryHandler,DocImpl>(handler.m_entries) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a highlighted text fragment.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: ref
Packit 1c1d7e
class HighlightHandler : public DocHighlightImpl, public BaseHandler<HighlightHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class HighlightIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    HighlightHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~HighlightHandler();
Packit 1c1d7e
    void startHighlight(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endHighlight();
Packit 1c1d7e
    virtual void startRef(const QXmlAttributes&);
Packit 1c1d7e
    virtual void startSpace(const QXmlAttributes&);
Packit 1c1d7e
Packit 1c1d7e
    // IDocHighlight
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Highlight; }
Packit 1c1d7e
    virtual HighlightKind highlightKind() const { return m_hl; }
Packit 1c1d7e
    virtual IDocIterator *codeElements() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    void addTextNode();
Packit 1c1d7e
    
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    HighlightKind  m_hl;
Packit 1c1d7e
    QString        m_hlString;
Packit 1c1d7e
    QList<DocImpl> m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class HighlightIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    HighlightIterator(const HighlightHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a line of code.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: linenumber, highlight, anchor, ref
Packit 1c1d7e
class CodeLineHandler : public DocCodeLineImpl, public BaseHandler<CodeLineHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class CodeLineIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
Packit 1c1d7e
    virtual void startCodeLine(const QXmlAttributes&);
Packit 1c1d7e
    virtual void endCodeLine();
Packit 1c1d7e
    virtual void startLineNumber(const QXmlAttributes&);
Packit 1c1d7e
    virtual void endLineNumber();
Packit 1c1d7e
    virtual void startHighlight(const QXmlAttributes&);
Packit 1c1d7e
    virtual void startRef(const QXmlAttributes&);
Packit 1c1d7e
    
Packit 1c1d7e
    CodeLineHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~CodeLineHandler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocCodeLine
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::CodeLine; }
Packit 1c1d7e
    virtual int lineNumber() const { return m_lineNumber; }
Packit 1c1d7e
    virtual const IString *refId() const { return &m_refId; }
Packit 1c1d7e
    virtual IDocIterator *codeElements() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    void addTextNode();
Packit 1c1d7e
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    int            m_lineNumber;
Packit 1c1d7e
    StringImpl     m_refId;
Packit 1c1d7e
    QList<DocImpl> m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class CodeLineIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    CodeLineIterator(const CodeLineHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a program listing
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: codeline, linenumber
Packit 1c1d7e
class ProgramListingHandler : public DocProgramListingImpl, public BaseHandler<ProgramListingHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class ProgramListingIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual void startProgramListing(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endProgramListing();
Packit 1c1d7e
    virtual void startCodeLine(const QXmlAttributes&);
Packit 1c1d7e
    virtual void startLineNumber(const QXmlAttributes&);
Packit 1c1d7e
Packit 1c1d7e
    ProgramListingHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ProgramListingHandler();
Packit 1c1d7e
Packit 1c1d7e
    // IDocProgramListing
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::ProgramListing; }
Packit 1c1d7e
    virtual IDocIterator *codeLines() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler           *m_parent;
Packit 1c1d7e
    QList<CodeLineHandler>  m_children;
Packit 1c1d7e
    bool m_hasLineNumber;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
class ProgramListingIterator : public BaseIteratorVia<IDocIterator,IDoc,CodeLineHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ProgramListingIterator(const ProgramListingHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,CodeLineHandler,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a formula.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class FormulaHandler : public DocFormulaImpl, public BaseHandler<FormulaHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    FormulaHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~FormulaHandler();
Packit 1c1d7e
    void startFormula(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endFormula();
Packit 1c1d7e
Packit 1c1d7e
    // IDocFormula
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Formula; }
Packit 1c1d7e
    virtual const IString *id() const { return &m_id; }
Packit 1c1d7e
    virtual const IString *text() const { return &m_text; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    StringImpl     m_id;
Packit 1c1d7e
    StringImpl     m_text;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an image.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class ImageHandler : public DocImageImpl, public BaseHandler<ImageHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    ImageHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~ImageHandler();
Packit 1c1d7e
    void startImage(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endImage();
Packit 1c1d7e
Packit 1c1d7e
    // IDocImage
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Image; }
Packit 1c1d7e
    virtual const IString *name() const { return &m_name; }
Packit 1c1d7e
    virtual const IString *caption() const { return &m_caption; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    StringImpl     m_name;
Packit 1c1d7e
    StringImpl     m_caption;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
/*! \brief Node representing an anchor.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class AnchorHandler : public DocAnchorImpl, public BaseHandler<AnchorHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    AnchorHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~AnchorHandler();
Packit 1c1d7e
    void startAnchor(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endAnchor();
Packit 1c1d7e
Packit 1c1d7e
    // IDocAnchor
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Anchor; }
Packit 1c1d7e
    virtual const IString *id() const { return &m_id; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    StringImpl     m_id;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a dot file.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class DotFileHandler : public DocDotFileImpl, public BaseHandler<DotFileHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DotFileHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~DotFileHandler();
Packit 1c1d7e
    void startDotFile(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endDotFile();
Packit 1c1d7e
Packit 1c1d7e
    // IDocDotFile
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::DotFile; }
Packit 1c1d7e
    virtual const IString *name() const { return &m_name; }
Packit 1c1d7e
    virtual const IString *caption() const { return &m_caption; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    StringImpl     m_name;
Packit 1c1d7e
    StringImpl     m_caption;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an entry in the index.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class IndexEntryHandler : public DocIndexEntryImpl, public BaseHandler<IndexEntryHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    IndexEntryHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~IndexEntryHandler();
Packit 1c1d7e
    void startIndexEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endIndexEntry();
Packit 1c1d7e
    void startPrimaryIE(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endPrimaryIE();
Packit 1c1d7e
    void startSecondaryIE(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endSecondaryIE();
Packit 1c1d7e
Packit 1c1d7e
    // IDocIndexEntry
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::IndexEntry; }
Packit 1c1d7e
    virtual const IString *primary() const { return &m_primary; }
Packit 1c1d7e
    virtual const IString *secondary() const { return &m_secondary; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    StringImpl     m_primary;
Packit 1c1d7e
    StringImpl     m_secondary;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an entry in the table entry.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: para
Packit 1c1d7e
class EntryHandler : public DocEntryImpl, public BaseHandler<EntryHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class EntryIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    EntryHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~EntryHandler();
Packit 1c1d7e
    void startEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endEntry();
Packit 1c1d7e
    void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocEntry
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Entry; }
Packit 1c1d7e
    virtual IDocIterator *contents() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class EntryIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    EntryIterator(const EntryHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an entry in the table row.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: entry
Packit 1c1d7e
class RowHandler : public DocRowImpl, public BaseHandler<RowHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class RowIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    RowHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~RowHandler();
Packit 1c1d7e
    void startRow(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endRow();
Packit 1c1d7e
    void startEntry(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocRow
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Row; }
Packit 1c1d7e
    virtual IDocIterator *entries() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler        *m_parent;
Packit 1c1d7e
    QList<EntryHandler>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class RowIterator : public BaseIteratorVia<IDocIterator,IDoc,EntryHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    RowIterator(const RowHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,EntryHandler,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an entry in the table.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: row, caption
Packit 1c1d7e
class TableHandler : public DocTableImpl, public BaseHandler<TableHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class TableIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    TableHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~TableHandler();
Packit 1c1d7e
    void startTable(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endTable();
Packit 1c1d7e
    void startRow(const QXmlAttributes& attrib);
Packit 1c1d7e
    void startCaption(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endCaption();
Packit 1c1d7e
Packit 1c1d7e
    // IDocTable
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Table; }
Packit 1c1d7e
    virtual IDocIterator *rows() const;
Packit 1c1d7e
    virtual int numColumns() const { return m_numColumns; }
Packit 1c1d7e
    virtual const IString *caption() const { return &m_caption; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler      *m_parent;
Packit 1c1d7e
    QList<RowHandler>  m_children;
Packit 1c1d7e
    int                m_numColumns;
Packit 1c1d7e
    StringImpl         m_caption;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class TableIterator : public BaseIteratorVia<IDocIterator,IDoc,RowHandler,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    TableIterator(const TableHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,RowHandler,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a copied piece of documentation.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
class CopyHandler : public DocCopyImpl, public BaseHandler<CopyHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class CopyIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    CopyHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~CopyHandler();
Packit 1c1d7e
    virtual void startCopy(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endCopy();
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocCopy
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Copy; }
Packit 1c1d7e
    virtual IDocIterator *contents() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler   *m_parent;
Packit 1c1d7e
    QList<DocImpl>  m_children;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class CopyIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    CopyIterator(const CopyHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an preformatted section
Packit 1c1d7e
 */
Packit 1c1d7e
class VerbatimHandler : public DocVerbatimImpl, 
Packit 1c1d7e
                        public BaseHandler<VerbatimHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VerbatimHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~VerbatimHandler();
Packit 1c1d7e
    void startVerbatim(const QXmlAttributes& attrib,Types type);
Packit 1c1d7e
    void endVerbatim();
Packit 1c1d7e
Packit 1c1d7e
    // IDocVerbatim
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Verbatim; }
Packit 1c1d7e
    virtual const IString *text() const { return &m_text; }
Packit 1c1d7e
    virtual Types type() const { return m_type; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler *m_parent;
Packit 1c1d7e
    StringImpl    m_text;
Packit 1c1d7e
    Types         m_type;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing an special symbol.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: -
Packit 1c1d7e
class SymbolHandler : public DocSymbolImpl, public BaseHandler<SymbolHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    SymbolHandler(IBaseHandler *parent,Types type);
Packit 1c1d7e
    virtual ~SymbolHandler();
Packit 1c1d7e
    void startSymbol(const QXmlAttributes& attrib);
Packit 1c1d7e
    void endSymbol();
Packit 1c1d7e
Packit 1c1d7e
    // IDocSymbol
Packit 1c1d7e
    virtual Kind kind() const   { return DocImpl::Symbol; }
Packit 1c1d7e
    virtual Types type() const  { return m_type; }
Packit 1c1d7e
    virtual const IString *typeString() const { return &m_typeString; }
Packit 1c1d7e
    virtual char letter() const { return m_letter; }
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler  *m_parent;
Packit 1c1d7e
    char           m_letter;
Packit 1c1d7e
    Types          m_type;
Packit 1c1d7e
    StringImpl     m_typeString;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a section.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: title, para, sect(n+1)
Packit 1c1d7e
class DocSectionHandler : public DocSectionImpl, public BaseHandler<DocSectionHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class DocSectionParaIterator;
Packit 1c1d7e
    friend class DocSectionSubIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocSectionHandler(IBaseHandler *parent,int level);
Packit 1c1d7e
    virtual ~DocSectionHandler();
Packit 1c1d7e
    virtual void startDocSection(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endDocSection();
Packit 1c1d7e
    virtual void startTitle(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startSubSection(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startInternal(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocSection
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Section; }
Packit 1c1d7e
    virtual const IString *id() const { return &m_id; }
Packit 1c1d7e
    virtual int level() const { return m_level; }
Packit 1c1d7e
    virtual IDocTitle *title() const { return m_title; }
Packit 1c1d7e
    virtual IDocIterator *paragraphs() const;
Packit 1c1d7e
    virtual IDocIterator *subSections() const;
Packit 1c1d7e
    virtual IDocInternal *internal() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler    *m_parent;
Packit 1c1d7e
    QList<DocImpl>   m_paragraphs;
Packit 1c1d7e
    QList<DocImpl>   m_subsections;
Packit 1c1d7e
    DocInternalHandler *m_internal;
Packit 1c1d7e
    StringImpl       m_id;
Packit 1c1d7e
    int              m_level;
Packit 1c1d7e
    TitleHandler    *m_title;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class DocSectionParaIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocSectionParaIterator(const DocSectionHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_paragraphs) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class DocSectionSubIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocSectionSubIterator(const DocSectionHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_subsections) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
class DocInternalHandler : public DocInternalImpl, public BaseHandler<DocInternalHandler>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    friend class DocInternalParaIterator;
Packit 1c1d7e
    friend class DocInternalSubIterator;
Packit 1c1d7e
    DocInternalHandler(IBaseHandler *parent,int level);
Packit 1c1d7e
    virtual ~DocInternalHandler();
Packit 1c1d7e
    virtual void startInternal(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endInternal();
Packit 1c1d7e
    virtual void startSubSection(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    // IDocInternal
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Internal; }
Packit 1c1d7e
    virtual IDocIterator *paragraphs() const;
Packit 1c1d7e
    virtual IDocIterator *subSections() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler    *m_parent;
Packit 1c1d7e
    QList<DocImpl>   m_paragraphs;
Packit 1c1d7e
    QList<DocImpl>   m_subsections;
Packit 1c1d7e
    int              m_level;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class DocInternalParaIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocInternalParaIterator(const DocInternalHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_paragraphs) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class DocInternalSubIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocInternalSubIterator(const DocInternalHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_subsections) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Node representing a documentation block.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
// children: para, title, sect1, internal
Packit 1c1d7e
class DocHandler : public DocRootImpl, public BaseHandler<DocHandler>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class DocIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual void startDoc(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void endDoc();
Packit 1c1d7e
    virtual void startParagraph(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startSect1(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startTitle(const QXmlAttributes& attrib);
Packit 1c1d7e
    virtual void startInternal(const QXmlAttributes& attrib);
Packit 1c1d7e
Packit 1c1d7e
    DocHandler(IBaseHandler *parent);
Packit 1c1d7e
    virtual ~DocHandler();
Packit 1c1d7e
    
Packit 1c1d7e
    // IDocRoot
Packit 1c1d7e
    virtual Kind kind() const { return DocImpl::Root; }
Packit 1c1d7e
    virtual IDocIterator *contents() const;
Packit 1c1d7e
    virtual IDocInternal *internal() const;
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    IBaseHandler *m_parent;
Packit 1c1d7e
    QList<DocImpl> m_children;
Packit 1c1d7e
    DocInternalHandler *m_internal;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class DocIterator : public BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    DocIterator(const DocHandler &handler) : 
Packit 1c1d7e
      BaseIteratorVia<IDocIterator,IDoc,DocImpl,DocImpl>(handler.m_children) {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//-----------------------------------------------------------------------------
Packit 1c1d7e
Packit 1c1d7e
void dochandler_init();
Packit 1c1d7e
void dochandler_exit();
Packit 1c1d7e
Packit 1c1d7e
#endif