Mirror reflection library 0.5.13

mirror/invoker.hpp

Go to the documentation of this file.
00001 
00010 #ifndef MIRROR_INVOKER_1011291729_HPP
00011 #define MIRROR_INVOKER_1011291729_HPP
00012 
00013 #include <mirror/auxiliary/func_call.hpp>
00014 
00015 MIRROR_NAMESPACE_BEGIN
00016 
00021 
00022 
00049 template <
00050     template <class, class> class Manufacturer,
00051     template <class, class> class Suppliers,
00052     template <class, class> class Enumerator,
00053     class SourceTraits,
00054     typename MetaFunction
00055 > class invoker : public aux::base_fn_caller<
00056     Manufacturer,
00057     Suppliers,
00058     Enumerator,
00059     SourceTraits,
00060     MetaFunction,
00061     typename parameters<MetaFunction>::type,
00062     typename mp::make_index_seq<
00063         typename mp::size<
00064             typename parameters<MetaFunction>::type
00065         >::type
00066     >::type
00067 >
00068 {
00069 private:
00070     typedef typename aux::base_fn_caller<
00071         Manufacturer,
00072         Suppliers,
00073         Enumerator,
00074         SourceTraits,
00075         MetaFunction,
00076         typename parameters<MetaFunction>::type,
00077         typename mp::make_index_seq<
00078             typename mp::size<
00079                 typename parameters<MetaFunction>::type
00080             >::type
00081         >::type
00082     > base_class;
00083 public:
00084     template <typename Param>
00085     invoker(Param param)
00086      : base_class(param)
00087     { }
00088 };
00089 
00090 
00092 
00151 template <
00152     template <class, class> class Manufacturer,
00153     template <class, class> class Suppliers,
00154     template <class, class> class Enumerator,
00155     class SourceTraits
00156 > struct invoker_maker
00157 {
00159 
00165     template <typename MetaFunction>
00166     struct invoker
00167     {
00168         typedef mirror::invoker<
00169             Manufacturer,
00170             Suppliers,
00171             Enumerator,
00172             SourceTraits,
00173             MetaFunction
00174         > type;
00175     };
00176 };
00177 
00178 MIRROR_NAMESPACE_END
00179 
00180 #endif //include guard
00181 

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.