Bayeux  3.4.1
Core Foundation library for SuperNEMO
Macros
reflection_macros.h File Reference
#include <string>
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <boost/ref.hpp>
#include <camp/camptype.hpp>
#include <camp/class.hpp>
#include <camp/enum.hpp>
#include <camp/value.hpp>
#include <camp/function.hpp>
#include <camp/property.hpp>
#include <camp/arrayproperty.hpp>
#include <camp/enumobject.hpp>
#include <camp/userobject.hpp>
#include <camp/classvisitor.hpp>
#include <camp/simpleproperty.hpp>
#include <camp/enumproperty.hpp>
#include <camp/userproperty.hpp>
#include <camp/observer.hpp>
#include <camp/args.hpp>
#include <camp/errors.hpp>
#include <datatools/detail/reflection_utils.h>

Go to the source code of this file.

Macros

#define DR_CLASS_IMPLEMENT_REFLECTION_HEAD(TypeId, TypeTag)
 Header of the implementation code block that defines Camp based reflection functionalities for class TypeId. More...
 
#define DR_TYPE_IMPLEMENT_REFLECTION_HEAD(TypeId, TypeTag)   DR_CLASS_IMPLEMENT_REFLECTION_HEAD(TypeId,TypeTag) \
 
#define DR_CLASS_DECLARE2(ClassId, ClassName)   ::camp::Class::declare< ClassId >(ClassName) \
 Declare reflection metaclass for class ClassId with registration class name ClassName. More...
 
#define DR_CLASS_DECLARE(ClassId)   DR_CLASS_DECLARE2( ClassId , ::datatools::detail::reflection::guid< ClassId >() ) \
 Declare reflection metaclass for class ClassId. More...
 
#define DR_CLASS_BASE(ParentTypeId)   base< ParentTypeId >() \
 Directive to declare the ParentTypeId class as a base class. More...
 
#define DR_CLASS_CONSTRUCTOR()   constructor0() \
 Declare default constructor for a class. More...
 
#define DR_CLASS_CONSTRUCTOR1(Arg0Type)   constructor1< Arg0Type >() \
 Declare a class constructor with one argument of type Arg0Type. More...
 
#define DR_CLASS_CONSTRUCTOR2(Arg0Type, Arg1Type)   constructor2< Arg0Type , Arg1Type >() \
 Declare a class constructor with two arguments of type Arg0Type and Arg1Type. More...
 
#define DR_CLASS_CONSTRUCTOR3(Arg0Type, Arg1Type, Arg2Type)   constructor3< Arg0Type , Arg1Type , Arg2Type >() \
 Declare a class constructor with three arguments of type Arg0Type, Arg1Type and Arg2Type. More...
 
#define DR_CLASS_CONSTRUCTOR4(Arg0Type, Arg1Type, Arg2Type, Arg3Type)   constructor4< Arg0Type , Arg1Type , Arg2Type , Arg3Type >() \
 Declare a class constructor with four arguments of type Arg0Type, Arg1Type, Arg2Type and Arg3Type. More...
 
#define DR_CLASS_CONSTRUCTOR5(Arg0Type, Arg1Type, Arg2Type, Arg3Type, Arg4Type)   constructor5< Arg0Type , Arg1Type , Arg2Type , Arg3Type , Arg4Type >() \
 Declare a class constructor with five arguments of type Arg0Type, Arg1Type, Arg2Type, Arg3Type and Arg4Type. More...
 
#define DR_CLASS_TAG_FLAG(TagName)   tag(TagName) \
 
#define DR_CLASS_TAG(TagName, TagValue)   tag(TagName, TagValue) \
 
#define DR_CLASS_PROPERTY_GETTER(PropertyName, PropertyGetterId)   property(PropertyName, &PropertyGetterId) \
 
#define DR_CLASS_PROPERTY_REFGETTER(PropertyName, RefPropertyGetterId)   property(PropertyName, RefPropertyGetterId) \
 
#define DR_CLASS_PROPERTY_GETTER_SETTER(PropertyName, PropertyGetterId, PropertySetterId)   property(PropertyName, &PropertyGetterId, &PropertySetterId) \
 
#define DR_CLASS_PROPERTY_REFGETTER_REFSETTER(PropertyName, RefPropertyGetterId, RefPropertySetterId)   property(PropertyName, RefPropertyGetterId, RefPropertySetterId) \
 
