Blame addon/doxmlparser/src/doxmlintf.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 _DOXMLINTF_H
Packit 1c1d7e
#define _DOXMLINTF_H
Packit 1c1d7e
Packit 1c1d7e
/*! \file
Packit 1c1d7e
 *  \brief The interface to the object model provided by the XML parser 
Packit 1c1d7e
 *         library.
Packit 1c1d7e
 *
Packit 1c1d7e
 *  To start using this library one calls createObjectModel() and then
Packit 1c1d7e
 *  uses the returned IDoxygen interface to read doxygen generated
Packit 1c1d7e
 *  XML output and navigate through the information contained in it.
Packit 1c1d7e
 *
Packit 1c1d7e
 *  @see createObjectModel()
Packit 1c1d7e
 */
Packit 1c1d7e
Packit 1c1d7e
class IMember;
Packit 1c1d7e
class IDocIterator;
Packit 1c1d7e
class ICompound;
Packit 1c1d7e
class ISection;
Packit 1c1d7e
class INode;
Packit 1c1d7e
class IDocInternal;
Packit 1c1d7e
class IDocRoot;
Packit 1c1d7e
Packit 1c1d7e
#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {}
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Read only interface to a string. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IString
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IString)
Packit 1c1d7e
    /*! Returns a latin1 character representation of the string. */
Packit 1c1d7e
    virtual const char *latin1() const = 0;
Packit 1c1d7e
    /*! Returns a utf8 character representation of the string. */
Packit 1c1d7e
    virtual const char *utf8() const = 0;
Packit 1c1d7e
    /*! Returns a 16-bit unicode character representation of the character at 
Packit 1c1d7e
     *  position \a index in the string. The first character is at index 0.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual unsigned short unicodeCharAt(int index) const = 0;
Packit 1c1d7e
    /*! Returns true if this string is empty or false otherwise */
Packit 1c1d7e
    virtual bool isEmpty() const = 0;
Packit 1c1d7e
    /*! Returns the number of characters in the string. */
Packit 1c1d7e
    virtual int length() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Base interface for hyperlinked text
Packit 1c1d7e
 *
Packit 1c1d7e
 *  Depending on the result of kind() the interface is extended by
Packit 1c1d7e
 *  ILT_Text or ILT_Ref.
Packit 1c1d7e
 */
Packit 1c1d7e
class ILinkedText
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ILinkedText)
Packit 1c1d7e
    enum Kind { Kind_Text, Kind_Ref };
Packit 1c1d7e
    virtual Kind kind() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Plain text fragment.
Packit 1c1d7e
 */
Packit 1c1d7e
class ILT_Text : public ILinkedText
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ILT_Text)
Packit 1c1d7e
    virtual const IString *text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Reference to an object.
Packit 1c1d7e
 */
Packit 1c1d7e
class ILT_Ref : public ILinkedText
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ILT_Ref)
Packit 1c1d7e
    enum TargetKind { Member, Compound };
Packit 1c1d7e
    virtual const IString *id() const = 0;
Packit 1c1d7e
    virtual TargetKind targetKind() const = 0;
Packit 1c1d7e
    virtual const IString *external() const = 0;
Packit 1c1d7e
    virtual const IString *text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Iterates over a list of ILinkedText fragments.
Packit 1c1d7e
 */
Packit 1c1d7e
class ILinkedTextIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ILinkedTextIterator)
Packit 1c1d7e
    virtual ILinkedText *toFirst() = 0;
Packit 1c1d7e
    virtual ILinkedText *toLast() = 0;
Packit 1c1d7e
    virtual ILinkedText *toNext() = 0;
Packit 1c1d7e
    virtual ILinkedText *toPrev() = 0;
Packit 1c1d7e
    virtual ILinkedText *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Representation of a parameter of a function. */
Packit 1c1d7e
class IParam 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IParam)
Packit 1c1d7e
    virtual ILinkedTextIterator *type() const = 0;
Packit 1c1d7e
    virtual const IString * declarationName() const = 0;
Packit 1c1d7e
    virtual const IString * definitionName() const = 0;
Packit 1c1d7e
    virtual const IString * attrib() const = 0;
Packit 1c1d7e
    virtual const IString * arraySpecifier() const = 0;
Packit 1c1d7e
    virtual ILinkedTextIterator *defaultValue() const = 0;
Packit 1c1d7e
    virtual IDocRoot *briefDescription() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IParamIterator
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IParamIterator)
Packit 1c1d7e
    virtual IParam *toFirst() = 0;
Packit 1c1d7e
    virtual IParam *toLast() = 0;
