ROOT logo
// @(#)root/reflex:$Id$
// Author: Stefan Roiser 2004

// Copyright CERN, CH-1211 Geneva 23, 2004-2006, All rights reserved.
//
// Permission to use, copy, modify, and distribute this software for any
// purpose is hereby granted without fee, provided that this copyright and
// permissions notice appear in all copies and derivatives.
//
// This software is provided "as is" without express or implied warranty.

#ifndef Reflex_Member
#define Reflex_Member

// Include files
#include "Reflex/Kernel.h"


namespace Reflex {
// forward declarations
class MemberBase;
class Type;
class Scope;
class PropertyList;
class Object;
class MemberTemplate;
class DictionaryGenerator;


/**
 * @class Member Member.h Reflex/Member.h
 * @author Stefan Roiser
 * @date 24/11/2003
 * @ingroup Ref
 */
class RFLX_API Member {
   friend class OwnedMember;

public:
   /** default constructor */
   Member(const MemberBase * memberBase = 0);


   /** copy constructor */
   Member(const Member &rh);


   /** destructor */
   ~Member();


   /**
    * lesser than operator
    */
   bool operator <(const Member& rh) const;


   /**
    * equal operator
    */
   bool operator ==(const Member& rh) const;


   /**
    * not equal operator
    */
   bool operator !=(const Member& rh) const;


   /**
    * assignment operator
    */
   Member& operator =(const Member& rh);


   /**
    * operator bool will return true if the member is valid
    * @return true if member is implemented
    */
   operator bool() const;

#ifdef REFLEX_CINT_MERGE
   // To prevent any un-authorized use as the old type
   bool
   operator !() const { return !operator bool(); }

   bool
   operator &&(bool right) const { return operator bool() && right; }

   bool
   operator &&(int right) const { return operator bool() && right; }

   bool
   operator &&(long right) const { return operator bool() && right; }

   bool operator &&(const Scope& right) const;
   bool operator &&(const Type& right) const;
   bool operator &&(const Member& right) const;
   bool
   operator ||(bool right) const { return operator bool() || right; }

   bool
   operator ||(int right) const { return operator bool() || right; }

   bool
   operator ||(long right) const { return operator bool() || right; }

   bool operator ||(const Scope& right) const;
   bool operator ||(const Type& right) const;
   bool operator ||(const Member& right) const;

private:
   operator int() const;

public:
#endif

   /**
    * DeclaringScope will return the scope which the member lives in
    * @return the declaring scope of the member
    */
   Scope DeclaringScope() const;


   /**
    * DeclaringType will return the type which the member lives in
    * (i.e. the same as the Scope)
    * @return the declaring type of the member
    */
   Type DeclaringType() const;


   /**
    * GenerateDict will produce the dictionary information of this type
    * @param generator a reference to the dictionary generator instance
    */
   void GenerateDict(DictionaryGenerator& generator) const;


   /**
    * Get a static data member value
    * @return member value as object
    */
   Object Get() const;


   /**
    * Get the data member value
    * @return member value as object
    */
   Object Get(const Object& obj) const;


   /**
    * Id returns a unique identifier of the member in the system
    * @return unique identifier
    */
   void* Id() const;


   /**
    * Invoke a member function
    * @param obj the object which owns the member function
    * @param paramList a vector of addresses to paramter values
    * @return the return value of the function as object
    */
   void Invoke(const Object& obj,
               Object* ret,
               const std::vector<void*>& paramList = std::vector<void*>()) const;

   /**
    * Invoke a member function
    * @param obj the object which owns the member function
    * @param paramList a vector of addresses to paramter values
    * @return the return value of the function as object
    */
   template <typename T>
   void Invoke(const Object& obj,
               T& ret,
               const std::vector<void*>& paramList = std::vector<void*>()) const;

   /**
    * Invoke a static function
    * @param paramList a vector of addresses to parameter values
    * @return the return value of the function as object
    */
   void Invoke(Object* ret,
               const std::vector<void*>& paramList = std::vector<void*>()) const;


   /**
    * Invoke a static function
    * @param paramList a vector of addresses to parameter values
    * @return the return value of the function as object
    */
   template <typename T>
   void Invoke(T& ret,
               const std::vector<void*>& paramList = std::vector<void*>()) const;


   /**
    * IsAbstract checks whether abstract is set for the data member,
    * or a function member is pure virtual
    * @return true if abstract modifier is set for this member
    */
   bool IsAbstract() const;


   /**
    * IsArtificial checks whether artificial is set for the data member
    * @return true if artificial modifier is set for this member
    */
   bool IsArtificial() const;

   /**
    * IsAuto checks whether auto is set for the data member
    * @return true if auto modifier is set for this member
    */
   bool IsAuto() const;


   /**
    * IsConstructor checks whether the function member is a constructor
    * @return true if member is a constructor
    */
   bool IsConstructor() const;


   /**
    * IsConst will check whether this member is const qualified.
    * @return true if the member is const qualified
    */
   bool IsConst() const;


   /**
    * IsConverter checks whether the function member is a user defined conversion function
    * @return true if member is a conversion operator
    */
   bool IsConverter() const;


   /**
    *IsCopyConstructor checks whether the function member is a copy constructor
    * @return true if member is a copy constructor
    */
   bool IsCopyConstructor() const;


   /**
    * IsDataMember returns true if this is a data member
    * @return true if this member is a data member
    */
   bool IsDataMember() const;


   /**
    * check whether the function member is a destructor
    * @return true if this member is a destructor
    */
   bool IsDestructor() const;


   /**
    * IsExplicit checks whether explicit is set for the function member
    * @return true if explicit modifier is set for this member
    */
   bool IsExplicit() const;


   /**
    * IsExtern checks whether extern is set for the data member
    * @return true if extern modifier is set for this member
    */
   bool IsExtern() const;


   /**
    * IsFunctionMember returns true if this is a function member
    * @return true if this member is a function member
    */
   bool IsFunctionMember() const;


   /**
    * IsInline checks whether inline is set for the function member
    * @return true if inline modifier is set for this member
    */
   bool IsInline() const;


