Mirror reflection library - Puddle compile-time layer 0.5.13

puddle/specifiers.hpp

Go to the documentation of this file.
00001 
00010 #ifndef PUDDLE_SPECIFIERS_1011291729_HPP
00011 #define PUDDLE_SPECIFIERS_1011291729_HPP
00012 
00013 #include <mirror/specifier_tags.hpp>
00014 #include <mirror/preprocessor.hpp>
00015 
00016 PUDDLE_NAMESPACE_BEGIN
00017 
00025 #define PUDDLE_HLPR_DEFINE_SPEC_TAG_NAME(SPEC, X) \
00026     spec_ ## SPEC ## _tag |
00027 
00028 #define PUDDLE_HLPR_DEFINE_SPEC_TAG(SPEC, KW, GRP, I, X) \
00029     spec_ ## SPEC ## _tag = \
00030     MIRROR_FOR_EACH_SPECIFIER_BASE( \
00031         SPEC, \
00032         PUDDLE_HLPR_DEFINE_SPEC_TAG_NAME, \
00033         X, \
00034         MIRROR_PP_EMPTY \
00035     ) 1ULL << I,
00036 
00038 
00045 #ifdef MIRROR_DOCUMENTATION_ONLY
00046 enum specifier_category
00047 #else
00048 enum class specifier_category : unsigned long long
00049 #endif
00050 {
00051     MIRROR_FOR_EACH_SPECIFIER(
00052         PUDDLE_HLPR_DEFINE_SPEC_TAG,
00053         0
00054     )
00055     spec__tag = spec_none_tag
00056 };
00057 
00058 #undef PUDDLE_HLPR_DEFINE_SPEC_TAG_VALUE
00059 #undef PUDDLE_HLPR_DEFINE_SPEC_TAG
00060 
00061 #define PUDDLE_HELPER_MAKE_SPEC_GET_CATEGORY_FN(SPEC, KW, GRP, I, X) \
00062 inline specifier_category get_category(mirror::spec_ ## SPEC ## _tag) \
00063 { \
00064     return specifier_category::spec_ ## SPEC ## _tag; \
00065 }
00066 
00067 MIRROR_FOR_EACH_SPECIFIER(PUDDLE_HELPER_MAKE_SPEC_GET_CATEGORY_FN, _)
00068 #undef PUDDLE_HELPER_MAKE_SPEC_GET_CATEGORY_FN
00069 
00070 
00071 PUDDLE_NAMESPACE_END
00072 
00073 
00074 #endif //include guard
00075 

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.