Packit 1c1d7e
    virtual IParam *toNext() = 0;
Packit 1c1d7e
    virtual IParam *toPrev() = 0;
Packit 1c1d7e
    virtual IParam *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IMemberReference 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IMemberReference)
Packit 1c1d7e
    virtual IMember *member() const = 0;
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
    virtual const IString * scope() const = 0;
Packit 1c1d7e
    virtual const IString * protection() const = 0;
Packit 1c1d7e
    virtual const IString * virtualness() const = 0;
Packit 1c1d7e
    virtual const IString * ambiguityScope() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IMemberReferenceIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IMemberReferenceIterator)
Packit 1c1d7e
    virtual IMemberReference *toFirst() = 0;
Packit 1c1d7e
    virtual IMemberReference *toLast() = 0;
Packit 1c1d7e
    virtual IMemberReference *toNext() = 0;
Packit 1c1d7e
    virtual IMemberReference *toPrev() = 0;
Packit 1c1d7e
    virtual IMemberReference *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IDoc)
Packit 1c1d7e
    enum Kind 
Packit 1c1d7e
    { 
Packit 1c1d7e
      Invalid = 0,        //  0
Packit 1c1d7e
      Para,               //  1 -> IDocPara
Packit 1c1d7e
      Text,               //  2 -> IDocText
Packit 1c1d7e
      MarkupModifier,     //  3 -> IDocMarkupModifier
Packit 1c1d7e
      ItemizedList,       //  4 -> IDocItemizedList
Packit 1c1d7e
      OrderedList,        //  5 -> IDocOrderedList
Packit 1c1d7e
      ListItem,           //  6 -> IDocListItem
Packit 1c1d7e
      ParameterList,      //  7 -> IDocParameterList
Packit 1c1d7e
      Parameter,          //  8 -> IDocParameter
Packit 1c1d7e
      SimpleSect,         //  9 -> IDocSimpleSect
Packit 1c1d7e
      Title,              // 10 -> IDocTitle
Packit 1c1d7e
      Ref,                // 11 -> IDocRef
Packit 1c1d7e
      VariableList,       // 12 -> IDocVariableList
Packit 1c1d7e
      VariableListEntry,  // 13 -> IDocVariableListEntry
Packit 1c1d7e
      HRuler,             // 14 -> IDocHRuler
Packit 1c1d7e
      LineBreak,          // 15 -> IDocLineBreak
Packit 1c1d7e
      ULink,              // 16 -> IDocULink
Packit 1c1d7e
      EMail,              // 17 -> IDocEMail
Packit 1c1d7e
      Link,               // 18 -> IDocLink
Packit 1c1d7e
      ProgramListing,     // 19 -> IDocProgramListing
Packit 1c1d7e
      CodeLine,           // 20 -> IDocCodeLine
Packit 1c1d7e
      Highlight,          // 21 -> IDocHighlight
Packit 1c1d7e
      Formula,            // 22 -> IDocFormula
Packit 1c1d7e
      Image,              // 23 -> IDocImage
Packit 1c1d7e
      DotFile,            // 24 -> IDocDotFile
Packit 1c1d7e
      IndexEntry,         // 25 -> IDocIndexEntry
Packit 1c1d7e
      Table,              // 26 -> IDocTable
Packit 1c1d7e
      Row,                // 27 -> IDocRow
Packit 1c1d7e
      Entry,              // 28 -> IDocEntry
Packit 1c1d7e
      Section,            // 29 -> IDocSection
Packit 1c1d7e
      Verbatim,           // 30 -> IDocVerbatim
Packit 1c1d7e
      Copy,               // 31 -> IDocCopy
Packit 1c1d7e
      TocList,            // 32 -> IDocTocList
Packit 1c1d7e
      TocItem,            // 33 -> IDocTocItem
Packit 1c1d7e
      Anchor,             // 34 -> IDocAnchor
Packit 1c1d7e
      Symbol,             // 35 -> IDocSymbol
Packit 1c1d7e
      Internal,           // 36 -> IDocInternal
Packit 1c1d7e
      Root,               // 37 -> IDocRoot
Packit 1c1d7e
      ParameterItem       // 38 -> IDocParameterItem
Packit 1c1d7e
    };
Packit 1c1d7e
    virtual Kind kind() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocMarkup : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum Markup 