   /**
    * IsMutable check whether mutable is set for the data member
    * @return true if mutable modifier is set for this member
    */
   bool IsMutable() const;


   /**
    * IsOperator check whether the function member is an operator
    * @return true if this member is an operator function
    */
   bool IsOperator() const;


   /**
    * IsPrivate checks whether the function member is private
    * @return true if access to this member is private
    */
   bool IsPrivate() const;


   /**
    * IsProtected checks whether the function member is protected
    * @return true if access to this member is protected
    */
   bool IsProtected() const;


   /**
    * IsPublic checks whether the function member is public
    * @return true if access to this member is public
    */
   bool IsPublic() const;


   /**
    * IsPureVirtual checks whether the Member is a pure virtual
    * function.
    * @return true if function and abstract modifier is set
    */
   bool IsPureVirtual() const;


   /**
    * IsRegister checks whether register is set for the data member
    * @return true if register modifier is set for this member
    */
   bool IsRegister() const;


   /*
    * IsStatic checks whether static is set for the data member
    * @return true is static modifier is set for this member
    */
   bool IsStatic() const;


   /**
    * IsTemplateInstance returns true if the member represents a
    * templated member function
    * @return true if member represents a templated member function
    */
   bool IsTemplateInstance() const;


   /**
    * IsTransient checks whether the function member is transient
    * @return true if transient modifier is set for this member (not a C++ modifier)
    */
   bool IsTransient() const;


   /**
    * IsVirtual checks whether virtual is set for the function member
    * @return true if virtual modifier is set for this member
    */
   bool IsVirtual() const;


   /**
    * IsVolatile will check whether this member is volatile qualified.
    * @return true if the member is volatile qualified
    */
   bool IsVolatile() const;


   /**
    * MemberType return the type of the member as enum value (function or data member)
    * @return member type as enum
    */
   TYPE MemberType() const;


   /**
    * MemberTypeAsString returns the string representation of the member species
    * @return member type as string representation
    */
   std::string MemberTypeAsString() const;


   /**
    * Name returns the Name of the member
    * @param mod modifiers can be or'ed as argument
    * SCOPED - fully scoped name
    * FINAL  - resolve all typedefs
    * QUALIFIED - cv and reference qualification
    * @return name of the member
    */
   std::string Name(unsigned int mod = 0) const;

   /**
    * Name_c_str returns a char* pointer to the unqualified member name
    * @return c string to unqualified member name
    */
   const char* Name_c_str() const;

   /**
    * Offset returns the offset of the data member relative to the start of the scope
    * @return offset of member as int
    */
   size_t Offset() const;
   void InterpreterOffset(char*);
   char*& InterpreterOffset() const;


   /**
    * FunctionParameterSize returns the number of parameters
    * @param required if true only returns the number of required parameters
    * @return number of parameters
    */
   size_t FunctionParameterSize(bool required = false) const;


   /** FunctionParameterAt nth default value if declared*/
   std::string FunctionParameterDefaultAt(size_t nth) const;


   StdString_Iterator FunctionParameterDefault_Begin() const;
   StdString_Iterator FunctionParameterDefault_End() const;
   Reverse_StdString_Iterator FunctionParameterDefault_RBegin() const;
   Reverse_StdString_Iterator FunctionParameterDefault_REnd() const;


   /**
    * FunctionParametertNameAt returns the nth parameter name
    * @param nth parameter name
    * @return nth parameter name
    */
   std::string FunctionParameterNameAt(size_t nth) const;


   StdString_Iterator FunctionParameterName_Begin() const;
   StdString_Iterator FunctionParameterName_End() const;
   Reverse_StdString_Iterator FunctionParameterName_RBegin() const;
   Reverse_StdString_Iterator FunctionParameterName_REnd() const;


   /**
    * Properties will return the properties attached to this item
    * @return properties of this member
    */
   PropertyList Properties() const;


   /*void Set( const Object & instance,
      const Object & value ) const;*/

   /**
    * Set will set the value of a data member
    * @param instance of the object owning the data member
    * @param value the memory address of the value to set
    */
   void Set(const Object& instance,
            const void* value) const;


   /**
    * SetScope will set the Scope of the member
    * @param sc scope to set
    */
   void SetScope(const Scope& sc) const;


   /**
    * Stubcontext returns a pointer to the context of the member
    * @return pointer to member context
    */
   void* Stubcontext() const;


   /**
    * Stubfunction returns the pointer to the stub function
    * @return function pointer to stub function
    */
   StubFunction Stubfunction() const;


   /**
    * TemplateArgumentAt will return the nth template argument
    * @param  nth template argument
    * @return nth template argument
    */
   Type TemplateArgumentAt(size_t nth) const;


   /**
    * TemplateArgumentSize will return the number of template arguments
    * @return number of template arguments
    */
   size_t TemplateArgumentSize() const;


   Type_Iterator TemplateArgument_Begin() const;
   Type_Iterator TemplateArgument_End() const;
   Reverse_Type_Iterator TemplateArgument_RBegin() const;
   Reverse_Type_Iterator TemplateArgument_REnd() const;


   /**
    * TemplateFamily returns the corresponding MemberTemplate if any
    * @return corresponding MemberTemplate
    */
   MemberTemplate TemplateFamily() const;


   /**
    * ToMemberBase returns the underlying, internal MemberBase
    * @return memberbase pointer
    */
   MemberBase* ToMemberBase() const;


   /**
    * TypeOf returns the member type
    * @return member type
    */
   Type TypeOf() const;

   /**
    * UpdateFunctionParameterNames updates the names of parameters
    * @param  parameters new list of ';' separated parameter names, must not specify default values
    */
   void UpdateFunctionParameterNames(const char* parameters);

private:
   void Delete();

   /**
    * the pointer to the member implementation
    * @link aggregation
    * @supplierCardinality 1
    * @clientCardinality 0..1
    * @label member base
    */
   MemberBase* fMemberBase;

};    // class Member

} //namespace Reflex

