Bayeux  3.4.1
Core Foundation library for SuperNEMO
Namespaces | Macros | Functions
reflection_interface.h File Reference
#include <camp/detail/typeid.hpp>
#include <camp/camptype.hpp>

Go to the source code of this file.

Namespaces

 datatools
 The Bayeux/datatools library top-level namespace.
 
 datatools::detail
 Nested namespace of the Bayeux/datatools module library (detail)
 
 datatools::detail::reflection
 Nested private namespace of the Bayeux/datatools module library (reflection)
 

Macros

#define DR_CLASS_RTTI()   CAMP_RTTI() \
 Declare Camp RTTI within class declaration. More...
 
#define DR_CLASS_REGISTER(Class)   CAMP_TYPE( Class ) \
 Inform Camp that class Class exists. More...
 
#define DR_TYPE_REGISTER(Type)   CAMP_TYPE( Type ) \
 Inform Camp that type Type exists. More...
 
#define DR_CLASS_NONCOPYABLE_REGISTER(Class)   CAMP_TYPE_NONCOPYABLE( Class ) \
 Inform Camp that non copyable class Class exists : More...
 
#define DR_TYPE_NONCOPYABLE_REGISTER(Type)   CAMP_TYPE_NONCOPYABLE( Type ) \
 Inform Camp that non copyable type Type exists. More...
 
#define DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable)
 Declare the reflection template function associated to class Introspectable. More...
 
#define DR_TYPE_IMPLEMENT_REFLECTION_DECLARATION(Introspectable)   DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \
 
#define DR_CLASS_INIT(Introspectable)
 Inform Camp that class Introspectable exists and trigger the automatic registration of dedicated reflection feature. More...
 
#define DR_CLASS_NONCOPYABLE_INIT(Introspectable)
 Inform Camp that non copyable class Introspectable exists and trigger the automatic registration of dedicated introspection feature. More...
 
#define DR_TYPE_INIT(Introspectable)   DR_CLASS_INIT(Introspectable) \
 
#define DR_TYPE_NONCOPYABLE_INIT(Introspectable)   DR_CLASS_NONCOPYABLE_INIT(Introspectable) \
 

Functions

template<typename Introspectable >
void datatools::detail::reflection::implement_reflection (unsigned int)
 

Detailed Description

Some utilities and macros related to Camp based reflection within datatools

Macro Definition Documentation

◆ DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION

#define DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION (   Introspectable)
Value:
namespace datatools{ \
namespace detail { \
namespace reflection { \
template<> \
void implement_reflection< Introspectable > (unsigned int); \
}}} \
The Bayeux/datatools library top-level namespace.
Definition: algo.h:13

Declare the reflection template function associated to class Introspectable.

◆ DR_CLASS_INIT

#define DR_CLASS_INIT (   Introspectable)
Value:
DR_CLASS_REGISTER(Introspectable) \
DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \
#define DR_CLASS_REGISTER(Class)
Inform Camp that class Class exists.
Definition: reflection_interface.h:65

Inform Camp that class Introspectable exists and trigger the automatic registration of dedicated reflection feature.

  • Introspectable the full identifier (with namespaces) of the introspectable class to be registered in the Camp system with introspection support in Bayeux/datatools.

Example:

namespace foo {
class bar {
...
};
}
DR_CLASS_INIT(foo::bar);

◆ DR_CLASS_NONCOPYABLE_INIT

#define DR_CLASS_NONCOPYABLE_INIT (   Introspectable)
Value:
DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \
#define DR_CLASS_NONCOPYABLE_REGISTER(Class)
Inform Camp that non copyable class Class exists :
Definition: reflection_interface.h:93

Inform Camp that non copyable class Introspectable exists and trigger the automatic registration of dedicated introspection feature.

See also
DR_CLASS_INIT

◆ DR_CLASS_NONCOPYABLE_REGISTER

#define DR_CLASS_NONCOPYABLE_REGISTER (   Class)    CAMP_TYPE_NONCOPYABLE( Class ) \

Inform Camp that non copyable class Class exists :

  • Class the full identifier of the class to be registered in the Camp system (including namespaces)

Example:

namespace foo {
class bar : private boost::noncopyable {
...
};
}

◆ DR_CLASS_REGISTER

#define DR_CLASS_REGISTER (   Class)    CAMP_TYPE( Class ) \

Inform Camp that class Class exists.

  • Class the full identifier of the class to be registered in the Camp system (including namespaces)

Example:

namespace foo {
class bar {
...
};
}

◆ DR_CLASS_RTTI

#define DR_CLASS_RTTI ( )    CAMP_RTTI() \

Declare Camp RTTI within class declaration.

Example:

namespace foo {
class bar {
...
#ifndef Q_MOC_RUN // Special guard to avoid clash with Qt MOC interpreter
#endif // Q_MOC_RUN
};
}

◆ DR_TYPE_IMPLEMENT_REFLECTION_DECLARATION

#define DR_TYPE_IMPLEMENT_REFLECTION_DECLARATION (   Introspectable)    DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \

◆ DR_TYPE_INIT

#define DR_TYPE_INIT (   Introspectable)    DR_CLASS_INIT(Introspectable) \
See also
DR_CLASS_INIT

◆ DR_TYPE_NONCOPYABLE_INIT

#define DR_TYPE_NONCOPYABLE_INIT (   Introspectable)    DR_CLASS_NONCOPYABLE_INIT(Introspectable) \

◆ DR_TYPE_NONCOPYABLE_REGISTER

#define DR_TYPE_NONCOPYABLE_REGISTER (   Type)    CAMP_TYPE_NONCOPYABLE( Type ) \

Inform Camp that non copyable type Type exists.

See also
DR_CLASS_NONCOPYABLE_REGISTER

◆ DR_TYPE_REGISTER

#define DR_TYPE_REGISTER (   Type)    CAMP_TYPE( Type ) \

Inform Camp that type Type exists.

See also
DR_CLASS_REGISTER