Packit 1c1d7e
    { 
Packit 1c1d7e
      Normal         = 0x000,
Packit 1c1d7e
      Bold           = 0x001,
Packit 1c1d7e
      Emphasis       = 0x002,
Packit 1c1d7e
      ComputerOutput = 0x004,
Packit 1c1d7e
      Subscript      = 0x008,
Packit 1c1d7e
      Superscript    = 0x010,
Packit 1c1d7e
      SmallFont      = 0x020,
Packit 1c1d7e
      Center         = 0x040,
Packit 1c1d7e
      Preformatted   = 0x080,
Packit 1c1d7e
      Heading        = 0x100
Packit 1c1d7e
    };
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocPara : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *contents() const = 0; 
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocText : public IDocMarkup
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * text() const = 0;
Packit 1c1d7e
    virtual int markup() const = 0;
Packit 1c1d7e
    virtual int headingLevel() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocMarkupModifier : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual bool enabled() const = 0;
Packit 1c1d7e
    virtual int markup() const = 0;
Packit 1c1d7e
    virtual int headingLevel() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocItemizedList : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *elements() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocOrderedList : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *elements() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocListItem : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *contents() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocParameterList : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum Types { Param, RetVal, Exception };
Packit 1c1d7e
    virtual Types sectType() const = 0;
Packit 1c1d7e
    virtual IDocIterator *params() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocParameterItem : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *paramNames() const = 0;
Packit 1c1d7e
    virtual IDocPara *description() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocParameter : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocTitle : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *title() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocSimpleSect : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum Types { Invalid = 0,
Packit 1c1d7e
                 See, Return, Author, Version, 
Packit 1c1d7e
                 Since, Date, Bug, Note,
Packit 1c1d7e
                 Warning, Par, Deprecated, Pre, 
Packit 1c1d7e
                 Post, Invar, Remark, Attention,
Packit 1c1d7e
                 Todo, Test, RCS, EnumValues, 
Packit 1c1d7e
                 Examples
Packit 1c1d7e
    };
Packit 1c1d7e
    virtual Types type() const = 0;
Packit 1c1d7e
    virtual const IString * typeString() const = 0;
Packit 1c1d7e
    virtual IDocTitle *title() const = 0;
Packit 1c1d7e
    virtual IDocPara *description() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocRef : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum TargetKind { Member, Compound };
Packit 1c1d7e
    virtual const IString * refId() const = 0;
Packit 1c1d7e
    virtual TargetKind targetKind() const = 0;
Packit 1c1d7e
    virtual const IString * external() const = 0;
Packit 1c1d7e
    virtual const IString * text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocVariableList : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *entries() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocVariableListEntry : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ILinkedTextIterator * term() const = 0;
Packit 1c1d7e
    virtual IDocPara *description() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocHRuler : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocLineBreak : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocULink : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * url() const = 0;
Packit 1c1d7e
    virtual const IString * text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocEMail : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * address() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocLink : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * refId() const = 0;
Packit 1c1d7e
    virtual const IString * text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocProgramListing : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *codeLines() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocCodeLine : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual int lineNumber() const = 0;
Packit 1c1d7e
    virtual const IString * refId() const = 0;
Packit 1c1d7e
    virtual IDocIterator *codeElements() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocHighlight : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum HighlightKind 
Packit 1c1d7e
    { Invalid=0,
Packit 1c1d7e
      Comment, Keyword, 
Packit 1c1d7e
      KeywordType, KeywordFlow, CharLiteral, 
Packit 1c1d7e
      StringLiteral, Preprocessor
Packit 1c1d7e
    };
Packit 1c1d7e
    virtual HighlightKind highlightKind() const = 0;
Packit 1c1d7e
    virtual IDocIterator *codeElements() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocFormula : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * id() const = 0;
Packit 1c1d7e
    virtual const IString * text() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocImage : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
    virtual const IString * caption() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocDotFile : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
    virtual const IString * caption() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocIndexEntry : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * primary() const = 0;
Packit 1c1d7e
    virtual const IString * secondary() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocTable : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *rows() const = 0;
Packit 1c1d7e
    virtual int numColumns() const = 0;
Packit 1c1d7e
    virtual const IString * caption() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocRow : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *entries() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocEntry : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *contents() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocSection : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * id() const = 0; 
Packit 1c1d7e
    virtual int level() const = 0;
Packit 1c1d7e
    virtual IDocTitle *title() const = 0;
Packit 1c1d7e
    virtual IDocIterator *paragraphs() const = 0;
Packit 1c1d7e
    virtual IDocIterator *subSections() const = 0;
Packit 1c1d7e
    virtual IDocInternal *internal() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocInternal : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *paragraphs() const = 0;
Packit 1c1d7e
    virtual IDocIterator *subSections() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocTocList : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *elements() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocTocItem : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString *id() const = 0; 