#define DR_CLASS_PROPERTY_GETTER_SETTER_GETTER(PropertyName, PropertyGetterId, PropertySetterId, PropertyGetterId2)   property(PropertyName, &PropertyGetterId, &PropertySetterId, &PropertyGetterId2) \
 
#define DR_CLASS_PROPERTY_REFGETTER_REFSETTER_REFGETTER(PropertyName, RefPropertyGetterId, RefPropertySetterId, RefPropertyGetterId2)   property(PropertyName, RefPropertyGetterId, RefPropertySetterId, RefPropertyGetterId2) \
 
#define DR_CLASS_METHOD(MethodName, TypeId, MethodId, ReturnType)
 
#define DR_CLASS_REFMETHOD(MethodName, TypeId, RefMethodId, ReturnType)
 
#define DR_CLASS_VOID_METHOD(MethodName, TypeId, MethodId)   DR_CLASS_METHOD(MethodName,TypeId,MethodId,void) \
 
#define DR_CLASS_VOID_REFMETHOD(MethodName, TypeId, RefMethodId)   DR_CLASS_REFMETHOD(MethodName,TypeId,RefMethodId,void) \
 
#define DR_CLASS_METHOD_CONST(MethodName, TypeId, MethodId, ReturnType)
 
#define DR_CLASS_REFMETHOD_CONST(MethodName, TypeId, RefMethodId, ReturnType)
 
#define DR_CLASS_VOID_METHOD_CONST(MethodName, TypeId, MethodId)   DR_CLASS_METHOD_CONST(MethodName,TypeId,MethodId,void) \
 
#define DR_CLASS_VOID_REFMETHOD_CONST(MethodName, TypeId, RefMethodId)   DR_CLASS_REFMETHOD_CONST(MethodName,TypeId,MethodId,void) \
 
#define DR_CLASS_METHOD1(MethodName, TypeId, MethodId, ReturnType, Arg0Type)
 
#define DR_CLASS_VOID_METHOD1(MethodName, TypeId, MethodId, Arg0Type)   DR_CLASS_METHOD1(MethodName,TypeId,MethodId,void,Arg0Type) \
 
#define DR_CLASS_METHOD1_CONST(MethodName, TypeId, MethodId, ReturnType, Arg0Type)
 
#define DR_CLASS_VOID_METHOD1_CONST(MethodName, TypeId, MethodId, Arg0Type)   DR_CLASS_METHOD1_CONST(MethodName,TypeId,MethodId,void,Arg0Type) \
 
#define DR_CLASS_REFMETHOD1(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type)
 
#define DR_CLASS_VOID_REFMETHOD1(MethodName, TypeId, RefMethodId, Arg0Type)   DR_CLASS_REFMETHOD1(MethodName,TypeId,RefMethodId,void,Arg0Type) \
 
#define DR_CLASS_REFMETHOD1_CONST(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type)
 
#define DR_CLASS_VOID_REFMETHOD1_CONST(MethodName, TypeId, RefMethodId, Arg0Type)   DR_CLASS_REFMETHOD1_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type) \
 
#define DR_CLASS_METHOD2(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type)
 
#define DR_CLASS_VOID_METHOD2(MethodName, TypeId, MethodId, Arg0Type, Arg1Type)   DR_CLASS_METHOD2(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type) \
 
#define DR_CLASS_METHOD2_CONST(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type)
 
#define DR_CLASS_VOID_METHOD2_CONST(MethodName, TypeId, MethodId, Arg0Type, Arg1Type)   DR_CLASS_METHOD2_CONST(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type) \
 
#define DR_CLASS_REFMETHOD2(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type)
 
#define DR_CLASS_VOID_REFMETHOD2(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type)   DR_CLASS_REFMETHOD2(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type) \
 
#define DR_CLASS_REFMETHOD2_CONST(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type)
 
#define DR_CLASS_VOID_REFMETHOD2_CONST(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type)   DR_CLASS_REFMETHOD2_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type) \
 
#define DR_CLASS_METHOD3(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type)
 
#define DR_CLASS_VOID_METHOD3(MethodName, TypeId, MethodId, Arg0Type, Arg1Type, Arg2Type)   DR_CLASS_METHOD3(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type) \
 
#define DR_CLASS_METHOD3_CONST(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type)
 
