Mirror reflection library - Puddle compile-time layer 0.5.13
|
00001 00011 #ifndef PUDDLE_CATEGORIES_1011291729_HPP 00012 #define PUDDLE_CATEGORIES_1011291729_HPP 00013 00014 #include <puddle/config.hpp> 00015 #include <puddle/meta_object_tags.hpp> 00016 #include <mirror/meta_object_tags.hpp> 00017 #include <mirror/preprocessor.hpp> 00018 00019 PUDDLE_NAMESPACE_BEGIN 00028 #define PUDDLE_HLPR_DEFINE_MO_TAG_NAME(OBJECT, X) \ 00029 meta_ ## OBJECT ## _tag | 00030 00031 #define PUDDLE_HLPR_DEFINE_MO_TAG(OBJECT, I, X) \ 00032 meta_ ## OBJECT ## _tag = \ 00033 MIRROR_FOR_EACH_META_OBJECT_BASE( \ 00034 OBJECT, \ 00035 PUDDLE_HLPR_DEFINE_MO_TAG_NAME, \ 00036 X, \ 00037 MIRROR_PP_EMPTY \ 00038 ) 1ULL << I, 00039 00041 00057 #ifdef MIRROR_DOCUMENTATION_ONLY 00058 enum meta_object_category 00059 #else 00060 enum class meta_object_category : unsigned long long 00061 #endif 00062 { 00063 MIRROR_FOR_EACH_META_OBJECT( 00064 PUDDLE_HLPR_DEFINE_MO_TAG, 00065 0 00066 ) 00067 non_meta_meta_object_tag = 0 00068 }; 00069 00070 #undef PUDDLE_HLPR_DEFINE_MO_TAG_VALUE 00071 #undef PUDDLE_HLPR_DEFINE_MO_TAG 00072 00073 #define PUDDLE_HELPER_MAKE_MO_GET_CATEGORY_FN(OBJECT, I, X) \ 00074 inline meta_object_category get_category( \ 00075 mirror::meta_ ## OBJECT ## _tag \ 00076 ) \ 00077 { \ 00078 return meta_object_category::meta_ ## OBJECT ## _tag; \ 00079 } 00080 00081 MIRROR_FOR_EACH_META_OBJECT(PUDDLE_HELPER_MAKE_MO_GET_CATEGORY_FN, _) 00082 #undef PUDDLE_HELPER_MAKE_MO_GET_CATEGORY_FN 00083 00084 00085 PUDDLE_NAMESPACE_END 00086 00087 #endif //include guard 00088