MemberBase.h

Go to the documentation of this file.
00001 // @(#)root/reflex:$Id: MemberBase.h 36289 2010-10-11 09:54:28Z axel $
00002 // Author: Stefan Roiser 2004
00003 
00004 // Copyright CERN, CH-1211 Geneva 23, 2004-2010, All rights reserved.
00005 //
00006 // Permission to use, copy, modify, and distribute this software for any
00007 // purpose is hereby granted without fee, provided that this copyright and
00008 // permissions notice appear in all copies and derivatives.
00009 //
00010 // This software is provided "as is" without express or implied warranty.
00011 
00012 #ifndef Reflex_MemberBase
00013 #define Reflex_MemberBase
00014 
00015 // Include files
00016 #include "Reflex/Kernel.h"
00017 #include "Reflex/PropertyList.h"
00018 #include "Reflex/Type.h"
00019 #include "Reflex/Scope.h"
00020 #include "Reflex/internal/LiteralString.h"
00021 
00022 namespace Reflex {
00023 // forward declarations
00024 class Object;
00025 class DictionaryGenerator;
00026 
00027 /**
00028  * @class MemberBase MemberBase.h Reflex/internal/MemberBase.h
00029  * @author Stefan Roiser
00030  * @date 24/11/2003
00031  * @ingroup Ref
00032  */
00033 class RFLX_API MemberBase {
00034 public:
00035    /** default constructor */
00036    MemberBase(const char* name,
00037               const Type &type,
00038               TYPE memberType,
00039               unsigned int modifiers);
00040 
00041 
00042    /** destructor */
00043    virtual ~MemberBase();
00044 
00045 
00046    /**
00047     * operator member will return the member object of this MemberBase
00048     */
00049    operator Member() const;
00050 
00051 
00052    /**
00053     * DeclaringScope will return the scope which the member lives in
00054     * @return the declaring scope of the member
00055     */
00056    Scope DeclaringScope() const;
00057 
00058 
00059    /**
00060     * DeclaringType will return the type which the member lives in
00061     * @return the declaring type of the member
00062     */
00063    Type DeclaringType() const;
00064 
00065 
00066    /**
00067     * GenerateDict will produce the dictionary information of this type
00068     * @param generator a reference to the dictionary generator instance
00069     */
00070    virtual void GenerateDict(DictionaryGenerator& generator) const;
00071 
00072 
00073    /** Get the member value */
00074    virtual Object Get(const Object& obj) const;
00075 
00076 
00077    /** Invoke the member function */
00078 
00079    /*virtual Object Invoke( const Object & obj,
00080       const std::vector < Object > & paramList ) const;*/
00081    virtual void Invoke(const Object& obj,
00082                        Object* ret,
00083                        const std::vector<void*>& paramList =
00084                           std::vector<void*>()) const;
00085 
00086 
00087    /** Invoke the function (for static functions) */
00088    //virtual Object Invoke( const std::vector < Object > & paramList ) const;
00089    virtual void Invoke(Object* ret,
00090                        const std::vector<void*>& paramList =
00091                           std::vector<void*>()) const;
00092 
00093 
00094    /** check whether abstract is set for the data member */
00095    bool IsAbstract() const;
00096 
00097 
00098    /** check whether artificial is set for the data member */
00099    bool IsArtificial() const;
00100 
00101    /** check whether auto is set for the data member */
00102    bool IsAuto() const;
00103 
00104 
00105    /** check whether the function member is a constructor */
00106    bool IsConstructor() const;
00107 
00108 
00109    /** check whether a member is const qualified */
00110    bool IsConst() const;
00111 
00112 
00113    /** check whether the function member is a user defined conversion function */
00114    bool IsConverter() const;
00115 
00116 
00117    /** check whether the function member is a copy constructor */
00118    bool IsCopyConstructor() const;
00119 
00120 
00121    /** return true if this is a data member */
00122    bool IsDataMember() const;
00123 
00124 
00125    /** check whether the function member is a destructor */
00126    bool IsDestructor() const;
00127 
00128 
00129    /** check whether explicit is set for the function member */
00130    bool IsExplicit() const;
00131 
00132 
00133    /** check whether extern is set for the data member */
00134    bool IsExtern() const;
00135 
00136 
00137    /** return true if this is a function member */
00138    bool IsFunctionMember() const;
00139 
00140 
00141    /** check whether inline is set for the function member */
00142    bool IsInline() const;
00143 
00144 
00145    /** check whether mutable is set for the data member */
00146    bool IsMutable() const;
00147 
00148 
00149    /** check whether the function member is an operator */
00150    bool IsOperator() const;
00151 
00152 
00153    /** check whether the function member is private */
00154    bool IsPrivate() const;
00155 
00156 
00157    /** check whether the function member is protected */
00158    bool IsProtected() const;
00159 
00160 
00161    /** check whether the function member is public */
00162    bool IsPublic() const;
00163 
00164 
00165    /** check whether register is set for the data member */
00166    bool IsRegister() const;
00167 
00168 
00169    /** check whether static is set for the data member */
00170    bool IsStatic() const;
00171 
00172 
00173    /**
00174     * IsTemplateInstance returns true if the type represents a
00175     * ClassTemplateInstance
00176     * @return true if type represents a InstantiatedTemplateClass
00177     */
00178    bool IsTemplateInstance() const;
00179 
00180 
00181    /** check whether transient is set for the data member */
00182    bool IsTransient() const;
00183 
00184 
00185    /** check whether virtual is set for the function member */
00186    bool IsVirtual() const;
00187 
00188 
00189    /** check whether a member is volatile qualified */
00190    bool IsVolatile() const;
00191 
00192 
00193    /** return the type of the member (function or data member) */
00194    TYPE MemberType() const;
00195 
00196 
00197    /** returns the string representation of the member species */
00198    std::string MemberTypeAsString() const;
00199 
00200 
00201    /** return the name of the member */
00202    virtual std::string Name(unsigned int mod = 0) const;
00203 
00204    /**
00205     * Name_c_str returns a char* pointer to the unqualified Name
00206     * @ return c string to unqualified Name
00207     */
00208    const char* Name_c_str() const;
00209 
00210 
00211    /** return the offset of the member */
00212    virtual size_t Offset() const;
00213    virtual void InterpreterOffset(char*);
00214    virtual char*& InterpreterOffset() const;
00215 
00216 
00217    /** number of parameters */
00218    virtual size_t FunctionParameterSize(bool required = false) const;
00219 
00220 
00221    /** FunctionParameterDefaultAt returns the nth default value if declared*/
00222    virtual std::string FunctionParameterDefaultAt(size_t nth) const;
00223 
00224 
00225    virtual StdString_Iterator FunctionParameterDefault_Begin() const;
00226    virtual StdString_Iterator FunctionParameterDefault_End() const;
00227    virtual Reverse_StdString_Iterator FunctionParameterDefault_RBegin() const;
00228    virtual Reverse_StdString_Iterator FunctionParameterDefault_REnd() const;
00229 
00230 
00231    /** FunctionParameterNameAt returns the nth name if declared*/
00232    virtual std::string FunctionParameterNameAt(size_t nth) const;
00233 
00234 
00235    virtual StdString_Iterator FunctionParameterName_Begin() const;
00236    virtual StdString_Iterator FunctionParameterName_End() const;
00237    virtual Reverse_StdString_Iterator FunctionParameterName_RBegin() const;
00238    virtual Reverse_StdString_Iterator FunctionParameterName_REnd() const;
00239 
00240 
00241    /**
00242     * Properties will return a pointer to the property list attached
00243     * to this item
00244     * @return pointer to property list
00245     */
00246    PropertyList Properties() const;
00247 
00248 
00249    /** Set the member value */
00250 
00251    /*virtual void Set( const Object & instance,
00252       const Object & value ) const;*/
00253    virtual void Set(const Object& instance,
00254                     const void* value) const;
00255 
00256 
00257    /** Set the type of the member */
00258    void SetScope(const Scope& scope) const;
00259 
00260 
00261    /** return the context of the member */
00262    virtual void* Stubcontext() const;
00263 
00264 
00265    /** return the pointer to the stub function */
00266    virtual StubFunction Stubfunction() const;
00267 
00268 
00269    /**
00270     * TemplateArgumentAt will return a pointer to the nth template argument
00271     * @param  nth nth template argument
00272     * @return pointer to nth template argument
00273     */
00274    virtual Type TemplateArgumentAt(size_t nth) const;
00275 
00276 
00277    /**
00278     * TemplateArgumentSize will return the number of template arguments
00279     * @return number of template arguments
00280     */
00281    virtual size_t TemplateArgumentSize() const;
00282 
00283 
00284    virtual Type_Iterator TemplateArgument_Begin() const;
00285    virtual Type_Iterator TemplateArgument_End() const;
00286    virtual Reverse_Type_Iterator TemplateArgument_RBegin() const;
00287    virtual Reverse_Type_Iterator TemplateArgument_REnd() const;
00288 
00289 
00290    /**
00291     * TemplateFamily returns the corresponding MemberTemplate if any
00292     * @return corresponding MemberTemplate
00293     */
00294    virtual MemberTemplate TemplateFamily() const;
00295 
00296 
00297    /** return pointer to member type */
00298    Type TypeOf() const;
00299 
00300 
00301    /**
00302     * UpdateFunctionParameterNames updates the names of parameters
00303     * @param  parameters new list of ';' separated parameter names, must not specify default values
00304     */
00305    virtual void UpdateFunctionParameterNames(const char* parameters);
00306 
00307 protected:
00308    /**
00309     * CalculateBaseObject will calculate the inheritance between an object
00310     * and the local type if necessary
00311     * @param obj the object from which the calculation should start
00312     * @return memory address of new local object relative to obj
00313     */
00314    void* CalculateBaseObject(const Object& obj) const;
00315 
00316 protected:
00317    /**
00318     * characteristics of the Member
00319     * @label Member
00320     * @supplierCardinality 1
00321     * @link aggregation
00322     * @clientCardinality 1
00323     */
00324    Type fType;
00325 
00326 
00327    /** all modifiers of the member */
00328    unsigned int fModifiers;
00329 
00330 private:
00331    /** name of member */
00332    LiteralString fName;
00333 
00334 
00335    /**
00336     * scope of the member
00337     * @label member scope
00338     * @link aggregation
00339     * @supplierCardinality 1
00340     * @clientCardinality 1
00341     */
00342    mutable
00343    Scope fScope;
00344 
00345 
00346    /**
00347     * the kind of member ( data/function-member)
00348     * @label member type
00349     * @link aggregation
00350     * @clientCardinality 1
00351     * @supplierCardinality 1
00352     */
00353    TYPE fMemberType;
00354 
00355 
00356    /**
00357     * property list
00358     * @label propertylist
00359     * @link aggregationByValue
00360     * @clientCardinality 1
00361     * @supplierCardinality 0..1
00362     */
00363    OwnedPropertyList fPropertyList;
00364 
00365 
00366    /**
00367     * pointer back to the member object
00368     * @label this member
00369     * @link aggregation
00370     * @supplierCardinality 1
00371     * @clientCardinality 1
00372     */
00373    Member* fThisMember;
00374 
00375 };    // class Member
00376 
00377 } //namespace Reflex
00378 
00379 #ifndef Reflex_Object
00380 #include "Reflex/Object.h"
00381 #endif
00382 #ifndef Reflex_MemberTemplate
00383 #include "Reflex/MemberTemplate.h"
00384 #endif
00385 
00386 
00387 //-------------------------------------------------------------------------------
00388 inline Reflex::Object
00389 Reflex::MemberBase::Get(const Object& /* obj */) const {
00390 //-------------------------------------------------------------------------------
00391    return Object();
00392 }
00393 
00394 
00395 //-------------------------------------------------------------------------------
00396 //inline Reflex::Object
00397 //Reflex::MemberBase::Invoke( const Object & /* obj */ ,
00398 //                                  const std::vector < Object > & /* paramList */ ) const {
00399 //-------------------------------------------------------------------------------
00400 //  return Object();
00401 //}
00402 
00403 
00404 //-------------------------------------------------------------------------------
00405 inline void
00406 Reflex::MemberBase::Invoke(const Object& /* obj */,
00407                            Object* /*ret*/,
00408                            const std::vector<void*>& /* paramList */) const {
00409 //-------------------------------------------------------------------------------
00410 }
00411 
00412 
00413 //-------------------------------------------------------------------------------
00414 //inline Reflex::Object
00415 //Reflex::MemberBase::Invoke( const std::vector < Object > & /* paramList */ ) const {
00416 //-------------------------------------------------------------------------------
00417 //  return Object();
00418 //}
00419 
00420 
00421 //-------------------------------------------------------------------------------
00422 inline void
00423 Reflex::MemberBase::Invoke(Object* /*ret*/,
00424                            const std::vector<void*>& /* paramList */) const {
00425 //-------------------------------------------------------------------------------
00426 }
00427 
00428 
00429 //-------------------------------------------------------------------------------
00430 inline bool
00431 Reflex::MemberBase::IsAbstract() const {
00432 //-------------------------------------------------------------------------------
00433    return 0 != (fModifiers & ABSTRACT);
00434 }
00435 
00436 
00437 //-------------------------------------------------------------------------------
00438 inline bool
00439 Reflex::MemberBase::IsArtificial() const {
00440 //-------------------------------------------------------------------------------
00441    return 0 != (fModifiers & ARTIFICIAL);
00442 }
00443 
00444 
00445 //-------------------------------------------------------------------------------
00446 inline bool
00447 Reflex::MemberBase::IsAuto() const {
00448 //-------------------------------------------------------------------------------
00449    return 0 != (fModifiers & AUTO);
00450 }
00451 
00452 
00453 //-------------------------------------------------------------------------------
00454 inline bool
00455 Reflex::MemberBase::IsConstructor() const {
00456 //-------------------------------------------------------------------------------
00457    return 0 != (fModifiers & CONSTRUCTOR);
00458 }
00459 
00460 
00461 //-------------------------------------------------------------------------------
00462 inline bool
00463 Reflex::MemberBase::IsConst() const {
00464 //-------------------------------------------------------------------------------
00465    return 0 != (fModifiers & CONST);
00466 }
00467 
00468 
00469 //-------------------------------------------------------------------------------
00470 inline bool
00471 Reflex::MemberBase::IsConverter() const {
00472 //-------------------------------------------------------------------------------
00473    return 0 != (fModifiers & CONVERTER);
00474 }
00475 
00476 
00477 //-------------------------------------------------------------------------------
00478 inline bool
00479 Reflex::MemberBase::IsCopyConstructor() const {
00480 //-------------------------------------------------------------------------------
00481    return 0 != (fModifiers & COPYCONSTRUCTOR);
00482 }
00483 
00484 
00485 //-------------------------------------------------------------------------------
00486 inline bool
00487 Reflex::MemberBase::IsDataMember() const {
00488 //-------------------------------------------------------------------------------
00489    return fMemberType == DATAMEMBER;
00490 }
00491 
00492 
00493 //-------------------------------------------------------------------------------
00494 inline bool
00495 Reflex::MemberBase::IsDestructor() const {
00496 //-------------------------------------------------------------------------------
00497    return 0 != (fModifiers & DESTRUCTOR);
00498 }
00499 
00500 
00501 //-------------------------------------------------------------------------------
00502 inline bool
00503 Reflex::MemberBase::IsExplicit() const {
00504 //-------------------------------------------------------------------------------
00505    return 0 != (fModifiers & EXPLICIT);
00506 }
00507 
00508 
00509 //-------------------------------------------------------------------------------
00510 inline bool
00511 Reflex::MemberBase::IsExtern() const {
00512 //-------------------------------------------------------------------------------
00513    return 0 != (fModifiers & EXTERN);
00514 }
00515 
00516 
00517 //-------------------------------------------------------------------------------
00518 inline bool
00519 Reflex::MemberBase::IsFunctionMember() const {
00520 //-------------------------------------------------------------------------------
00521    return fMemberType == FUNCTIONMEMBER;
00522 }
00523 
00524 
00525 //-------------------------------------------------------------------------------
00526 inline bool
00527 Reflex::MemberBase::IsInline() const {
00528 //-------------------------------------------------------------------------------
00529    return 0 != (fModifiers & INLINE);
00530 }
00531 
00532 
00533 //-------------------------------------------------------------------------------
00534 inline bool
00535 Reflex::MemberBase::IsMutable() const {
00536 //-------------------------------------------------------------------------------
00537    return 0 != (fModifiers & MUTABLE);
00538 }
00539 
00540 
00541 //-------------------------------------------------------------------------------
00542 inline bool
00543 Reflex::MemberBase::IsOperator() const {
00544 //-------------------------------------------------------------------------------
00545    return 0 != (fModifiers & OPERATOR);
00546 }
00547 
00548 
00549 //-------------------------------------------------------------------------------
00550 inline bool
00551 Reflex::MemberBase::IsPrivate() const {
00552 //-------------------------------------------------------------------------------
00553    return 0 != (fModifiers & PRIVATE);
00554 }
00555 
00556 
00557 //-------------------------------------------------------------------------------
00558 inline bool
00559 Reflex::MemberBase::IsProtected() const {
00560 //-------------------------------------------------------------------------------
00561    return 0 != (fModifiers & PROTECTED);
00562 }
00563 
00564 
00565 //-------------------------------------------------------------------------------
00566 inline bool
00567 Reflex::MemberBase::IsPublic() const {
00568 //-------------------------------------------------------------------------------
00569    return 0 != (fModifiers & PUBLIC);
00570 }
00571 
00572 
00573 //-------------------------------------------------------------------------------
00574 inline bool
00575 Reflex::MemberBase::IsRegister() const {
00576 //-------------------------------------------------------------------------------
00577    return 0 != (fModifiers & REGISTER);
00578 }
00579 
00580 
00581 //-------------------------------------------------------------------------------
00582 inline bool
00583 Reflex::MemberBase::IsStatic() const {
00584 //-------------------------------------------------------------------------------
00585    return 0 != (fModifiers & STATIC);
00586 }
00587 
00588 
00589 //-------------------------------------------------------------------------------
00590 inline bool
00591 Reflex::MemberBase::IsTemplateInstance() const {
00592 //-------------------------------------------------------------------------------
00593    return fMemberType == MEMBERTEMPLATEINSTANCE;
00594 }
00595 
00596 
00597 //-------------------------------------------------------------------------------
00598 inline bool
00599 Reflex::MemberBase::IsTransient() const {
00600 //-------------------------------------------------------------------------------
00601    return 0 != (fModifiers & TRANSIENT);
00602 }
00603 
00604 
00605 //-------------------------------------------------------------------------------
00606 inline bool
00607 Reflex::MemberBase::IsVirtual() const {
00608 //-------------------------------------------------------------------------------
00609    return 0 != (fModifiers & VIRTUAL);
00610 }
00611 
00612 
00613 //-------------------------------------------------------------------------------
00614 inline bool
00615 Reflex::MemberBase::IsVolatile() const {
00616 //-------------------------------------------------------------------------------
00617    return 0 != (fModifiers & VOLATILE);
00618 }
00619 
00620 
00621 //-------------------------------------------------------------------------------
00622 inline Reflex::TYPE
00623 Reflex::MemberBase::MemberType() const {
00624 //-------------------------------------------------------------------------------
00625    return fMemberType;
00626 }
00627 
00628 
00629 //-------------------------------------------------------------------------------
00630 inline std::string
00631 Reflex::MemberBase::Name(unsigned int mod) const {
00632 //-------------------------------------------------------------------------------
00633    if (0 != (mod & (SCOPED | S))) {
00634       std::string s(DeclaringScope().Name(mod));
00635 
00636       if (!DeclaringScope().IsTopScope()) {
00637          s += "::";
00638       }
00639       s += fName.c_str();
00640       return s;
00641    }
00642    return fName.c_str();
00643 }
00644 
00645 
00646 //-------------------------------------------------------------------------------
00647 inline const char*
00648 Reflex::MemberBase::Name_c_str() const {
00649 //-------------------------------------------------------------------------------
00650    return fName.c_str();
00651 }
00652 
00653 
00654 //-------------------------------------------------------------------------------
00655 inline size_t
00656 Reflex::MemberBase::Offset() const {
00657 //-------------------------------------------------------------------------------
00658    return 0;
00659 }
00660 
00661 
00662 //-------------------------------------------------------------------------------
00663 inline void
00664 Reflex::MemberBase::InterpreterOffset(char*) {
00665 //-------------------------------------------------------------------------------
00666 }
00667 
00668 
00669 //-------------------------------------------------------------------------------
00670 inline char*&
00671 Reflex::MemberBase::InterpreterOffset() const {
00672 //-------------------------------------------------------------------------------
00673    static char* p = 0;
00674    return p;
00675 }
00676 
00677 
00678 //-------------------------------------------------------------------------------
00679 inline size_t
00680 Reflex::MemberBase::FunctionParameterSize(bool /* required */) const {
00681 //-------------------------------------------------------------------------------
00682    return 0;
00683 }
00684 
00685 
00686 //-------------------------------------------------------------------------------
00687 inline std::string
00688 Reflex::MemberBase::FunctionParameterDefaultAt(size_t /* nth */) const {
00689 //-------------------------------------------------------------------------------
00690    return "";
00691 }
00692 
00693 
00694 //-------------------------------------------------------------------------------
00695 inline Reflex::StdString_Iterator
00696 Reflex::MemberBase::FunctionParameterDefault_Begin() const {
00697 //-------------------------------------------------------------------------------
00698    return Dummy::StdStringCont().begin();
00699 }
00700 
00701 
00702 //-------------------------------------------------------------------------------
00703 inline Reflex::StdString_Iterator
00704 Reflex::MemberBase::FunctionParameterDefault_End() const {
00705 //-------------------------------------------------------------------------------
00706    return Dummy::StdStringCont().end();
00707 }
00708 
00709 
00710 //-------------------------------------------------------------------------------
00711 inline Reflex::Reverse_StdString_Iterator
00712 Reflex::MemberBase::FunctionParameterDefault_RBegin() const {
00713 //-------------------------------------------------------------------------------
00714    return Dummy::StdStringCont().rbegin();
00715 }
00716 
00717 
00718 //-------------------------------------------------------------------------------
00719 inline Reflex::Reverse_StdString_Iterator
00720 Reflex::MemberBase::FunctionParameterDefault_REnd() const {
00721 //-------------------------------------------------------------------------------
00722    return Dummy::StdStringCont().rend();
00723 }
00724 
00725 
00726 //-------------------------------------------------------------------------------
00727 inline std::string
00728 Reflex::MemberBase::FunctionParameterNameAt(size_t /* nth */) const {
00729 //-------------------------------------------------------------------------------
00730    return "";
00731 }
00732 
00733 
00734 //-------------------------------------------------------------------------------
00735 inline Reflex::StdString_Iterator
00736 Reflex::MemberBase::FunctionParameterName_Begin() const {
00737 //-------------------------------------------------------------------------------
00738    return Dummy::StdStringCont().begin();
00739 }
00740 
00741 
00742 //-------------------------------------------------------------------------------
00743 inline Reflex::StdString_Iterator
00744 Reflex::MemberBase::FunctionParameterName_End() const {
00745 //-------------------------------------------------------------------------------
00746    return Dummy::StdStringCont().end();
00747 }
00748 
00749 
00750 //-------------------------------------------------------------------------------
00751 inline Reflex::Reverse_StdString_Iterator
00752 Reflex::MemberBase::FunctionParameterName_RBegin() const {
00753 //-------------------------------------------------------------------------------
00754    return Dummy::StdStringCont().rbegin();
00755 }
00756 
00757 
00758 //-------------------------------------------------------------------------------
00759 inline Reflex::Reverse_StdString_Iterator
00760 Reflex::MemberBase::FunctionParameterName_REnd() const {
00761 //-------------------------------------------------------------------------------
00762    return Dummy::StdStringCont().rend();
00763 }
00764 
00765 
00766 //-------------------------------------------------------------------------------
00767 //inline void Reflex::MemberBase::Set( const Object & /* instance */,
00768 //                                           const Object & /* value */ ) const {}
00769 //-------------------------------------------------------------------------------
00770 
00771 
00772 //-------------------------------------------------------------------------------
00773 inline void
00774 Reflex::MemberBase::Set(const Object& /* instance */,
00775                         const void* /* value */) const {}
00776 
00777 //-------------------------------------------------------------------------------
00778 
00779 
00780 //-------------------------------------------------------------------------------
00781 inline void
00782 Reflex::MemberBase::SetScope(const Scope& scope) const {
00783 //-------------------------------------------------------------------------------
00784    fScope = scope;
00785 }
00786 
00787 
00788 //-------------------------------------------------------------------------------
00789 inline void*
00790 Reflex::MemberBase::Stubcontext() const {
00791 //-------------------------------------------------------------------------------
00792    return 0;
00793 }
00794 
00795 
00796 //-------------------------------------------------------------------------------
00797 inline Reflex::StubFunction
00798 Reflex::MemberBase::Stubfunction() const {
00799 //-------------------------------------------------------------------------------
00800    return 0;
00801 }
00802 
00803 
00804 //-------------------------------------------------------------------------------
00805 inline size_t
00806 Reflex::MemberBase::TemplateArgumentSize() const {
00807 //-------------------------------------------------------------------------------
00808    return 0;
00809 }
00810 
00811 
00812 //-------------------------------------------------------------------------------
00813 inline Reflex::Type_Iterator
00814 Reflex::MemberBase::TemplateArgument_Begin() const {
00815 //-------------------------------------------------------------------------------
00816    return Dummy::TypeCont().begin();
00817 }
00818 
00819 
00820 //-------------------------------------------------------------------------------
00821 inline Reflex::Type_Iterator
00822 Reflex::MemberBase::TemplateArgument_End() const {
00823 //-------------------------------------------------------------------------------
00824    return Dummy::TypeCont().end();
00825 }
00826 
00827 
00828 //-------------------------------------------------------------------------------
00829 inline Reflex::Reverse_Type_Iterator
00830 Reflex::MemberBase::TemplateArgument_RBegin() const {
00831 //-------------------------------------------------------------------------------
00832    return Dummy::TypeCont().rbegin();
00833 }
00834 
00835 
00836 //-------------------------------------------------------------------------------
00837 inline Reflex::Reverse_Type_Iterator
00838 Reflex::MemberBase::TemplateArgument_REnd() const {
00839 //-------------------------------------------------------------------------------
00840    return Dummy::TypeCont().rend();
00841 }
00842 
00843 
00844 //-------------------------------------------------------------------------------
00845 inline Reflex::MemberTemplate
00846 Reflex::MemberBase::TemplateFamily() const {
00847 //-------------------------------------------------------------------------------
00848    return Dummy::MemberTemplate();
00849 }
00850 
00851 
00852 //-------------------------------------------------------------------------------
00853 inline Reflex::Type
00854 Reflex::MemberBase::TypeOf() const {
00855 //-------------------------------------------------------------------------------
00856    return fType;
00857 }
00858 
00859 
00860 //-------------------------------------------------------------------------------
00861 inline void
00862 Reflex::MemberBase::UpdateFunctionParameterNames(const char* /*parameters*/) {}
00863 
00864 //-------------------------------------------------------------------------------
00865 
00866 
00867 #endif // Reflex_MemberBase

Generated on Tue Jul 5 14:25:52 2011 for ROOT_528-00b_version by  doxygen 1.5.1