#define DR_CLASS_VOID_METHOD3_CONST(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type, Arg2Type)   DR_CLASS_METHOD3_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \
 
#define DR_CLASS_REFMETHOD3(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type)
 
#define DR_CLASS_VOID_REFMETHOD3(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type, Arg2Type)   DR_CLASS_REFMETHOD3(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \
 
#define DR_CLASS_REFMETHOD3_CONST(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type)
 
#define DR_CLASS_VOID_REFMETHOD3_CONST(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type, Arg2Type)   DR_CLASS_REFMETHOD3_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \
 
#define DR_CLASS_METHOD4(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type, Arg3Type)
 
#define DR_CLASS_VOID_METHOD4(MethodName, TypeId, MethodId, Arg0Type, Arg1Type, Arg2Type, Arg3Type)   DR_CLASS_METHOD4(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \
 
#define DR_CLASS_METHOD4_CONST(MethodName, TypeId, MethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type, Arg3Type)
 
#define DR_CLASS_VOID_METHOD4_CONST(MethodName, TypeId, MethodId, Arg0Type, Arg1Type, Arg2Type, Arg3Type)   DR_CLASS_METHOD4_CONST(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \
 
#define DR_CLASS_REFMETHOD4(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type, Arg3Type)
 
#define DR_CLASS_VOID_REFMETHOD4(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type, Arg2Type, Arg3Type)   DR_CLASS_REFMETHOD4(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \
 
#define DR_CLASS_REFMETHOD4_CONST(MethodName, TypeId, RefMethodId, ReturnType, Arg0Type, Arg1Type, Arg2Type, Arg3Type)
 
#define DR_CLASS_VOID_REFMETHOD4_CONST(MethodName, TypeId, RefMethodId, Arg0Type, Arg1Type, Arg2Type, Arg3Type)   DR_CLASS_REFMETHOD4_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \
 
#define DR_ENUM_DECLARE2(TypeId, TypeName)   ::camp::Enum::declare< TypeId >(TypeName) \
 
#define DR_ENUM_DECLARE(TypeId)   DR_ENUM_DECLARE2( TypeId , ::datatools::detail::reflection::guid< TypeId >() ) \
 

Detailed Description

Some useful macros related to Camp based reflection within datatools

Macro Definition Documentation

◆ DR_CLASS_BASE

#define DR_CLASS_BASE (   ParentTypeId)    base< ParentTypeId >() \

Directive to declare the ParentTypeId class as a base class.

◆ DR_CLASS_CONSTRUCTOR

#define DR_CLASS_CONSTRUCTOR ( )    constructor0() \

Declare default constructor for a class.

◆ DR_CLASS_CONSTRUCTOR1

#define DR_CLASS_CONSTRUCTOR1 (   Arg0Type)    constructor1< Arg0Type >() \

Declare a class constructor with one argument of type Arg0Type.

◆ DR_CLASS_CONSTRUCTOR2

#define DR_CLASS_CONSTRUCTOR2 (   Arg0Type,
  Arg1Type 
)    constructor2< Arg0Type , Arg1Type >() \

Declare a class constructor with two arguments of type Arg0Type and Arg1Type.

◆ DR_CLASS_CONSTRUCTOR3

#define DR_CLASS_CONSTRUCTOR3 (   Arg0Type,
  Arg1Type,
  Arg2Type 
)    constructor3< Arg0Type , Arg1Type , Arg2Type >() \

Declare a class constructor with three arguments of type Arg0Type, Arg1Type and Arg2Type.

◆ DR_CLASS_CONSTRUCTOR4

#define DR_CLASS_CONSTRUCTOR4 (   Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)    constructor4< Arg0Type , Arg1Type , Arg2Type , Arg3Type >() \

Declare a class constructor with four arguments of type Arg0Type, Arg1Type, Arg2Type and Arg3Type.

◆ DR_CLASS_CONSTRUCTOR5

#define DR_CLASS_CONSTRUCTOR5 (   Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type,
  Arg4Type 
)    constructor5< Arg0Type , Arg1Type , Arg2Type , Arg3Type , Arg4Type >() \

Declare a class constructor with five arguments of type Arg0Type, Arg1Type, Arg2Type, Arg3Type and Arg4Type.

◆ DR_CLASS_DECLARE