#include "Reflex/internal/MemberBase.h"
#include "Reflex/Scope.h"
#include "Reflex/PropertyList.h"
#include "Reflex/Type.h"
#include "Reflex/MemberTemplate.h"


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::operator <(const Member& rh) const {
//-------------------------------------------------------------------------------
   if ((*this) && (bool) rh) {
      return TypeOf() < rh.TypeOf() && Name() < rh.Name();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::operator ==(const Member& rh) const {
//-------------------------------------------------------------------------------
   if ((*this) && (bool) rh) {
      return TypeOf() == rh.TypeOf() && 0 == strcmp(Name_c_str(), rh.Name_c_str());
   }
   // both invalid is equal, too
   return (!(*this)) && (!rh);
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::operator !=(const Member& rh) const {
//-------------------------------------------------------------------------------
   return !(*this == rh);
}


//-------------------------------------------------------------------------------
inline Reflex::Member&
Reflex::Member::operator =(const Member& rh) {
//-------------------------------------------------------------------------------
   if (&rh != this) {
      fMemberBase = rh.fMemberBase;
   }
   return *this;
}


//-------------------------------------------------------------------------------
inline
Reflex::Member::operator bool() const {
//-------------------------------------------------------------------------------
   return 0 != fMemberBase;
}


//-------------------------------------------------------------------------------
inline Reflex::Scope
Reflex::Member::DeclaringScope() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->DeclaringScope();
   }
   return Dummy::Scope();
}


//-------------------------------------------------------------------------------
inline Reflex::Type
Reflex::Member::DeclaringType() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->DeclaringScope();
   }
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
inline void*
Reflex::Member::Id() const {
//-------------------------------------------------------------------------------
   return (void*) fMemberBase;
}


//-------------------------------------------------------------------------------
template <typename T>
inline void
Reflex::Member::Invoke(const Object& obj,
                       T& ret,
                       const std::vector<void*>& paramList) const {
//-------------------------------------------------------------------------------
   Object retO(Type::ByTypeInfo(typeid(T)), &ret);
   Invoke(obj, &retO, paramList);
}


//-------------------------------------------------------------------------------
template <typename T>
inline void
Reflex::Member::Invoke(T& ret,
                       const std::vector<void*>& paramList) const {
//-------------------------------------------------------------------------------
   Object retO(Type::ByTypeInfo(typeid(T)), &ret);
   Invoke(&retO, paramList);
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsAbstract() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsAbstract();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsArtificial() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsArtificial();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsAuto() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsAuto();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsConstructor() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsConstructor();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsConst() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsConst();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsConverter() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsConverter();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsCopyConstructor() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsCopyConstructor();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsDataMember() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsDataMember();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsDestructor() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsDestructor();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsExplicit() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsExplicit();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsExtern() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsExtern();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsFunctionMember() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsFunctionMember();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsInline() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsInline();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsMutable() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsMutable();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsOperator() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsOperator();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsPrivate() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsPrivate();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsProtected() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsProtected();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsPublic() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsPublic();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsPureVirtual() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return IsFunctionMember() && IsAbstract();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsRegister() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsRegister();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsStatic() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsStatic();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsTemplateInstance() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsTemplateInstance();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsTransient() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsTransient();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsVirtual() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsVirtual();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline bool
Reflex::Member::IsVolatile() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->IsVolatile();
   }
   return false;
}


//-------------------------------------------------------------------------------
inline Reflex::TYPE
Reflex::Member::MemberType() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->MemberType();
   }
   return UNRESOLVED;
}


//-------------------------------------------------------------------------------
inline std::string
Reflex::Member::MemberTypeAsString() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->MemberTypeAsString();
   }
   return "";
}


//-------------------------------------------------------------------------------
inline std::string
Reflex::Member::Name(unsigned int mod) const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Name(mod);
   }
   return "";
}


//-------------------------------------------------------------------------------
inline const char*
Reflex::Member::Name_c_str() const {
   //-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Name_c_str();
   }
   return "";
}


//-------------------------------------------------------------------------------
inline size_t
Reflex::Member::Offset() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Offset();
   }
   return 0;
}


inline void
Reflex::Member::InterpreterOffset(char* offset) {
   if (*this) {
      fMemberBase->InterpreterOffset(offset);
   }
}


inline char*&
Reflex::Member::InterpreterOffset() const {
   return fMemberBase->InterpreterOffset();
}


//-------------------------------------------------------------------------------
inline size_t
Reflex::Member::FunctionParameterSize(bool required) const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterSize(required);
   }
   return 0;
}


//-------------------------------------------------------------------------------
inline std::string
Reflex::Member::FunctionParameterDefaultAt(size_t nth) const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterDefaultAt(nth);
   }
   return "";
}


//-------------------------------------------------------------------------------
inline Reflex::StdString_Iterator
Reflex::Member::FunctionParameterDefault_Begin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterDefault_Begin();
   }
   return Dummy::StdStringCont().begin();
}


//-------------------------------------------------------------------------------
inline Reflex::StdString_Iterator
Reflex::Member::FunctionParameterDefault_End() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterDefault_End();
   }
   return Dummy::StdStringCont().end();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_StdString_Iterator
Reflex::Member::FunctionParameterDefault_RBegin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterDefault_RBegin();
   }
   return Dummy::StdStringCont().rbegin();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_StdString_Iterator
Reflex::Member::FunctionParameterDefault_REnd() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterDefault_REnd();
   }
   return Dummy::StdStringCont().rend();
}


//-------------------------------------------------------------------------------
inline std::string
Reflex::Member::FunctionParameterNameAt(size_t nth) const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterNameAt(nth);
   }
   return "";
}


//-------------------------------------------------------------------------------
inline Reflex::StdString_Iterator
Reflex::Member::FunctionParameterName_Begin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterName_Begin();
   }
   return Dummy::StdStringCont().begin();
}


//-------------------------------------------------------------------------------
inline Reflex::StdString_Iterator
Reflex::Member::FunctionParameterName_End() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterName_End();
   }
   return Dummy::StdStringCont().end();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_StdString_Iterator
Reflex::Member::FunctionParameterName_RBegin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterName_RBegin();
   }
   return Dummy::StdStringCont().rbegin();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_StdString_Iterator
