23 #ifndef DATATOOLS_REFLECTION_INTERFACE_H 24 #define DATATOOLS_REFLECTION_INTERFACE_H 28 #include <camp/detail/typeid.hpp> 29 #include <camp/camptype.hpp> 46 #define DR_CLASS_RTTI() \ 65 #define DR_CLASS_REGISTER(Class) \ 73 #define DR_TYPE_REGISTER(Type) \ 93 #define DR_CLASS_NONCOPYABLE_REGISTER(Class) \ 94 CAMP_TYPE_NONCOPYABLE( Class ) \ 101 #define DR_TYPE_NONCOPYABLE_REGISTER(Type) \ 102 CAMP_TYPE_NONCOPYABLE( Type ) \ 108 namespace reflection {
109 template<
typename Introspectable>
117 #define DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \ 118 namespace datatools{ \ 120 namespace reflection { \ 122 void implement_reflection< Introspectable > (unsigned int); \ 128 #define DR_TYPE_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \ 129 DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \ 149 #define DR_CLASS_INIT(Introspectable) \ 150 DR_CLASS_REGISTER(Introspectable) \ 151 DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \ 158 #define DR_CLASS_NONCOPYABLE_INIT(Introspectable) \ 159 DR_CLASS_NONCOPYABLE_REGISTER(Introspectable) \ 160 DR_CLASS_IMPLEMENT_REFLECTION_DECLARATION(Introspectable) \ 165 #define DR_TYPE_INIT(Introspectable) \ 166 DR_CLASS_INIT(Introspectable) \ 171 #define DR_TYPE_NONCOPYABLE_INIT(Introspectable) \ 172 DR_CLASS_NONCOPYABLE_INIT(Introspectable) \ 175 #endif // DATATOOLS_REFLECTION_INTERFACE_H