#define DR_CLASS_DECLARE (   ClassId)    DR_CLASS_DECLARE2( ClassId , ::datatools::detail::reflection::guid< ClassId >() ) \

Declare reflection metaclass for class ClassId.

◆ DR_CLASS_DECLARE2

#define DR_CLASS_DECLARE2 (   ClassId,
  ClassName 
)    ::camp::Class::declare< ClassId >(ClassName) \

Declare reflection metaclass for class ClassId with registration class name ClassName.

◆ DR_CLASS_IMPLEMENT_REFLECTION_HEAD

#define DR_CLASS_IMPLEMENT_REFLECTION_HEAD (   TypeId,
  TypeTag 
)
Value:
template<> \
void implement_reflection< TypeId > (unsigned int TypeTag) \

Header of the implementation code block that defines Camp based reflection functionalities for class TypeId.

◆ DR_CLASS_METHOD

#define DR_CLASS_METHOD (   MethodName,
  TypeId,
  MethodId,
  ReturnType 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & )> \
(boost::bind(& MethodId , _1))) \

◆ DR_CLASS_METHOD1

#define DR_CLASS_METHOD1 (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type )> \
(boost::bind(& MethodId , _1, _2))) \

◆ DR_CLASS_METHOD1_CONST

#define DR_CLASS_METHOD1_CONST (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type )> \
(boost::bind(& MethodId , _1, _2 ))) \

◆ DR_CLASS_METHOD2

#define DR_CLASS_METHOD2 (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type )> \
(boost::bind(& MethodId , _1, _2, _3))) \

◆ DR_CLASS_METHOD2_CONST

#define DR_CLASS_METHOD2_CONST (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type )> \
(boost::bind(& MethodId , _1, _2, _3 ))) \

◆ DR_CLASS_METHOD3

#define DR_CLASS_METHOD3 (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type , Arg2Type )> \
(boost::bind(& MethodId , _1, _2, _3, _4))) \

◆ DR_CLASS_METHOD3_CONST

#define DR_CLASS_METHOD3_CONST (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type , Arg2Type )> \
(boost::bind(& MethodId , _1, _2, _3, _4 ))) \

◆ DR_CLASS_METHOD4

#define DR_CLASS_METHOD4 (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type , Arg2Type , Arg3Type )> \
(boost::bind(& MethodId , _1, _2, _3, _4, _5))) \

◆ DR_CLASS_METHOD4_CONST

#define DR_CLASS_METHOD4_CONST (   MethodName,
  TypeId,
  MethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type , Arg2Type , Arg3Type )> \
(boost::bind(& MethodId , _1, _2, _3, _4, _5 ))) \

◆ DR_CLASS_METHOD_CONST

#define DR_CLASS_METHOD_CONST (   MethodName,
  TypeId,
  MethodId,
  ReturnType 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & )> \
(boost::bind(& MethodId , _1 ))) \

◆ DR_CLASS_PROPERTY_GETTER

#define DR_CLASS_PROPERTY_GETTER (   PropertyName,
  PropertyGetterId 
)    property(PropertyName, &PropertyGetterId) \

◆ DR_CLASS_PROPERTY_GETTER_SETTER

#define DR_CLASS_PROPERTY_GETTER_SETTER (   PropertyName,
  PropertyGetterId,
  PropertySetterId 
)    property(PropertyName, &PropertyGetterId, &PropertySetterId) \

◆ DR_CLASS_PROPERTY_GETTER_SETTER_GETTER

#define DR_CLASS_PROPERTY_GETTER_SETTER_GETTER (   PropertyName,
  PropertyGetterId,
  PropertySetterId,
  PropertyGetterId2 
)    property(PropertyName, &PropertyGetterId, &PropertySetterId, &PropertyGetterId2) \

◆ DR_CLASS_PROPERTY_REFGETTER

#define DR_CLASS_PROPERTY_REFGETTER (   PropertyName,
  RefPropertyGetterId 
)    property(PropertyName, RefPropertyGetterId) \

◆ DR_CLASS_PROPERTY_REFGETTER_REFSETTER

#define DR_CLASS_PROPERTY_REFGETTER_REFSETTER (   PropertyName,
  RefPropertyGetterId,
  RefPropertySetterId 
)    property(PropertyName, RefPropertyGetterId, RefPropertySetterId) \