Reflex::Member::FunctionParameterName_REnd() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->FunctionParameterName_REnd();
   }
   return Dummy::StdStringCont().rend();
}


//-------------------------------------------------------------------------------
inline Reflex::PropertyList
Reflex::Member::Properties() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Properties();
   }
   return Dummy::PropertyList();
}


//-------------------------------------------------------------------------------
inline void
Reflex::Member::SetScope(const Scope& sc) const {
//-------------------------------------------------------------------------------
   if (*this) {
      fMemberBase->SetScope(sc);
   }
}


//-------------------------------------------------------------------------------
inline void*
Reflex::Member::Stubcontext() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Stubcontext();
   }
   return 0;
}


//-------------------------------------------------------------------------------
inline Reflex::StubFunction
Reflex::Member::Stubfunction() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->Stubfunction();
   }
   return 0;
}


//-------------------------------------------------------------------------------
inline Reflex::Type
Reflex::Member::TemplateArgumentAt(size_t nth) const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgumentAt(nth);
   }
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
inline size_t
Reflex::Member::TemplateArgumentSize() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgumentSize();
   }
   return 0;
}


//-------------------------------------------------------------------------------
inline Reflex::Type_Iterator
Reflex::Member::TemplateArgument_Begin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgument_Begin();
   }
   return Dummy::TypeCont().begin();
}


//-------------------------------------------------------------------------------
inline Reflex::Type_Iterator
Reflex::Member::TemplateArgument_End() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgument_End();
   }
   return Dummy::TypeCont().end();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_Type_Iterator
Reflex::Member::TemplateArgument_RBegin() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgument_RBegin();
   }
   return Dummy::TypeCont().rbegin();
}


//-------------------------------------------------------------------------------
inline Reflex::Reverse_Type_Iterator
Reflex::Member::TemplateArgument_REnd() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateArgument_REnd();
   }
   return Dummy::TypeCont().rend();
}


//-------------------------------------------------------------------------------
inline Reflex::MemberTemplate
Reflex::Member::TemplateFamily() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TemplateFamily();
   }
   return Dummy::MemberTemplate();
}


//-------------------------------------------------------------------------------
inline Reflex::MemberBase*
Reflex::Member::ToMemberBase() const {
//-------------------------------------------------------------------------------
   return fMemberBase;
}


//-------------------------------------------------------------------------------
inline Reflex::Type
Reflex::Member::TypeOf() const {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->TypeOf();
   }
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
inline void
Reflex::Member::UpdateFunctionParameterNames(const char* parameters) {
//-------------------------------------------------------------------------------
   if (*this) {
      return fMemberBase->UpdateFunctionParameterNames(parameters);
   }
}


#ifdef REFLEX_CINT_MERGE
inline bool
operator &&(bool b,
            const Reflex::Member& rh) {
   return b && rh.operator bool();
}


inline bool
operator &&(int i,
            const Reflex::Member& rh) {
   return i && rh.operator bool();
}


inline bool
operator &&(short s,
            const Reflex::Member& rh) {
   return s && rh.operator bool();
}


inline bool
operator ||(short s,
            const Reflex::Member& rh) {
   return s || rh.operator bool();
}


inline bool
operator ||(bool b,
            const Reflex::Member& rh) {
   return b || rh.operator bool();
}


inline bool
operator ||(int i,
            const Reflex::Member& rh) {
   return i || rh.operator bool();
}


#endif


