#include #ifndef BOOST_PP_IS_ITERATING #ifndef __register_function_hpp__ #define __register_function_hpp__ #include "dispatchkit.hpp" #include #include namespace dispatchkit { template T &get_member(T Class::* m, Class *obj) { return obj->*m; } template void register_member(Dispatch_Engine &s, T Class::* m, const std::string &name) { s.register_function(boost::function(boost::bind(&get_member, m, _1)), name); } } #define BOOST_PP_ITERATION_LIMITS ( 0, 10 ) #define BOOST_PP_FILENAME_1 "register_function.hpp" #include BOOST_PP_ITERATE() # endif #else # define n BOOST_PP_ITERATION() namespace dispatchkit { template void register_function(Dispatch_Engine &s, Ret (*f)(BOOST_PP_ENUM_PARAMS(n, Param)), const std::string &name) { s.register_function(boost::function(f), name); } template void register_function(Dispatch_Engine &s, Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param)), const std::string &name) { s.register_function(boost::function(f), name); } template void register_function(Dispatch_Engine &s, Ret (Class::*f)(BOOST_PP_ENUM_PARAMS(n, Param))const, const std::string &name) { s.register_function(boost::function(f), name); } } #endif