Packit 1c1d7e
    virtual const IString *title() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocCopy : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *contents() const = 0; 
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocVerbatim : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim };
Packit 1c1d7e
    virtual const IString *text() const = 0; 
Packit 1c1d7e
    virtual Types type() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocAnchor : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString *id() const = 0; 
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocSymbol : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    enum Types 
Packit 1c1d7e
    { Invalid = 0,
Packit 1c1d7e
      Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy
Packit 1c1d7e
    };
Packit 1c1d7e
    virtual Types type() const = 0;
Packit 1c1d7e
    virtual const IString * typeString() const = 0;
Packit 1c1d7e
    virtual char letter() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocRoot : public IDoc
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IDocIterator *contents() const = 0; 
Packit 1c1d7e
    virtual IDocInternal *internal() const = 0; 
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDocIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IDocIterator)
Packit 1c1d7e
    virtual IDoc *toFirst() = 0;
Packit 1c1d7e
    virtual IDoc *toLast() = 0;
Packit 1c1d7e
    virtual IDoc *toNext() = 0;
Packit 1c1d7e
    virtual IDoc *toPrev() = 0;
Packit 1c1d7e
    virtual IDoc *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IEdgeLabel
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IEdgeLabel)
Packit 1c1d7e
    virtual const IString * label() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IEdgeLabelIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IEdgeLabelIterator)
Packit 1c1d7e
    virtual IEdgeLabel *toFirst() = 0;
Packit 1c1d7e
    virtual IEdgeLabel *toLast() = 0;
Packit 1c1d7e
    virtual IEdgeLabel *toNext() = 0;
Packit 1c1d7e
    virtual IEdgeLabel *toPrev() = 0;
Packit 1c1d7e
    virtual IEdgeLabel *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IChildNode
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IChildNode)
Packit 1c1d7e
    enum NodeRelation { PublicInheritance, ProtectedInheritance,
Packit 1c1d7e
                        PrivateInheritance, Usage, TemplateInstance
Packit 1c1d7e
                      };
Packit 1c1d7e
    virtual INode * node() const = 0;
Packit 1c1d7e
    virtual NodeRelation relation() const = 0;
Packit 1c1d7e
    virtual const IString * relationString() const = 0;
Packit 1c1d7e
    virtual IEdgeLabelIterator *edgeLabels() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IChildNodeIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IChildNodeIterator)
Packit 1c1d7e
    virtual IChildNode *toFirst() = 0;
Packit 1c1d7e
    virtual IChildNode *toLast() = 0;
Packit 1c1d7e
    virtual IChildNode *toNext() = 0;
Packit 1c1d7e
    virtual IChildNode *toPrev() = 0;
Packit 1c1d7e
    virtual IChildNode *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class INode
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(INode)
Packit 1c1d7e
    virtual const IString * id() const = 0;
Packit 1c1d7e
    virtual const IString * label() const = 0;
Packit 1c1d7e
    virtual const IString * linkId() const = 0;
Packit 1c1d7e
    virtual IChildNodeIterator *children() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class INodeIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(INodeIterator)
Packit 1c1d7e
    virtual INode *toFirst() = 0;
Packit 1c1d7e
    virtual INode *toLast() = 0;
Packit 1c1d7e
    virtual INode *toNext() = 0;
Packit 1c1d7e
    virtual INode *toPrev() = 0;
Packit 1c1d7e
    virtual INode *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IGraph
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IGraph)
Packit 1c1d7e
    virtual INodeIterator *nodes() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IMember 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IMember)
Packit 1c1d7e
    enum MemberKind { Invalid=0,
Packit 1c1d7e
                      Define, Property, Variable, Typedef, Enum,
Packit 1c1d7e
                      Function, Signal, Prototype, Friend, DCOP, Slot, 
Packit 1c1d7e
                      EnumValue
Packit 1c1d7e
                    };
Packit 1c1d7e
    virtual ICompound *compound() const = 0;
Packit 1c1d7e
    virtual ISection *section() const = 0;
Packit 1c1d7e
    virtual MemberKind kind() const = 0;
Packit 1c1d7e
    virtual const IString * kindString() const = 0;
Packit 1c1d7e
    virtual const IString * id() const = 0;
Packit 1c1d7e
    virtual const IString * protection() const = 0;
Packit 1c1d7e
    virtual const IString * virtualness() const = 0;
Packit 1c1d7e
    virtual ILinkedTextIterator *type() const = 0;
Packit 1c1d7e
    virtual const IString * typeString() const = 0;
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
    virtual const IString * readAccessor() const = 0;
