Mirror reflection library 0.5.13

mirror/class_gen.hpp

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

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.