Blame addon/doxmlparser/src/memberhandler.h

Packit Service 50c9f2
/******************************************************************************
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * $Id$
Packit Service 50c9f2
 *
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 * Permission to use, copy, modify, and distribute this software and its
Packit Service 50c9f2
 * documentation under the terms of the GNU General Public License is hereby 
Packit Service 50c9f2
 * granted. No representations are made about the suitability of this software 
Packit Service 50c9f2
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit Service 50c9f2
 * See the GNU General Public License for more details.
Packit Service 50c9f2
 *
Packit Service 50c9f2
 */
Packit Service 50c9f2
Packit Service 50c9f2
#ifndef _MEMBERHANDLER_H
Packit Service 50c9f2
#define _MEMBERHANDLER_H
Packit Service 50c9f2
Packit Service 50c9f2
#include <qstring.h>
Packit Service 50c9f2
#include <qlist.h>
Packit Service 50c9f2
#include <qxml.h>
Packit Service 50c9f2
#include <doxmlintf.h>
Packit Service 50c9f2
Packit Service 50c9f2
#include "basehandler.h"
Packit Service 50c9f2
#include "baseiterator.h"
Packit Service 50c9f2
#include "stringimpl.h"
Packit Service 50c9f2
Packit Service 50c9f2
class MainHandler;
Packit Service 50c9f2
class CompoundHandler;
Packit Service 50c9f2
class SectionHandler;
Packit Service 50c9f2
class ParamHandler;
Packit Service 50c9f2
class LinkedTextImpl;
Packit Service 50c9f2
class LinkedTextHandler;
Packit Service 50c9f2
class DocHandler;
Packit Service 50c9f2
Packit Service 50c9f2
class MemberReference : public IMemberReference
Packit Service 50c9f2
{
Packit Service 50c9f2
  public:
Packit Service 50c9f2
    virtual ~MemberReference() {}
Packit Service 50c9f2
    virtual IMember *member() const;
Packit Service 50c9f2
    virtual const IString *name() const { return &m_name; }
Packit Service 50c9f2
    virtual const IString *scope() const { return &m_scope; }
Packit Service 50c9f2
    virtual const IString *protection() const { return &m_protection; }
Packit Service 50c9f2
    virtual const IString *virtualness() const { return &m_virtualness; }
Packit Service 50c9f2
    virtual const IString *ambiguityScope() const { return &m_ambiguityScope; }
Packit Service 50c9f2
    void initialize(MainHandler *m);
Packit Service 50c9f2
Packit Service 50c9f2
    QString      m_memId;
Packit Service 50c9f2
    StringImpl   m_name;
Packit Service 50c9f2
    StringImpl   m_scope;
Packit Service 50c9f2
    StringImpl   m_virtualness;
Packit Service 50c9f2
    StringImpl   m_protection;
Packit Service 50c9f2
    StringImpl   m_ambiguityScope;
Packit Service 50c9f2
    MainHandler *m_mainHandler;
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
class MemberReferenceIterator : public BaseIterator<IMemberReferenceIterator,IMemberReference,MemberReference>
Packit Service 50c9f2
{
Packit Service 50c9f2
  public:
Packit Service 50c9f2
    MemberReferenceIterator(const QList<MemberReference> &list) : 
Packit Service 50c9f2
      BaseIterator<IMemberReferenceIterator,IMemberReference,MemberReference>(list) {}
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
class MemberHandler : public IDefine,
Packit Service 50c9f2
                      public IProperty, 
Packit Service 50c9f2
                      public IVariable,
Packit Service 50c9f2
                      public ITypedef,
Packit Service 50c9f2
                      public IFunction,
Packit Service 50c9f2
                      public ISignal,
Packit Service 50c9f2
                      public IPrototype,
Packit Service 50c9f2
                      public IFriend,
Packit Service 50c9f2
                      public IDCOP,
Packit Service 50c9f2
                      public ISlot,
Packit Service 50c9f2
                      public IEnum,
Packit Service 50c9f2
                      public IEnumValue,
Packit Service 50c9f2
                      public BaseHandler<MemberHandler>
Packit Service 50c9f2
{
Packit Service 50c9f2
  public:
Packit Service 50c9f2
    virtual void startMember(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endMember();
Packit Service 50c9f2
    virtual void startParam(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startType(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startName(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endName();
Packit Service 50c9f2
    virtual void startRead(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endRead();
Packit Service 50c9f2
    virtual void startWrite(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endWrite();
Packit Service 50c9f2
    virtual void startDefinition(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endDefinition();
Packit Service 50c9f2
    virtual void startArgsString(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endArgsString();
Packit Service 50c9f2
    virtual void startBriefDesc(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startDetailedDesc(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startInbodyDesc(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startLocation(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startReferences(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endReferences();
Packit Service 50c9f2
    virtual void startReferencedBy(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endReferencedBy();
Packit Service 50c9f2
    virtual void startReimplements(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endReimplements();
Packit Service 50c9f2
    virtual void startReimplementedBy(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void endReimplementedBy();
Packit Service 50c9f2
    virtual void startInitializer(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startException(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startEnumValue(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startEnumValue2(const QXmlAttributes& attrib);
Packit Service 50c9f2
    virtual void startTemplateParamList(const QXmlAttributes &attrib);
Packit Service 50c9f2
    virtual void endTemplateParamList();
Packit Service 50c9f2
Packit Service 50c9f2
    MemberHandler(IBaseHandler *parent);
Packit Service 50c9f2
    virtual ~MemberHandler();
Packit Service 50c9f2
Packit Service 50c9f2
    // IMember implementation
Packit Service 50c9f2
    virtual ICompound *compound() const;
Packit Service 50c9f2
    virtual ISection *section() const;
Packit Service 50c9f2
    virtual MemberKind kind() const
Packit Service 50c9f2
    { return m_kind; }
Packit Service 50c9f2
    virtual const IString *kindString() const 
Packit Service 50c9f2
    { return &m_kindString; }
Packit Service 50c9f2
    virtual const IString *id() const 
Packit Service 50c9f2
    { return &m_id; }
Packit Service 50c9f2
    virtual const IString *protection() const 
Packit Service 50c9f2
    { return &m_protection; }
Packit Service 50c9f2
    virtual const IString *virtualness() const 
Packit Service 50c9f2
    { return &m_virtualness; }
Packit Service 50c9f2
    virtual const IString *name() const 
Packit Service 50c9f2
    { return &m_name; }
Packit Service 50c9f2
    virtual const IString *readAccessor() const 
Packit Service 50c9f2
    { return &m_read; }
Packit Service 50c9f2
    virtual const IString *writeAccessor() const 
Packit Service 50c9f2
    { return &m_write; }
Packit Service 50c9f2
    virtual const IString *definition() const 
Packit Service 50c9f2
    { return &m_definition; }
Packit Service 50c9f2
    virtual const IString *argsstring() const 
Packit Service 50c9f2
    { return &m_argsstring; }
Packit Service 50c9f2
    virtual bool isConst() const 
Packit Service 50c9f2
    { return m_isConst; }
Packit Service 50c9f2
    virtual bool isVolatile() const 
Packit Service 50c9f2
    { return m_isVolatile; }
Packit Service 50c9f2
    virtual bool isStatic() const 
Packit Service 50c9f2
    { return m_isStatic; }
Packit Service 50c9f2
    virtual bool isExplicit() const 
Packit Service 50c9f2
    { return m_isExplicit; }
Packit Service 50c9f2
    virtual bool isInline() const 
Packit Service 50c9f2
    { return m_isInline; }
Packit Service 50c9f2
    virtual bool isMutable() const 
Packit Service 50c9f2
    { return m_isMutable; }
Packit Service 50c9f2
    virtual bool isReadable() const 
Packit Service 50c9f2
    { return m_isReadable; }
Packit Service 50c9f2
    virtual bool isWritable() const 
Packit Service 50c9f2
    { return m_isWritable; }
Packit Service 50c9f2
    virtual ILinkedTextIterator *type() const;
Packit Service 50c9f2
    virtual const IString *typeString() const;
Packit Service 50c9f2
    virtual IParamIterator *parameters() const;
Packit Service 50c9f2
    virtual IParamIterator *templateParameters() const;
Packit Service 50c9f2
    virtual IMemberReferenceIterator *references() const;
Packit Service 50c9f2
    virtual IMemberReferenceIterator *referencedBy() const;
Packit Service 50c9f2
    virtual ILinkedTextIterator *initializer() const;
Packit Service 50c9f2
    virtual ILinkedTextIterator *exceptions() const;
Packit Service 50c9f2
    virtual const IString *bodyFile() const
Packit Service 50c9f2
    { return &m_bodyFile; }
Packit Service 50c9f2
    virtual int bodyStart() const 
Packit Service 50c9f2
    { return m_bodyStart; }
Packit Service 50c9f2
    virtual int bodyEnd() const 
Packit Service 50c9f2
    { return m_bodyEnd; }
Packit Service 50c9f2
    virtual const IString *definitionFile() const 
Packit Service 50c9f2
    { return &m_defFile; }
Packit Service 50c9f2
    virtual int definitionLine() const 
Packit Service 50c9f2
    { return m_defLine; }
Packit Service 50c9f2
    virtual IMemberReference *reimplements() const
Packit Service 50c9f2
    { return m_reimplements; }
Packit Service 50c9f2
    virtual IMemberReferenceIterator *reimplementedBy() const;
Packit Service 50c9f2
    virtual IDocRoot *briefDescription() const;
Packit Service 50c9f2
    virtual IDocRoot *detailedDescription() const;
Packit Service 50c9f2
    virtual IDocRoot *inbodyDescription() const;
Packit Service 50c9f2
Packit Service 50c9f2
    // IEnum
Packit Service 50c9f2
    virtual IMemberIterator *enumValues() const;
Packit Service 50c9f2
    
Packit Service 50c9f2
    void initialize(MainHandler *m);
Packit Service 50c9f2
    void setCompoundHandler(CompoundHandler *c);
Packit Service 50c9f2
    void setSectionHandler(SectionHandler *s);
Packit Service 50c9f2
Packit Service 50c9f2
  private:
Packit Service 50c9f2
                                                     // XML elements:
Packit Service 50c9f2
                                                     // -----------------
Packit Service 50c9f2
    QList<ParamHandler> m_templateParams;            // templateparamlist
Packit Service 50c9f2
    QList<LinkedTextImpl> m_type;                    // type
Packit Service 50c9f2
    StringImpl m_definition;                         // definition
Packit Service 50c9f2
    StringImpl m_argsstring;                         // argsstring
Packit Service 50c9f2
    StringImpl m_name;                               // name
Packit Service 50c9f2
    StringImpl m_read;                               // read
Packit Service 50c9f2
    StringImpl m_write;                              // write
Packit Service 50c9f2
    MemberReference *m_reimplements;                 // reimplements
Packit Service 50c9f2
    QList<MemberReference> m_reimplementedBy;        // reimplementedby
Packit Service 50c9f2
    QList<ParamHandler> m_params;                    // param
Packit Service 50c9f2
    QList<MemberHandler> m_enumValues;               // enumvalue
Packit Service 50c9f2
    QList<LinkedTextImpl> m_initializer;             // initializer
Packit Service 50c9f2
    QList<LinkedTextImpl> m_exception;               // exceptions
Packit Service 50c9f2
    DocHandler  *m_brief;                            // briefdescription
Packit Service 50c9f2
    DocHandler  *m_detailed;                         // detaileddescription
Packit Service 50c9f2
    DocHandler  *m_inbody;                           // inbodydescription
Packit Service 50c9f2
                                                     // location
Packit Service 50c9f2
    StringImpl m_defFile;                            // - file
Packit Service 50c9f2
    int m_defLine;                                   // - line
Packit Service 50c9f2
    StringImpl m_bodyFile;                           // - bodyfile
Packit Service 50c9f2
    int m_bodyStart;                                 // - bodystart
Packit Service 50c9f2
    int m_bodyEnd;                                   // - bodyend
Packit Service 50c9f2
    QList<MemberReference> m_references;             // references
Packit Service 50c9f2
    QList<MemberReference> m_referencedBy;           // referencedby
Packit Service 50c9f2
Packit Service 50c9f2
                                                     // XML attributes:
Packit Service 50c9f2
                                                     // ---------------
Packit Service 50c9f2
    MemberKind m_kind;                               // kind
Packit Service 50c9f2
    StringImpl m_kindString;                         // kind as a string
Packit Service 50c9f2
    StringImpl m_id;                                 // id
Packit Service 50c9f2
    StringImpl m_protection;                         // prot
Packit Service 50c9f2
    bool m_isStatic;                                 // static
Packit Service 50c9f2
    bool m_isConst;                                  // const
Packit Service 50c9f2
    bool m_isExplicit;                               // explicit
Packit Service 50c9f2
    bool m_isInline;                                 // inline
Packit Service 50c9f2
    StringImpl m_virtualness;                        // virt
Packit Service 50c9f2
    bool m_isVolatile;                               // volatile
Packit Service 50c9f2
    bool m_isMutable;                                // mutable
Packit Service 50c9f2
    bool m_isReadable;                               // readable
Packit Service 50c9f2
    bool m_isWritable;                               // writable
Packit Service 50c9f2
Packit Service 50c9f2
    CompoundHandler *m_compound;
Packit Service 50c9f2
    SectionHandler *m_section;
Packit Service 50c9f2
    StringImpl m_typeString;
Packit Service 50c9f2
    LinkedTextHandler *m_linkedTextHandler;
Packit Service 50c9f2
    bool m_insideTemplateParamList;
Packit Service 50c9f2
    bool m_hasTemplateParamList;
Packit Service 50c9f2
    IBaseHandler *m_parent;
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
class MemberIterator : public BaseIteratorVia
Packit Service 50c9f2
                                        IMember,
Packit Service 50c9f2
                                        MemberHandler,
Packit Service 50c9f2
                                        IFunction>
Packit Service 50c9f2
{
Packit Service 50c9f2
  public:
Packit Service 50c9f2
    MemberIterator(const QList<MemberHandler> &list) : 
Packit Service 50c9f2
      BaseIteratorVia<IMemberIterator,IMember,MemberHandler,IFunction>(list) {}
Packit Service 50c9f2
};
Packit Service 50c9f2
Packit Service 50c9f2
void memberhandler_init();
Packit Service 50c9f2
void memberhandler_exit();
Packit Service 50c9f2
Packit Service 50c9f2
#endif