Packit 1c1d7e
    virtual const IString * writeAccessor() const = 0;
Packit 1c1d7e
    virtual const IString * definition() const = 0;
Packit 1c1d7e
    virtual const IString * argsstring() const = 0;
Packit 1c1d7e
    virtual bool isConst() const = 0;
Packit 1c1d7e
    virtual bool isVolatile() const = 0;
Packit 1c1d7e
    virtual bool isStatic() const = 0;
Packit 1c1d7e
    virtual bool isExplicit() const = 0;
Packit 1c1d7e
    virtual bool isInline() const = 0;
Packit 1c1d7e
    virtual bool isMutable() const = 0;
Packit 1c1d7e
    virtual bool isReadable() const = 0;
Packit 1c1d7e
    virtual bool isWritable() const = 0;
Packit 1c1d7e
    virtual IParamIterator *parameters() const = 0;
Packit 1c1d7e
    virtual IParamIterator *templateParameters() const = 0;
Packit 1c1d7e
    virtual ILinkedTextIterator *initializer() const = 0;
Packit 1c1d7e
    virtual ILinkedTextIterator *exceptions() const = 0;
Packit 1c1d7e
    virtual IMemberReferenceIterator *references() const = 0; 
Packit 1c1d7e
    virtual IMemberReferenceIterator *referencedBy() const = 0;
Packit 1c1d7e
    virtual const IString *bodyFile() const = 0;
Packit 1c1d7e
    virtual int bodyStart() const = 0;
Packit 1c1d7e
    virtual int bodyEnd() const = 0;
Packit 1c1d7e
    virtual const IString * definitionFile() const = 0;
Packit 1c1d7e
    virtual int definitionLine() const = 0;
Packit 1c1d7e
    virtual IMemberReference *reimplements() const = 0;
Packit 1c1d7e
    virtual IMemberReferenceIterator *reimplementedBy() const = 0;
Packit 1c1d7e
    virtual IDocRoot *briefDescription() const = 0;
Packit 1c1d7e
    virtual IDocRoot *detailedDescription() const = 0;
Packit 1c1d7e
    virtual IDocRoot *inbodyDescription() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDefine : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IProperty : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IVariable : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ITypedef : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IFunction : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ISignal : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IPrototype : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IFriend : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IDCOP : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ISlot : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IEnumValue : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief Include relation
Packit 1c1d7e
 */
Packit 1c1d7e
class IInclude 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IInclude)
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
    virtual const IString * refId() const = 0;
Packit 1c1d7e
    virtual bool isLocal() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IIncludeIterator
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IIncludeIterator)
Packit 1c1d7e
    virtual IInclude *toFirst() = 0;
Packit 1c1d7e
    virtual IInclude *toLast() = 0;
Packit 1c1d7e
    virtual IInclude *toNext() = 0;
Packit 1c1d7e
    virtual IInclude *toPrev() = 0;
Packit 1c1d7e
    virtual IInclude *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IMemberIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IMemberIterator)
Packit 1c1d7e
    virtual IMember *toFirst() = 0;
Packit 1c1d7e
    virtual IMember *toLast() = 0;
Packit 1c1d7e
    virtual IMember *toNext() = 0;
Packit 1c1d7e
    virtual IMember *toPrev() = 0;
Packit 1c1d7e
    virtual IMember *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IEnum : public IMember
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IMemberIterator *enumValues() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a section in the object model. 
Packit 1c1d7e
 *
Packit 1c1d7e
 *  A compound can have a number of sections, where each
Packit 1c1d7e
 *  section contains a set of members with the properties implied by
Packit 1c1d7e
 *  the section kind. The kind() method returns the kind of the section.
Packit 1c1d7e
 *  The members of the section can be accessed via members(). Apart
Packit 1c1d7e
 *  from using kind(), some of the individual properties of the section can 
Packit 1c1d7e
 *  also be inspected via isStatic(), isPublic(), isProtected() and 
Packit 1c1d7e
 *  isPrivate().
Packit 1c1d7e
 */
Packit 1c1d7e
class ISection 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ISection)
Packit 1c1d7e
    /*! Possible section types */
Packit 1c1d7e
    enum SectionKind 
