Mirror reflection library - Puddle compile-time layer 0.5.13

puddle/categories.hpp

Go to the documentation of this file.
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 

Copyright © 2006-2011 Matus Chochlik, University of Zilina, Zilina, Slovakia.
<matus.chochlik -at- fri.uniza.sk>
<chochlik -at -gmail.com>
Documentation generated on Fri Dec 16 2011 by Doxygen (version 1.7.3).
Important note: Although the 'boostified' version of Mirror uses the Boost C++ libraries Coding Guidelines and is implemented inside of the boost namespace, it IS NOT an officially reviewed and accepted Boost library. Mirror is being developed with the intention to be submitted for review for inclusion to the Boost C++ libraries.