/
zOMGdev
/
cppcms
Обзор
Документация
Войти
/
zOMGdev
/
cppcms
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
private/binder.h
342 строки
9 KB
Artyom Beilis
Removed reference to Boost.Bind from all the code - get ready to get rid of cppcms_boost
26 ноя 2015, 18:46
26 ноя 2015, 18:46
3b4016c
Код
Авторство
О чём код?
/////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2008-2012 Artyom Beilis (Tonkikh) <artyomtnk@yahoo.com> // // See accompanying file COPYING.TXT file for licensing details. // /////////////////////////////////////////////////////////////////////////////// #ifndef CPPCMS_IMPL_BINDER #define CPPCMS_IMPL_BINDER #include <booster/aio/types.h> #include <booster/callback.h> namespace cppcms { namespace impl { // booster::aio::handler template<typename F,typename S> struct handler_binder_p0 : public booster::aio::handler::callable_type { F f_; S s_; handler_binder_p0(F const &f,S const &s) : f_(f), s_(s) {} void operator()() { ((*s_).*f_)(); } }; template<typename C,typename S> booster::aio::handler::pointer_type mfunc_to_handler(void (C::*f)(),S s) { return new handler_binder_p0<void (C::*)(),S>(f,s); } template<typename F,typename S,typename P1> struct handler_binder_p1 : public booster::aio::handler::callable_type { F f_; S s_; P1 p1_; handler_binder_p1(F const &f,S const &s, P1 const &p1) : f_(f), s_(s), p1_(p1) {} void operator()() { ((*s_).*f_)(p1_); } }; template<typename C,typename S,typename P1,typename P1in> booster::aio::handler::pointer_type mfunc_to_handler(void (C::*f)(P1),S s,P1in const &p1) { return new handler_binder_p1<void (C::*)(P1),S,P1in>(f,s,p1); } template<typename F,typename S,typename P1,typename P2> struct handler_binder_p2 : public booster::aio::handler::callable_type { F f_; S s_; P1 p1_; P2 p2_; handler_binder_p2(F const &f,S const &s, P1 const &p1,P2 const &p2) : f_(f), s_(s), p1_(p1),p2_(p2) {} void operator()() { ((*s_).*f_)(p1_,p2_); } }; template<typename C,typename S,typename P1,typename P2,typename P1in,typename P2in> booster::aio::handler::pointer_type mfunc_to_handler(void (C::*f)(P1,P2),S s,P1in const &p1,P2in const &p2) { return new handler_binder_p2<void (C::*)(P1,P2),S,P1in,P2in>(f,s,p1,p2); } // booster::aio::event_handler template<typename F,typename S> struct event_handler_binder_p0 : public booster::aio::event_handler::callable_type { F f_; S s_; event_handler_binder_p0(F const &f,S const &s) : f_(f), s_(s) {} void operator()(booster::system::error_code const &e) { ((*s_).*f_)(e); } }; template<typename C,typename S> booster::aio::event_handler::pointer_type mfunc_to_event_handler(void (C::*f)(booster::system::error_code const &e),S s) { return new event_handler_binder_p0<void (C::*)(booster::system::error_code const &),S>(f,s); } template<typename F,typename S,typename P1> struct event_handler_binder_p1 : public booster::aio::event_handler::callable_type { F f_; S s_; P1 p1_; event_handler_binder_p1(F const &f,S const &s, P1 const &p1) : f_(f), s_(s), p1_(p1) {} void operator()(booster::system::error_code const &e) { ((*s_).*f_)(e,p1_); } }; template<typename C,typename S,typename P1,typename P1in> booster::aio::event_handler::pointer_type mfunc_to_event_handler(void (C::*f)(booster::system::error_code const &,P1),S s,P1in const &p1) { return new event_handler_binder_p1<void (C::*)(booster::system::error_code const &,P1),S,P1in>(f,s,p1); } template<typename F,typename S,typename P1,typename P2> struct event_handler_binder_p2 : public booster::aio::event_handler::callable_type { F f_; S s_; P1 p1_; P2 p2_; event_handler_binder_p2(F const &f,S const &s, P1 const &p1,P2 const &p2) : f_(f), s_(s), p1_(p1),p2_(p2) {} void operator()(booster::system::error_code const &e) { ((*s_).*f_)(e,p1_,p2_); } }; template<typename C,typename S,typename P1,typename P2,typename P1in,typename P2in> booster::aio::event_handler::pointer_type mfunc_to_event_handler(void (C::*f)(booster::system::error_code const &,P1,P2),S s,P1in const &p1,P2in const &p2) { return new event_handler_binder_p2<void (C::*)(booster::system::error_code const &,P1,P2),S,P1in,P2in>(f,s,p1,p2); } // booster::aio::io_handler template<typename F,typename S> struct io_handler_binder_p0 : public booster::aio::io_handler::callable_type { F f_; S s_; io_handler_binder_p0(F const &f,S const &s) : f_(f), s_(s) {} void operator()(booster::system::error_code const &e,size_t l) { ((*s_).*f_)(e,l); } }; template<typename C,typename S> booster::aio::io_handler::pointer_type mfunc_to_io_handler(void (C::*f)(booster::system::error_code const &,size_t),S s) { return new io_handler_binder_p0<void (C::*)(booster::system::error_code const &,size_t),S>(f,s); } template<typename F,typename S,typename P1> struct io_handler_binder_p1 : public booster::aio::io_handler::callable_type { F f_; S s_; P1 p1_; io_handler_binder_p1(F const &f,S const &s, P1 const &p1) : f_(f), s_(s), p1_(p1) {} void operator()(booster::system::error_code const &e,size_t l) { ((*s_).*f_)(e,l,p1_); } }; template<typename C,typename S,typename P1,typename P1in> booster::aio::io_handler::pointer_type mfunc_to_io_handler(void (C::*f)(booster::system::error_code const &,size_t,P1),S s,P1in const &p1) { return new io_handler_binder_p1<void (C::*)(booster::system::error_code const &,size_t,P1),S,P1in>(f,s,p1); } template<typename F,typename S,typename P1,typename P2> struct io_handler_binder_p2 : public booster::aio::io_handler::callable_type { F f_; S s_; P1 p1_; P2 p2_; io_handler_binder_p2(F const &f,S const &s, P1 const &p1,P2 const &p2) : f_(f), s_(s), p1_(p1),p2_(p2) {} void operator()(booster::system::error_code const &e,size_t l) { ((*s_).*f_)(e,l,p1_,p2_); } }; template<typename C,typename S,typename P1,typename P2,typename P1in,typename P2in> booster::aio::io_handler::pointer_type mfunc_to_io_handler(void (C::*f)(booster::system::error_code const &,size_t,P1,P2),S s,P1in const &p1,P2in const &p2) { return new io_handler_binder_p2<void (C::*)(booster::system::error_code const &,size_t,P1,P2),S,P1in,P2in>(f,s,p1,p2); } //// NON Member Functions // booster::aio::handler template<typename F,typename P1> struct handler_fbinder_p1 : public booster::aio::handler::callable_type { F f_; P1 p1_; handler_fbinder_p1(F const &f, P1 const &p1) : f_(f), p1_(p1) {} void operator()() { f_(p1_); } }; template<typename C,typename P1> booster::aio::handler::pointer_type func_to_handler(C const &f,P1 const &p1) { return new handler_fbinder_p1<C,P1>(f,p1); } template<typename F,typename P1,typename P2> struct handler_fbinder_p2 : public booster::aio::handler::callable_type { F f_; P1 p1_; P2 p2_; handler_fbinder_p2(F const &f, P1 const &p1,P2 const &p2) : f_(f), p1_(p1),p2_(p2) {} void operator()() { f_(p1_,p2_); } }; template<typename C,typename P1,typename P2> booster::aio::handler::pointer_type func_to_handler(C const &f,P1 const &p1,P2 const &p2) { return new handler_fbinder_p2<C,P1,P2>(f,p1,p2); } // booster::aio::event_handler template<typename F,typename P1> struct event_handler_fbinder_p1 : public booster::aio::event_handler::callable_type { F f_; P1 p1_; event_handler_fbinder_p1(F const &f, P1 const &p1) : f_(f), p1_(p1) {} void operator()(booster::system::error_code const &e) { f_(e,p1_); } }; template<typename C,typename P1> booster::aio::event_handler::pointer_type func_to_event_handler(C const &f,P1 const &p1) { return new event_handler_fbinder_p1<C,P1>(f,p1); } template<typename F,typename P1,typename P2> struct event_handler_fbinder_p2 : public booster::aio::event_handler::callable_type { F f_; P1 p1_; P2 p2_; event_handler_fbinder_p2(F const &f, P1 const &p1,P2 const &p2) : f_(f), p1_(p1),p2_(p2) {} void operator()(booster::system::error_code const &e) { f_(e,p1_,p2_); } }; template<typename C,typename P1,typename P2> booster::aio::event_handler::pointer_type func_to_event_handler(C const &f,P1 const &p1,P2 const &p2) { return new event_handler_fbinder_p2<C,P1,P2>(f,p1,p2); } // booster::aio::io_handler template<typename F,typename P1> struct io_handler_fbinder_p1 : public booster::aio::io_handler::callable_type { F f_; P1 p1_; io_handler_fbinder_p1(F const &f, P1 const &p1) : f_(f), p1_(p1) {} void operator()(booster::system::error_code const &e,size_t l) { f_(e,l,p1_); } }; template<typename C,typename P1> booster::aio::io_handler::pointer_type func_to_io_handler(C f,P1 const &p1) { return new io_handler_fbinder_p1<C,P1>(f,p1); } template<typename F,typename P1,typename P2> struct io_handler_fbinder_p2 : public booster::aio::io_handler::callable_type { F f_; P1 p1_; P2 p2_; io_handler_fbinder_p2(F const &f, P1 const &p1,P2 const &p2) : f_(f), p1_(p1),p2_(p2) {} void operator()(booster::system::error_code const &e,size_t l) { f_(e,l,p1_,p2_); } }; template<typename C,typename P1,typename P2> booster::aio::io_handler::pointer_type func_to_io_handler(C f,P1 const &p1,P2 const &p2) { return new io_handler_fbinder_p2<C,P1,P2>(f,p1,p2); } } // impl } // cppcms #endif