Packit 1c1d7e
    { Invalid=0,
Packit 1c1d7e
      UserDefined,         //!< A user defined member group 
Packit 1c1d7e
      PubTypes,            //!< Public member typedefs
Packit 1c1d7e
      PubFuncs,            //!< Public member functions
Packit 1c1d7e
      PubAttribs,          //!< Public member attributes 
Packit 1c1d7e
      PubSlots,            //!< Public Qt Slots
Packit 1c1d7e
      Signals,             //!< Qt Signals
Packit 1c1d7e
      DCOPFuncs,           //!< KDE-DCOP interface functions
Packit 1c1d7e
      Properties,          //!< IDL properties
Packit 1c1d7e
      Events,              //!< C# events
Packit 1c1d7e
      PubStatFuncs,        //!< Public static member functions
Packit 1c1d7e
      PubStatAttribs,      //!< Public static attributes
Packit 1c1d7e
      ProTypes,            //!< Protected member typedefs
Packit 1c1d7e
      ProFuncs,            //!< Protected member functions
Packit 1c1d7e
      ProAttribs,          //!< Protected member attributes
Packit 1c1d7e
      ProSlots,            //!< Protected slots
Packit 1c1d7e
      ProStatFuncs,        //!< Protected static member functions
Packit 1c1d7e
      ProStatAttribs,      //!< Protected static member attributes
Packit 1c1d7e
      PacTypes,            //!< Package member typedefs
Packit 1c1d7e
      PacFuncs,            //!< Package member functions
Packit 1c1d7e
      PacAttribs,          //!< Package member attributes
Packit 1c1d7e
      PacStatFuncs,        //!< Package static member functions
Packit 1c1d7e
      PacStatAttribs,      //!< Package static member attributes
Packit 1c1d7e
      PriTypes,            //!< Private member typedefs
Packit 1c1d7e
      PriFuncs,            //!< Private member functions
Packit 1c1d7e
      PriAttribs,          //!< Private member attributes
Packit 1c1d7e
      PriSlots,            //!< Private Qt slots
Packit 1c1d7e
      PriStatFuncs,        //!< Private static member functions
Packit 1c1d7e
      PriStatAttribs,      //!< Private static member attributes
Packit 1c1d7e
      Friend,              //!< Friends
Packit 1c1d7e
      Related,             //!< Function marked as related
Packit 1c1d7e
      Defines,             //!< Preprocessor defines
Packit 1c1d7e
      Prototypes,          //!< Global function prototypes
Packit 1c1d7e
      Typedefs,            //!< Global typedefs
Packit 1c1d7e
      Enums,               //!< Enumerations
Packit 1c1d7e
      Functions,           //!< Global functions
Packit 1c1d7e
      Variables            //!< Global variables
Packit 1c1d7e
    };
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns a string representation of the value returned by kind() */
Packit 1c1d7e
    virtual const IString * kindString() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns what kind of section this is */
Packit 1c1d7e
    virtual SectionKind kind() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns the description attached to this section (for user defined
Packit 1c1d7e
     *  sections, also known as member groups).
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual IDocRoot *description() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns an iterator for the members of this section */
Packit 1c1d7e
    virtual IMemberIterator *members() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns \c true if this section contains statics */
Packit 1c1d7e
    virtual bool isStatic() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns \c true if this section belongs to a 
Packit 1c1d7e
     *  public section of a class 
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual bool isPublic() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns \c true if this section belongs to a 
Packit 1c1d7e
     *  private section of a class 
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual bool isPrivate() const = 0;
Packit 1c1d7e
    
Packit 1c1d7e
    /*! Returns \c true if this section belongs to a 
Packit 1c1d7e
     *  protected section of a class 
Packit 1c1d7e
     * */
Packit 1c1d7e
    virtual bool isProtected() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IUserDefined : public ISection
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IString * header() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ISectionIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ISectionIterator)
Packit 1c1d7e
    virtual ISection *toFirst() = 0;
Packit 1c1d7e
    virtual ISection *toLast() = 0;
Packit 1c1d7e
    virtual ISection *toNext() = 0;
Packit 1c1d7e
    virtual ISection *toPrev() = 0;
Packit 1c1d7e
    virtual ISection *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a compound in the object model. 
Packit 1c1d7e
 *
Packit 1c1d7e
 *  A compound has a name which can be obtained via the name() method 
Packit 1c1d7e
 *  and a unique id, which is return via the id() method.
Packit 1c1d7e
 *  A compound consists zero or more members which are grouped into sections. 
Packit 1c1d7e
 *  The sections() method can be used to access the individual sections. 
Packit 1c1d7e
 *  Alternatively, members can be obtained by name or id. There are 
Packit 1c1d7e
 *  different types of compounds. The kind() method returns what kind of 
Packit 1c1d7e
 *  compound this is. Depending on the return value one can dynamically 
Packit 1c1d7e
 *  cast an interface pointer to an more specialised interface that provides 
Packit 1c1d7e
 *  additional methods.