#endif // Reflex_Member
 Member.h:1
 Member.h:2
 Member.h:3
 Member.h:4
 Member.h:5
 Member.h:6
 Member.h:7
 Member.h:8
 Member.h:9
 Member.h:10
 Member.h:11
 Member.h:12
 Member.h:13
 Member.h:14
 Member.h:15
 Member.h:16
 Member.h:17
 Member.h:18
 Member.h:19
 Member.h:20
 Member.h:21
 Member.h:22
 Member.h:23
 Member.h:24
 Member.h:25
 Member.h:26
 Member.h:27
 Member.h:28
 Member.h:29
 Member.h:30
 Member.h:31
 Member.h:32
 Member.h:33
 Member.h:34
 Member.h:35
 Member.h:36
 Member.h:37
 Member.h:38
 Member.h:39
 Member.h:40
 Member.h:41
 Member.h:42
 Member.h:43
 Member.h:44
 Member.h:45
 Member.h:46
 Member.h:47
 Member.h:48
 Member.h:49
 Member.h:50
 Member.h:51
 Member.h:52
 Member.h:53
 Member.h:54
 Member.h:55
 Member.h:56
 Member.h:57
 Member.h:58
 Member.h:59
 Member.h:60
 Member.h:61
 Member.h:62
 Member.h:63
 Member.h:64
 Member.h:65
 Member.h:66
 Member.h:67
 Member.h:68
 Member.h:69
 Member.h:70
 Member.h:71
 Member.h:72
 Member.h:73
 Member.h:74
 Member.h:75
 Member.h:76
 Member.h:77
 Member.h:78
 Member.h:79
 Member.h:80
 Member.h:81
 Member.h:82
 Member.h:83
 Member.h:84
 Member.h:85
 Member.h:86
 Member.h:87
 Member.h:88
 Member.h:89
 Member.h:90
 Member.h:91
 Member.h:92
 Member.h:93
 Member.h:94
 Member.h:95
 Member.h:96
 Member.h:97
 Member.h:98
 Member.h:99
 Member.h:100
 Member.h:101
 Member.h:102
 Member.h:103
 Member.h:104
 Member.h:105
 Member.h:106
 Member.h:107
 Member.h:108
 Member.h:109
 Member.h:110
 Member.h:111
 Member.h:112
 Member.h:113
 Member.h:114
 Member.h:115
 Member.h:116
 Member.h:117
 Member.h:118
 Member.h:119
 Member.h:120
 Member.h:121
 Member.h:122
 Member.h:123
 Member.h:124
 Member.h:125
 Member.h:126
 Member.h:127
 Member.h:128
 Member.h:129
 Member.h:130
 Member.h:131
 Member.h:132
 Member.h:133
 Member.h:134
 Member.h:135
 Member.h:136
 Member.h:137
 Member.h:138
 Member.h:139
 Member.h:140
 Member.h:141
 Member.h:142
 Member.h:143
 Member.h:144
 Member.h:145
 Member.h:146
 Member.h:147
 Member.h:148
 Member.h:149
 Member.h:150
 Member.h:151
 Member.h:152
 Member.h:153
 Member.h:154
 Member.h:155
 Member.h:156
 Member.h:157
 Member.h:158
 Member.h:159
 Member.h:160
 Member.h:161
 Member.h:162
 Member.h:163
 Member.h:164
 Member.h:165
 Member.h:166
 Member.h:167
 Member.h:168
 Member.h:169
 Member.h:170
 Member.h:171
 Member.h:172
 Member.h:173
 Member.h:174
 Member.h:175
 Member.h:176
 Member.h:177
 Member.h:178
 Member.h:179
 Member.h:180
 Member.h:181
 Member.h:182
 Member.h:183
 Member.h:184
 Member.h:185
 Member.h:186
 Member.h:187
 Member.h:188
 Member.h:189
 Member.h:190
 Member.h:191
 Member.h:192
 Member.h:193
 Member.h:194
 Member.h:195
 Member.h:196
 Member.h:197
 Member.h:198
 Member.h:199
 Member.h:200
 Member.h:201
 Member.h:202
 Member.h:203
 Member.h:204
 Member.h:205
 Member.h:206
 Member.h:207
 Member.h:208
 Member.h:209
 Member.h:210
 Member.h:211
 Member.h:212
 Member.h:213
 Member.h:214
 Member.h:215
 Member.h:216
 Member.h:217
 Member.h:218
 Member.h:219
 Member.h:220
 Member.h:221
 Member.h:222
 Member.h:223
 Member.h:224
 Member.h:225
 Member.h:226
 Member.h:227
 Member.h:228
 Member.h:229
 Member.h:230
 Member.h:231
 Member.h:232
 Member.h:233
 Member.h:234
 Member.h:235
 Member.h:236
 Member.h:237
 Member.h:238
 Member.h:239
 Member.h:240
 Member.h:241
 Member.h:242
 Member.h:243
 Member.h:244
 Member.h:245
 Member.h:246
 Member.h:247
 Member.h:248
 Member.h:249
 Member.h:250
 Member.h:251
 Member.h:252
 Member.h:253
 Member.h:254
 Member.h:255
 Member.h:256
 Member.h:257
 Member.h:258
 Member.h:259
 Member.h:260
 Member.h:261
 Member.h:262
 Member.h:263
 Member.h:264
 Member.h:265
 Member.h:266
 Member.h:267
 Member.h:268
 Member.h:269
 Member.h:270
 Member.h:271
 Member.h:272
 Member.h:273
 Member.h:274
 Member.h:275
 Member.h:276
 Member.h:277
 Member.h:278
 Member.h:279
 Member.h:280
 Member.h:281
 Member.h:282
 Member.h:283
 Member.h:284
 Member.h:285
 Member.h:286
 Member.h:287
 Member.h:288
 Member.h:289
 Member.h:290
 Member.h:291
 Member.h:292
 Member.h:293
 Member.h:294
 Member.h:295
 Member.h:296
 Member.h:297
 Member.h:298
 Member.h:299
 Member.h:300
 Member.h:301
 Member.h:302
 Member.h:303
 Member.h:304
 Member.h:305
 Member.h:306
 Member.h:307
 Member.h:308
 Member.h:309
 Member.h:310
 Member.h:311
 Member.h:312
 Member.h:313
 Member.h:314
 Member.h:315
 Member.h:316
 Member.h:317
 Member.h:318
 Member.h:319
 Member.h:320
 Member.h:321
 Member.h:322
 Member.h:323
 Member.h:324
 Member.h:325
 Member.h:326
 Member.h:327
 Member.h:328
 Member.h:329
 Member.h:330
 Member.h:331
 Member.h:332
 Member.h:333
 Member.h:334
 Member.h:335
 Member.h:336
 Member.h:337
 Member.h:338
 Member.h:339
 Member.h:340
 Member.h:341
 Member.h:342
 Member.h:343
 Member.h:344
 Member.h:345
 Member.h:346
 Member.h:347
 Member.h:348
 Member.h:349
 Member.h:350
 Member.h:351
 Member.h:352
 Member.h:353
 Member.h:354
 Member.h:355
 Member.h:356
 Member.h:357
 Member.h:358
 Member.h:359
 Member.h:360
 Member.h:361
 Member.h:362
 Member.h:363
 Member.h:364
 Member.h:365
 Member.h:366
 Member.h:367
 Member.h:368
 Member.h:369
 Member.h:370
 Member.h:371
 Member.h:372
 Member.h:373
 Member.h:374
 Member.h:375
 Member.h:376
 Member.h:377
 Member.h:378
 Member.h:379
 Member.h:380
 Member.h:381
 Member.h:382
 Member.h:383
 Member.h:384
 Member.h:385
 Member.h:386
 Member.h:387
 Member.h:388
 Member.h:389
 Member.h:390
 Member.h:391
 Member.h:392
 Member.h:393
 Member.h:394
 Member.h:395
 Member.h:396
 Member.h:397
 Member.h:398
 Member.h:399
 Member.h:400
 Member.h:401
 Member.h:402
 Member.h:403
 Member.h:404
 Member.h:405
 Member.h:406
 Member.h:407
 Member.h:408
 Member.h:409
 Member.h:410
 Member.h:411
 Member.h:412
 Member.h:413
 Member.h:414
 Member.h:415
 Member.h:416
 Member.h:417
 Member.h:418
 Member.h:419
 Member.h:420
 Member.h:421
 Member.h:422
 Member.h:423
 Member.h:424
 Member.h:425
 Member.h:426
 Member.h:427
 Member.h:428
 Member.h:429
 Member.h:430
 Member.h:431
 Member.h:432
 Member.h:433
 Member.h:434
 Member.h:435
 Member.h:436
 Member.h:437
 Member.h:438
 Member.h:439
 Member.h:440
 Member.h:441
 Member.h:442
 Member.h:443
 Member.h:444
 Member.h:445
 Member.h:446
 Member.h:447
 Member.h:448
 Member.h:449
 Member.h:450
 Member.h:451
 Member.h:452
 Member.h:453
 Member.h:454
 Member.h:455
 Member.h:456
 Member.h:457
 Member.h:458
 Member.h:459
 Member.h:460
 Member.h:461
 Member.h:462
 Member.h:463
 Member.h:464
 Member.h:465
 Member.h:466
 Member.h:467
 Member.h:468
 Member.h:469
 Member.h:470
 Member.h:471
 Member.h:472
 Member.h:473
 Member.h:474
 Member.h:475
 Member.h:476
 Member.h:477
 Member.h:478
 Member.h:479
 Member.h:480
 Member.h:481
 Member.h:482
 Member.h:483
 Member.h:484
 Member.h:485
 Member.h:486
 Member.h:487
 Member.h:488
 Member.h:489
 Member.h:490
 Member.h:491
 Member.h:492
 Member.h:493
 Member.h:494
 Member.h:495
 Member.h:496
 Member.h:497
 Member.h:498
 Member.h:499
 Member.h:500
 Member.h:501
 Member.h:502
 Member.h:503
 Member.h:504
 Member.h:505
 Member.h:506
 Member.h:507
 Member.h:508
 Member.h:509
 Member.h:510
 Member.h:511
 Member.h:512
 Member.h:513
 Member.h:514
 Member.h:515
 Member.h:516
 Member.h:517
 Member.h:518
 Member.h:519
 Member.h:520
 Member.h:521
 Member.h:522
 Member.h:523
 Member.h:524
 Member.h:525
 Member.h:526
 Member.h:527
 Member.h:528
 Member.h:529
 Member.h:530
 Member.h:531
 Member.h:532
 Member.h:533
 Member.h:534
 Member.h:535
 Member.h:536
 Member.h:537
 Member.h:538
 Member.h:539
 Member.h:540
 Member.h:541
 Member.h:542
 Member.h:543
 Member.h:544
 Member.h:545
 Member.h:546
 Member.h:547
 Member.h:548
 Member.h:549
 Member.h:550
 Member.h:551
 Member.h:552
 Member.h:553
 Member.h:554
 Member.h:555
 Member.h:556
 Member.h:557
 Member.h:558
 Member.h:559
 Member.h:560
 Member.h:561
 Member.h:562
 Member.h:563
 Member.h:564
 Member.h:565
 Member.h:566
 Member.h:567
 Member.h:568
 Member.h:569
 Member.h:570
 Member.h:571
 Member.h:572
 Member.h:573
 Member.h:574
 Member.h:575
 Member.h:576
 Member.h:577
 Member.h:578
 Member.h:579
 Member.h:580
 Member.h:581
 Member.h:582
 Member.h:583
 Member.h:584
 Member.h:585
 Member.h:586
 Member.h:587
 Member.h:588
 Member.h:589
 Member.h:590
 Member.h:591
 Member.h:592
 Member.h:593
 Member.h:594
 Member.h:595
 Member.h:596
 Member.h:597
 Member.h:598
 Member.h:599
 Member.h:600
 Member.h:601
 Member.h:602
 Member.h:603
 Member.h:604
 Member.h:605
 Member.h:606
 Member.h:607
 Member.h:608
 Member.h:609
 Member.h:610
 Member.h:611
 Member.h:612
 Member.h:613
 Member.h:614
 Member.h:615
 Member.h:616
 Member.h:617
 Member.h:618
 Member.h:619
 Member.h:620
 Member.h:621
 Member.h:622
 Member.h:623
 Member.h:624
 Member.h:625
 Member.h:626
 Member.h:627
 Member.h:628
 Member.h:629
 Member.h:630
 Member.h:631
 Member.h:632
 Member.h:633
 Member.h:634
 Member.h:635
 Member.h:636
 Member.h:637
 Member.h:638
 Member.h:639
 Member.h:640
 Member.h:641
 Member.h:642
 Member.h:643
 Member.h:644
 Member.h:645
 Member.h:646
 Member.h:647
 Member.h:648
 Member.h:649
 Member.h:650
 Member.h:651
 Member.h:652
 Member.h:653
 Member.h:654
 Member.h:655
 Member.h:656
 Member.h:657
 Member.h:658
 Member.h:659
 Member.h:660
 Member.h:661
 Member.h:662
 Member.h:663
 Member.h:664
 Member.h:665
 Member.h:666
 Member.h:667
 Member.h:668
 Member.h:669
 Member.h:670
 Member.h:671
 Member.h:672
 Member.h:673
 Member.h:674
 Member.h:675
 Member.h:676
 Member.h:677
 Member.h:678
 Member.h:679
 Member.h:680
 Member.h:681
 Member.h:682
 Member.h:683
 Member.h:684
 Member.h:685
 Member.h:686
 Member.h:687
 Member.h:688
 Member.h:689
 Member.h:690
 Member.h:691
 Member.h:692
 Member.h:693
 Member.h:694
 Member.h:695
 Member.h:696
 Member.h:697
 Member.h:698
 Member.h:699
 Member.h:700
 Member.h:701
 Member.h:702
 Member.h:703
 Member.h:704
 Member.h:705
 Member.h:706
 Member.h:707
 Member.h:708
 Member.h:709
 Member.h:710
 Member.h:711
 Member.h:712
 Member.h:713
 Member.h:714
 Member.h:715
 Member.h:716
 Member.h:717
 Member.h:718
 Member.h:719
 Member.h:720
 Member.h:721
 Member.h:722
 Member.h:723
 Member.h:724
 Member.h:725
 Member.h:726
 Member.h:727
 Member.h:728
 Member.h:729
 Member.h:730
 Member.h:731
 Member.h:732
 Member.h:733
 Member.h:734
 Member.h:735
 Member.h:736
 Member.h:737
 Member.h:738
 Member.h:739
 Member.h:740
 Member.h:741
 Member.h:742
 Member.h:743
 Member.h:744
 Member.h:745
 Member.h:746
 Member.h:747
 Member.h:748
 Member.h:749
 Member.h:750
 Member.h:751
 Member.h:752
 Member.h:753
 Member.h:754
 Member.h:755
 Member.h:756
 Member.h:757
 Member.h:758
 Member.h:759
 Member.h:760
 Member.h:761
 Member.h:762
 Member.h:763
 Member.h:764
 Member.h:765
 Member.h:766
 Member.h:767
 Member.h:768
 Member.h:769
 Member.h:770
 Member.h:771
 Member.h:772
 Member.h:773
 Member.h:774
 Member.h:775
 Member.h:776
 Member.h:777
 Member.h:778
 Member.h:779
 Member.h:780
 Member.h:781
 Member.h:782
 Member.h:783
 Member.h:784
 Member.h:785
 Member.h:786
 Member.h:787
 Member.h:788
 Member.h:789
 Member.h:790
 Member.h:791
 Member.h:792
 Member.h:793
 Member.h:794
 Member.h:795
 Member.h:796
 Member.h:797
 Member.h:798
 Member.h:799
 Member.h:800
 Member.h:801
 Member.h:802
 Member.h:803
 Member.h:804
 Member.h:805
 Member.h:806
 Member.h:807
 Member.h:808
 Member.h:809
 Member.h:810
 Member.h:811
 Member.h:812
 Member.h:813
 Member.h:814
 Member.h:815
 Member.h:816
 Member.h:817
 Member.h:818
 Member.h:819
 Member.h:820
 Member.h:821
 Member.h:822
 Member.h:823
 Member.h:824
 Member.h:825
 Member.h:826
 Member.h:827
 Member.h:828
 Member.h:829
 Member.h:830
 Member.h:831
 Member.h:832
 Member.h:833
 Member.h:834
 Member.h:835
 Member.h:836
 Member.h:837
 Member.h:838
 Member.h:839
 Member.h:840
 Member.h:841
 Member.h:842
 Member.h:843
 Member.h:844
 Member.h:845
 Member.h:846
 Member.h:847
 Member.h:848
 Member.h:849
 Member.h:850
 Member.h:851
 Member.h:852
 Member.h:853
 Member.h:854
 Member.h:855
 Member.h:856
 Member.h:857
 Member.h:858
 Member.h:859
 Member.h:860
 Member.h:861
 Member.h:862
 Member.h:863
 Member.h:864
 Member.h:865
 Member.h:866
 Member.h:867
 Member.h:868
 Member.h:869
 Member.h:870
 Member.h:871
 Member.h:872
 Member.h:873
 Member.h:874
 Member.h:875
 Member.h:876
 Member.h:877
 Member.h:878
 Member.h:879
 Member.h:880
 Member.h:881
 Member.h:882
 Member.h:883
 Member.h:884
 Member.h:885
 Member.h:886
 Member.h:887
 Member.h:888
 Member.h:889
 Member.h:890
 Member.h:891
 Member.h:892
 Member.h:893
 Member.h:894
 Member.h:895
 Member.h:896
 Member.h:897
 Member.h:898
 Member.h:899
 Member.h:900
 Member.h:901
 Member.h:902
 Member.h:903
 Member.h:904
 Member.h:905
 Member.h:906
 Member.h:907
 Member.h:908
 Member.h:909
 Member.h:910
 Member.h:911
 Member.h:912
 Member.h:913
 Member.h:914
 Member.h:915
 Member.h:916
 Member.h:917
 Member.h:918
 Member.h:919
 Member.h:920
 Member.h:921
 Member.h:922
 Member.h:923
 Member.h:924
 Member.h:925
 Member.h:926
 Member.h:927
 Member.h:928
 Member.h:929
 Member.h:930
 Member.h:931
 Member.h:932
 Member.h:933
 Member.h:934
 Member.h:935
 Member.h:936
 Member.h:937
 Member.h:938
 Member.h:939
 Member.h:940
 Member.h:941
 Member.h:942
 Member.h:943
 Member.h:944
 Member.h:945
 Member.h:946
 Member.h:947
 Member.h:948
 Member.h:949
 Member.h:950
 Member.h:951
 Member.h:952
 Member.h:953
 Member.h:954
 Member.h:955
 Member.h:956
 Member.h:957
 Member.h:958
 Member.h:959
 Member.h:960
 Member.h:961
 Member.h:962
 Member.h:963
 Member.h:964
 Member.h:965
 Member.h:966
 Member.h:967
 Member.h:968
 Member.h:969
 Member.h:970
 Member.h:971
 Member.h:972
 Member.h:973
 Member.h:974
 Member.h:975
 Member.h:976
 Member.h:977
 Member.h:978
 Member.h:979
 Member.h:980
 Member.h:981
 Member.h:982
 Member.h:983
 Member.h:984
 Member.h:985
 Member.h:986
 Member.h:987
 Member.h:988
 Member.h:989
 Member.h:990
 Member.h:991
 Member.h:992
 Member.h:993
 Member.h:994
 Member.h:995
 Member.h:996
 Member.h:997
 Member.h:998
 Member.h:999
 Member.h:1000
 Member.h:1001
 Member.h:1002
 Member.h:1003
 Member.h:1004
 Member.h:1005
 Member.h:1006
 Member.h:1007
 Member.h:1008
 Member.h:1009
 Member.h:1010
 Member.h:1011
 Member.h:1012
 Member.h:1013
 Member.h:1014
 Member.h:1015
 Member.h:1016
 Member.h:1017
 Member.h:1018
 Member.h:1019
 Member.h:1020
 Member.h:1021
 Member.h:1022
 Member.h:1023
 Member.h:1024
 Member.h:1025
 Member.h:1026
 Member.h:1027
 Member.h:1028
 Member.h:1029
 Member.h:1030
 Member.h:1031
 Member.h:1032
 Member.h:1033
 Member.h:1034
 Member.h:1035
 Member.h:1036
 Member.h:1037
 Member.h:1038
 Member.h:1039
 Member.h:1040
 Member.h:1041
 Member.h:1042
 Member.h:1043
 Member.h:1044
 Member.h:1045
 Member.h:1046
 Member.h:1047
 Member.h:1048
 Member.h:1049
 Member.h:1050
 Member.h:1051
 Member.h:1052
 Member.h:1053
 Member.h:1054
 Member.h:1055
 Member.h:1056
 Member.h:1057
 Member.h:1058
 Member.h:1059
 Member.h:1060
 Member.h:1061
 Member.h:1062
 Member.h:1063
 Member.h:1064
 Member.h:1065
 Member.h:1066
 Member.h:1067
 Member.h:1068
 Member.h:1069
 Member.h:1070
 Member.h:1071
 Member.h:1072
 Member.h:1073
 Member.h:1074
 Member.h:1075
 Member.h:1076
 Member.h:1077
 Member.h:1078
 Member.h:1079
 Member.h:1080
 Member.h:1081
 Member.h:1082
 Member.h:1083
 Member.h:1084
 Member.h:1085
 Member.h:1086
 Member.h:1087
 Member.h:1088
 Member.h:1089
 Member.h:1090
 Member.h:1091
 Member.h:1092
 Member.h:1093
 Member.h:1094
 Member.h:1095
 Member.h:1096
 Member.h:1097
 Member.h:1098
 Member.h:1099
 Member.h:1100
 Member.h:1101
 Member.h:1102
 Member.h:1103
 Member.h:1104
 Member.h:1105
 Member.h:1106
 Member.h:1107
 Member.h:1108
 Member.h:1109
 Member.h:1110
 Member.h:1111
 Member.h:1112
 Member.h:1113
 Member.h:1114
 Member.h:1115
 Member.h:1116
 Member.h:1117
 Member.h:1118
 Member.h:1119
 Member.h:1120
 Member.h:1121
 Member.h:1122
 Member.h:1123
 Member.h:1124
 Member.h:1125
 Member.h:1126
 Member.h:1127
 Member.h:1128
 Member.h:1129
 Member.h:1130
 Member.h:1131
 Member.h:1132
 Member.h:1133
 Member.h:1134
 Member.h:1135
 Member.h:1136
 Member.h:1137
 Member.h:1138
 Member.h:1139
 Member.h:1140
 Member.h:1141
 Member.h:1142
 Member.h:1143
 Member.h:1144
 Member.h:1145
 Member.h:1146
 Member.h:1147
 Member.h:1148
 Member.h:1149
 Member.h:1150
 Member.h:1151
 Member.h:1152
 Member.h:1153
 Member.h:1154
 Member.h:1155
 Member.h:1156
 Member.h:1157
 Member.h:1158
 Member.h:1159
 Member.h:1160
 Member.h:1161
 Member.h:1162
 Member.h:1163
 Member.h:1164
 Member.h:1165
 Member.h:1166
 Member.h:1167
 Member.h:1168
 Member.h:1169
 Member.h:1170
 Member.h:1171
 Member.h:1172
 Member.h:1173
 Member.h:1174
 Member.h:1175
 Member.h:1176
 Member.h:1177
 Member.h:1178
 Member.h:1179
 Member.h:1180
 Member.h:1181
 Member.h:1182
 Member.h:1183
 Member.h:1184
 Member.h:1185
 Member.h:1186
 Member.h:1187
 Member.h:1188
 Member.h:1189
 Member.h:1190
 Member.h:1191
 Member.h:1192
 Member.h:1193
 Member.h:1194
 Member.h:1195
 Member.h:1196
 Member.h:1197
 Member.h:1198
 Member.h:1199
 Member.h:1200
 Member.h:1201
 Member.h:1202
 Member.h:1203
 Member.h:1204
 Member.h:1205
 Member.h:1206
 Member.h:1207
 Member.h:1208
 Member.h:1209
 Member.h:1210
 Member.h:1211
 Member.h:1212
 Member.h:1213
 Member.h:1214
 Member.h:1215
 Member.h:1216
 Member.h:1217
 Member.h:1218
 Member.h:1219
 Member.h:1220
 Member.h:1221
 Member.h:1222
 Member.h:1223
 Member.h:1224
 Member.h:1225
 Member.h:1226
 Member.h:1227
 Member.h:1228
 Member.h:1229
 Member.h:1230
 Member.h:1231
 Member.h:1232
 Member.h:1233
 Member.h:1234
 Member.h:1235
 Member.h:1236
 Member.h:1237
 Member.h:1238
 Member.h:1239
 Member.h:1240
 Member.h:1241
 Member.h:1242
 Member.h:1243
 Member.h:1244
 Member.h:1245
 Member.h:1246
 Member.h:1247
 Member.h:1248
 Member.h:1249
 Member.h:1250
 Member.h:1251
 Member.h:1252
 Member.h:1253
 Member.h:1254
 Member.h:1255
 Member.h:1256
 Member.h:1257
 Member.h:1258
 Member.h:1259
 Member.h:1260
 Member.h:1261
 Member.h:1262
 Member.h:1263
 Member.h:1264
 Member.h:1265
 Member.h:1266
 Member.h:1267
 Member.h:1268
 Member.h:1269
 Member.h:1270
 Member.h:1271
 Member.h:1272
 Member.h:1273
 Member.h:1274
 Member.h:1275
 Member.h:1276
 Member.h:1277
 Member.h:1278
 Member.h:1279
 Member.h:1280
 Member.h:1281
 Member.h:1282
 Member.h:1283
 Member.h:1284
 Member.h:1285
 Member.h:1286
 Member.h:1287
 Member.h:1288
 Member.h:1289
 Member.h:1290
 Member.h:1291
 Member.h:1292
 Member.h:1293
 Member.h:1294
 Member.h:1295
 Member.h:1296
 Member.h:1297
 Member.h:1298
 Member.h:1299
 Member.h:1300
 Member.h:1301
 Member.h:1302
 Member.h:1303
 Member.h:1304
 Member.h:1305
 Member.h:1306
 Member.h:1307
 Member.h:1308
 Member.h:1309
 Member.h:1310
 Member.h:1311
 Member.h:1312
 Member.h:1313
 Member.h:1314
 Member.h:1315
 Member.h:1316
 Member.h:1317
 Member.h:1318
 Member.h:1319
 Member.h:1320
 Member.h:1321
 Member.h:1322