◆ DR_CLASS_PROPERTY_REFGETTER_REFSETTER_REFGETTER

#define DR_CLASS_PROPERTY_REFGETTER_REFSETTER_REFGETTER (   PropertyName,
  RefPropertyGetterId,
  RefPropertySetterId,
  RefPropertyGetterId2 
)    property(PropertyName, RefPropertyGetterId, RefPropertySetterId, RefPropertyGetterId2) \

◆ DR_CLASS_REFMETHOD

#define DR_CLASS_REFMETHOD (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & )> \
(boost::bind(RefMethodId , _1))) \

◆ DR_CLASS_REFMETHOD1

#define DR_CLASS_REFMETHOD1 (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type )> \
(boost::bind(RefMethodId , _1, _2))) \

◆ DR_CLASS_REFMETHOD1_CONST

#define DR_CLASS_REFMETHOD1_CONST (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type )> \
(boost::bind(RefMethodId , _1, _2 ))) \

◆ DR_CLASS_REFMETHOD2

#define DR_CLASS_REFMETHOD2 (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type )> \
(boost::bind(RefMethodId , _1, _2, _3))) \

◆ DR_CLASS_REFMETHOD2_CONST

#define DR_CLASS_REFMETHOD2_CONST (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type )> \
(boost::bind(RefMethodId , _1, _2, _3 ))) \

◆ DR_CLASS_REFMETHOD3

#define DR_CLASS_REFMETHOD3 (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type , Arg2Type )> \
(boost::bind(RefMethodId , _1, _2, _3, _4))) \

◆ DR_CLASS_REFMETHOD3_CONST

#define DR_CLASS_REFMETHOD3_CONST (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type , Arg2Type )> \
(boost::bind(RefMethodId , _1, _2, _3, _4 ))) \

◆ DR_CLASS_REFMETHOD4

#define DR_CLASS_REFMETHOD4 (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( TypeId & , Arg0Type , Arg1Type , Arg2Type , Arg3Type )> \
(boost::bind(RefMethodId , _1, _2, _3, _4, _5))) \

◆ DR_CLASS_REFMETHOD4_CONST

#define DR_CLASS_REFMETHOD4_CONST (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & , Arg0Type , Arg1Type , Arg2Type , Arg3Type )> \
(boost::bind(RefMethodId , _1, _2, _3, _4, _5 ))) \

◆ DR_CLASS_REFMETHOD_CONST

#define DR_CLASS_REFMETHOD_CONST (   MethodName,
  TypeId,
  RefMethodId,
  ReturnType 
)
Value:
function(MethodName, \
boost::function< ReturnType ( const TypeId & )> \
(boost::bind(RefMethodId , _1 ))) \

◆ DR_CLASS_TAG

#define DR_CLASS_TAG (   TagName,
  TagValue 
)    tag(TagName, TagValue) \

◆ DR_CLASS_TAG_FLAG

#define DR_CLASS_TAG_FLAG (   TagName)    tag(TagName) \

◆ DR_CLASS_VOID_METHOD

#define DR_CLASS_VOID_METHOD (   MethodName,
  TypeId,
  MethodId 
)    DR_CLASS_METHOD(MethodName,TypeId,MethodId,void) \

◆ DR_CLASS_VOID_METHOD1

#define DR_CLASS_VOID_METHOD1 (   MethodName,
  TypeId,
  MethodId,
  Arg0Type 
)    DR_CLASS_METHOD1(MethodName,TypeId,MethodId,void,Arg0Type) \

◆ DR_CLASS_VOID_METHOD1_CONST

#define DR_CLASS_VOID_METHOD1_CONST (   MethodName,
  TypeId,
  MethodId,
  Arg0Type 
)    DR_CLASS_METHOD1_CONST(MethodName,TypeId,MethodId,void,Arg0Type) \

◆ DR_CLASS_VOID_METHOD2

#define DR_CLASS_VOID_METHOD2 (   MethodName,
  TypeId,
  MethodId,
  Arg0Type,
  Arg1Type 
)    DR_CLASS_METHOD2(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type) \

◆ DR_CLASS_VOID_METHOD2_CONST

#define DR_CLASS_VOID_METHOD2_CONST (   MethodName,
  TypeId,
  MethodId,
  Arg0Type,
  Arg1Type 
)    DR_CLASS_METHOD2_CONST(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type) \

