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