request_f.h
Go to the documentation of this file.00001
00002
00003
00004
00005 #ifndef _SIGXMACROS_REQUEST_F_H_
00006 #define _SIGXMACROS_REQUEST_F_H_
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <sigc++/slot.h>
00028 #include <sigx/noncopyable.h>
00029 #include <sigx/nonheapallocatable.h>
00030 #include <sigx/nonpointeraliasing.h>
00031 #include <sigx/internal_types.h>
00032 #include <sigx/static_assert.h>
00033
00034
00035 namespace sigx
00036 {
00037
00091 template<typename T_arg1 = sigc::nil, typename T_arg2 = sigc::nil, typename T_arg3 = sigc::nil, typename T_arg4 = sigc::nil, typename T_arg5 = sigc::nil, typename T_arg6 = sigc::nil, typename T_arg7 = sigc::nil>
00092 class request_f: noncopyable, nonheapallocatable, nonpointeraliasing, protected sigc::slot<void, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7>
00093 {
00094 public:
00095 typedef sigc::slot<void,T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7> parent_type;
00096
00097
00098 using parent_type::operator ();
00099
00109 template<typename T_functor>
00110 explicit request_f(const T_functor& _A_func):
00111 parent_type(tunnel_functor<ASYNC, T_functor>(_A_func))
00112 {
00113
00114 SIGX_STATIC_ASSERT((internal::is_functor_tunneled<T_functor>::value == false));
00115
00116
00117
00118
00119
00120 SIGX_STATIC_ASSERT((sigx::internal::is_or_adapts_slot<T_functor>::value == false));
00121 }
00122 };
00123
00124
00125 }
00126 #endif