◆ DR_CLASS_VOID_METHOD3

#define DR_CLASS_VOID_METHOD3 (   MethodName,
  TypeId,
  MethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)    DR_CLASS_METHOD3(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type) \

◆ DR_CLASS_VOID_METHOD3_CONST

#define DR_CLASS_VOID_METHOD3_CONST (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)    DR_CLASS_METHOD3_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \

◆ DR_CLASS_VOID_METHOD4

#define DR_CLASS_VOID_METHOD4 (   MethodName,
  TypeId,
  MethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)    DR_CLASS_METHOD4(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \

◆ DR_CLASS_VOID_METHOD4_CONST

#define DR_CLASS_VOID_METHOD4_CONST (   MethodName,
  TypeId,
  MethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)    DR_CLASS_METHOD4_CONST(MethodName,TypeId,MethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \

◆ DR_CLASS_VOID_METHOD_CONST

#define DR_CLASS_VOID_METHOD_CONST (   MethodName,
  TypeId,
  MethodId 
)    DR_CLASS_METHOD_CONST(MethodName,TypeId,MethodId,void) \

◆ DR_CLASS_VOID_REFMETHOD

#define DR_CLASS_VOID_REFMETHOD (   MethodName,
  TypeId,
  RefMethodId 
)    DR_CLASS_REFMETHOD(MethodName,TypeId,RefMethodId,void) \

◆ DR_CLASS_VOID_REFMETHOD1

#define DR_CLASS_VOID_REFMETHOD1 (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type 
)    DR_CLASS_REFMETHOD1(MethodName,TypeId,RefMethodId,void,Arg0Type) \

◆ DR_CLASS_VOID_REFMETHOD1_CONST

#define DR_CLASS_VOID_REFMETHOD1_CONST (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type 
)    DR_CLASS_REFMETHOD1_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type) \

◆ DR_CLASS_VOID_REFMETHOD2

#define DR_CLASS_VOID_REFMETHOD2 (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type 
)    DR_CLASS_REFMETHOD2(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type) \

◆ DR_CLASS_VOID_REFMETHOD2_CONST

#define DR_CLASS_VOID_REFMETHOD2_CONST (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type 
)    DR_CLASS_REFMETHOD2_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type) \

◆ DR_CLASS_VOID_REFMETHOD3

#define DR_CLASS_VOID_REFMETHOD3 (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)    DR_CLASS_REFMETHOD3(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \

◆ DR_CLASS_VOID_REFMETHOD3_CONST

#define DR_CLASS_VOID_REFMETHOD3_CONST (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type 
)    DR_CLASS_REFMETHOD3_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type) \

◆ DR_CLASS_VOID_REFMETHOD4

#define DR_CLASS_VOID_REFMETHOD4 (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)    DR_CLASS_REFMETHOD4(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \

◆ DR_CLASS_VOID_REFMETHOD4_CONST

#define DR_CLASS_VOID_REFMETHOD4_CONST (   MethodName,
  TypeId,
  RefMethodId,
  Arg0Type,
  Arg1Type,
  Arg2Type,
  Arg3Type 
)    DR_CLASS_REFMETHOD4_CONST(MethodName,TypeId,RefMethodId,void,Arg0Type,Arg1Type,Arg2Type,Arg3Type) \

◆ DR_CLASS_VOID_REFMETHOD_CONST

#define DR_CLASS_VOID_REFMETHOD_CONST (   MethodName,
  TypeId,
  RefMethodId 
)    DR_CLASS_REFMETHOD_CONST(MethodName,TypeId,MethodId,void) \

◆ DR_ENUM_DECLARE

#define DR_ENUM_DECLARE (   TypeId)    DR_ENUM_DECLARE2( TypeId , ::datatools::detail::reflection::guid< TypeId >() ) \

◆ DR_ENUM_DECLARE2

#define DR_ENUM_DECLARE2 (   TypeId,
  TypeName 
)    ::camp::Enum::declare< TypeId >(TypeName) \

◆ DR_TYPE_IMPLEMENT_REFLECTION_HEAD

#define DR_TYPE_IMPLEMENT_REFLECTION_HEAD (   TypeId,
  TypeTag 
)    DR_CLASS_IMPLEMENT_REFLECTION_HEAD(TypeId,TypeTag) \