Mirror reflection library - Rubber type-erasure utility 0.5.13
|
00001 00010 #ifndef RUBBER_CONFIG_1103151301_HPP 00011 #define RUBBER_CONFIG_1103151301_HPP 00012 00013 #include <mirror/raw_ptr/raw_ptr.hpp> 00014 #include <mirror/utils/some_type.hpp> 00015 00016 // Macro that begins the Rubber library namespace 00017 #define RUBBER_NAMESPACE_BEGIN \ 00018 namespace rubber { 00019 00020 // Macro which ends the Rubber library namespace 00021 #define RUBBER_NAMESPACE_END \ 00022 } /* namespace rubber */ 00023 00037 #ifdef MIRROR_DOCUMENTATION_ONLY 00038 00054 #define RUBBER_POLYMORPHIC_META_OBJECT 0 00055 #endif 00056 #ifndef RUBBER_POLYMORPHIC_META_OBJECT 00057 #define RUBBER_POLYMORPHIC_META_OBJECT 0 00058 #endif 00059 00060 #ifdef MIRROR_DOCUMENTATION_ONLY 00061 00073 #define RUBBER_NO_NAMESPACE_MEMBERS 0 00074 #endif 00075 #ifndef RUBBER_NO_NAMESPACE_MEMBERS 00076 #define RUBBER_NO_NAMESPACE_MEMBERS 0 00077 #endif 00078 00079 #ifdef MIRROR_DOCUMENTATION_ONLY 00080 00089 #define RUBBER_MNSO_WITH_LOCAL_NAME 0 00090 #endif 00091 #ifndef RUBBER_MNSO_WITH_LOCAL_NAME 00092 #define RUBBER_MNSO_WITH_LOCAL_NAME 0 00093 #endif 00094 00095 #ifdef MIRROR_DOCUMENTATION_ONLY 00096 00111 #define RUBBER_META_TYPE_OPERATIONS comma,separated,list,of,operation,wrappers 00112 #endif 00113 00114 RUBBER_NAMESPACE_BEGIN 00115 00116 using mirror::raw_ptr; 00117 using mirror::raw_cast; 00118 00119 using mirror::some; 00120 using mirror::some_ref; 00121 using mirror::some_cast; 00122 00123 namespace aux { 00124 00125 inline int& meta_object_uid_seq(void) 00126 { 00127 static int seq = 0; 00128 return seq; 00129 } 00130 00131 template <typename MirrorMetaObject> 00132 inline int meta_object_uid(MirrorMetaObject) 00133 { 00134 static int uid = ++meta_object_uid_seq(); 00135 return uid; 00136 } 00137 00138 template <typename TypeErased> 00139 struct return_value 00140 { 00141 #if RUBBER_POLYMORPHIC_META_OBJECT 00142 typedef const TypeErased& type; 00143 #else 00144 typedef TypeErased type; 00145 #endif 00146 }; 00147 00148 } // namespace aux 00149 00150 RUBBER_NAMESPACE_END 00151 00152 #endif //include guard 00153