Mirror reflection library 0.5.13
|
00001 00010 #ifndef MIRROR_CLASS_GEN_1103092151_HPP 00011 #define MIRROR_CLASS_GEN_1103092151_HPP 00012 00013 #include <mirror/mirror_fwd.hpp> 00014 #include <mirror/auxiliary/class_gen.hpp> 00015 #include <mirror/meta_prog/range.hpp> 00016 #include <mirror/meta_class.hpp> 00017 00018 MIRROR_NAMESPACE_BEGIN 00019 00020 template < 00021 class MetaScope, 00022 template <class> class VarRangeGetter, 00023 template <class> class ScopeTransform, 00024 template <class> class VarTransform 00025 > 00026 struct scope_class_generator 00027 { 00028 typedef aux::class_gen_hlpr< 00029 MetaScope, 00030 typename VarRangeGetter<MetaScope>::type, 00031 ScopeTransform, 00032 VarTransform 00033 > type; 00034 }; 00035 00036 template < 00037 class Class, 00038 template <class> class ClassTransform, 00039 template <class> class MemVarTransform 00040 > 00041 struct class_generator 00042 { 00043 typedef aux::class_gen_hlpr< 00044 meta_class<Class>, 00045 typename all_member_variables<meta_class<Class> >::type, 00046 ClassTransform, 00047 MemVarTransform 00048 > type; 00049 }; 00050 00051 template < 00052 template <class> class ClassTransform, 00053 template <class> class MemVarTransform 00054 > 00055 struct generator_maker 00056 { 00057 template <class Class> 00058 struct generator 00059 { 00060 typedef typename class_generator< 00061 Class, 00062 ClassTransform, 00063 MemVarTransform 00064 >::type type; 00065 }; 00066 }; 00067 00068 MIRROR_NAMESPACE_END 00069 00070 #endif //include guard 00071