Packit 1c1d7e
 *  Example:
Packit 1c1d7e
 *  \code
Packit 1c1d7e
 *  ICompound *comp=...;
Packit 1c1d7e
 *  if (comp->kind()==ICompound::Class)
Packit 1c1d7e
 *  {
Packit 1c1d7e
 *    IClass *cls = dynamic_cast<IClass*>(comp);
Packit 1c1d7e
 *    // use methods of IClass
Packit 1c1d7e
 *  }
Packit 1c1d7e
 *  \endcode
Packit 1c1d7e
 *  The documentation that is provided by a compound is available via
Packit 1c1d7e
 *  the briefDescription() and detailedDescription() methods.
Packit 1c1d7e
 *  To avoid excessive memory usage, release() should be called (once) on each 
Packit 1c1d7e
 *  compound interface pointer that is no longer needed.
Packit 1c1d7e
 */
Packit 1c1d7e
class ICompound 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ICompound)
Packit 1c1d7e
    /*! Represents the kind of compounds recognised by doxygen. */
Packit 1c1d7e
    enum CompoundKind { Invalid=0,
Packit 1c1d7e
                        Class, Struct, Union, Interface, Protocol, Category,
Packit 1c1d7e
                        Exception, File, Namespace, Group, Page, Example, Dir
Packit 1c1d7e
                      };
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns the name of this compound */
Packit 1c1d7e
    virtual const IString * name() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns the id of this compound. The id is a
Packit 1c1d7e
     *  unique string representing a specific compound object.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual const IString * id()   const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns the kind of compound. See #CompoundKind for possible
Packit 1c1d7e
     *  values.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual CompoundKind kind() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a string representation of the compound kind.
Packit 1c1d7e
     *  @see kind()
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual const IString * kindString() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns an iterator for the different member sections in this
Packit 1c1d7e
     *  compound.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ISectionIterator *sections() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a tree-structured representation of the brief
Packit 1c1d7e
     *  description that is attached to this compound.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual IDocRoot *briefDescription() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a tree-structured representation of the detailed
Packit 1c1d7e
     *  description that is attached to this compound.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual IDocRoot *detailedDescription() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns an interface to a member given its id. 
Packit 1c1d7e
     *  @param id The member id.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual IMember *memberById(const char * id) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a list of all members within the compound having a certain 
Packit 1c1d7e
     *  name. Member overloading is the reason why there can be more than 
Packit 1c1d7e
     *  one member. 
Packit 1c1d7e
     *  @param name The name of the member.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual IMemberIterator *memberByName(const char * name) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Decreases the reference counter for this compound. If it reaches
Packit 1c1d7e
     *  zero, the memory for the compound will be released.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class ICompoundIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(ICompoundIterator)
Packit 1c1d7e
    virtual void toFirst() = 0;
Packit 1c1d7e
    virtual void toLast() = 0;
Packit 1c1d7e
    virtual void toNext() = 0;
Packit 1c1d7e
    virtual void toPrev() = 0;
Packit 1c1d7e
    virtual ICompound *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IRelatedCompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IRelatedCompound)
Packit 1c1d7e
    enum Protection { Public, Protected, Private };
Packit 1c1d7e
    enum Kind { Normal, Virtual };
Packit 1c1d7e
    virtual ICompound *compound() const = 0;
Packit 1c1d7e
    virtual Protection protection() const = 0;
Packit 1c1d7e
    virtual Kind kind() const = 0;
Packit 1c1d7e
    virtual const IString *name() const = 0;
Packit 1c1d7e
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class IRelatedCompoundIterator 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator)
Packit 1c1d7e
    virtual IRelatedCompound *toFirst() = 0;
Packit 1c1d7e
    virtual IRelatedCompound *toLast() = 0;
Packit 1c1d7e
    virtual IRelatedCompound *toNext() = 0;
Packit 1c1d7e
    virtual IRelatedCompound *toPrev() = 0;
Packit 1c1d7e
    virtual IRelatedCompound *current() const = 0;
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a class in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IClass : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IGraph *inheritanceGraph() const = 0;
Packit 1c1d7e
    virtual IGraph *collaborationGraph() const = 0;
Packit 1c1d7e
    virtual IRelatedCompoundIterator *baseCompounds() const = 0;
Packit 1c1d7e
    virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
    virtual IParamIterator *templateParameters() const = 0;
Packit 1c1d7e
    virtual const IString *locationFile() const = 0;
Packit 1c1d7e
    virtual int locationLine() const = 0;
Packit 1c1d7e
    virtual const IString *locationBodyFile() const = 0;
Packit 1c1d7e
    virtual int locationBodyStartLine() const = 0;
Packit 1c1d7e
    virtual int locationBodyEndLine() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    // TODO:
Packit 1c1d7e
    // class:
Packit 1c1d7e
    //  listOfAllMembers()
Packit 1c1d7e
    //  protection()
Packit 1c1d7e
    //  isAbstract()
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a struct in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IStruct : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
    virtual IRelatedCompoundIterator *baseCompounds() const = 0;
Packit 1c1d7e
    virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
Packit 1c1d7e
    virtual const IString *locationFile() const = 0;
Packit 1c1d7e
    virtual int locationLine() const = 0;
Packit 1c1d7e
    virtual int locationBodyStartLine() const = 0;
Packit 1c1d7e
    virtual int locationBodyEndLine() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a union in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IUnion : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a Java/IDL interface in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IInterface : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IRelatedCompoundIterator *baseCompounds() const = 0;
Packit 1c1d7e
    virtual IRelatedCompoundIterator *derivedCompounds() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a Java/IDL exception in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IException : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a namespace in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class INamespace : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a file in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IFile : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual IGraph *includeDependencyGraph() const = 0;
Packit 1c1d7e
    virtual IGraph *includedByDependencyGraph() const = 0;
Packit 1c1d7e
    virtual IDocProgramListing *source() const = 0;
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    virtual IIncludeIterator *includes() const = 0;
Packit 1c1d7e
    virtual IIncludeIterator *includedBy() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    //  ICompound *innerNamespaces()
Packit 1c1d7e
    //  ICompoundIterator *innerClasses()
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a group in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IGroup : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
    // group:
Packit 1c1d7e
    //  Title()
Packit 1c1d7e
    //  innerFile()
Packit 1c1d7e
    //  innerPage()
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! \brief The interface to a page in the object model. 
Packit 1c1d7e
 */
Packit 1c1d7e
class IPage : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual const IDocTitle *title() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/** \brief Interface to a directory in the object model. */
Packit 1c1d7e
class IDir : public ICompound
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    virtual ICompoundIterator *nestedCompounds() const = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! Root node of the object model. */
Packit 1c1d7e
class IDoxygen 
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    VIRTUAL_DESTRUCTOR(IDoxygen)
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns an iterator that can be used to iterate over the list
Packit 1c1d7e
     *  of compounds found in the project.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ICompoundIterator *compounds() const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a compound given its unique \a id. If you have a
Packit 1c1d7e
     *  compound id this function is much more efficient than iterating
Packit 1c1d7e
     *  over the compound list. Returns 0 if the id is not valid.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ICompound *compoundById(const char * id) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a compound given its name (including the scope). 
Packit 1c1d7e
     *  Returns 0 if the name is not found in the project.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ICompound *compoundByName(const char * name) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns an interface to a compound containing a member given it the
Packit 1c1d7e
     *  member's id. Given the ICompound interface one can use the same id
Packit 1c1d7e
     *  to obtain the IMember interface.
Packit 1c1d7e
     *  @param id The member id.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ICompound *memberById(const char * id) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Returns a list of all compounds containing at least one members 
Packit 1c1d7e
     *  with a certain name. Each compound can be asked to return the
Packit 1c1d7e
     *  list of members with that name.
Packit 1c1d7e
     *  @param name The name of the member.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual ICompoundIterator *memberByName(const char * name) const = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Releases the memory for the object hierarchy obtained by 
Packit 1c1d7e
     *  createdObjecModelFromXML(). First release all iterators before calling
Packit 1c1d7e
     *  this function.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual void release() = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Sets the debug level.
Packit 1c1d7e
     *  - 0 all debugging messages are disabled (the default).
Packit 1c1d7e
     *  - 1 display important messages only
Packit 1c1d7e
     *  - 2 display any messages.
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual void setDebugLevel(int level) = 0;
Packit 1c1d7e
Packit 1c1d7e
    /*! Reads an XML directory produced by doxygen and builds up a data 
Packit 1c1d7e
     *  structure representing the contents of the XML files in the directory. 
Packit 1c1d7e
     */
Packit 1c1d7e
    virtual bool readXMLDir(const char *xmlDirName) = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/*! Factory method that creates an empty object model for a doxygen generated XML file.
Packit 1c1d7e
 *  Use the readXMLDir() method to build the model from an XML output 
Packit 1c1d7e
 *  directory containing doxygen output.
Packit 1c1d7e
 */
Packit 1c1d7e
IDoxygen *createObjectModel();
Packit 1c1d7e
Packit 1c1d7e
#endif