1 #ifndef _SIGX_TUNNEL_CONTEXT_H_
2 #define _SIGX_TUNNEL_CONTEXT_H_
24 #include <sigc++/type_traits.h>
25 #include <sigc++/adaptors/bound_argument.h>
44 template<sync_type I_sync,
typename T_return,
typename T_unary_functor>
45 struct tunnel_context;
50 template<sync_type I_sync,
typename T_return,
typename T_adaptor>
53 return new tunnel_context<I_sync, T_return, T_adaptor>(_A_disp, _A_validity_tracker, _A_func);
66 template<
typename T_return,
typename T_unary_functor>
74 m_boundmessage(_A_func)
89 const std::auto_ptr<this_type> autodelete_this(
this);
96 T_unary_functor m_boundmessage;
111 template<
typename T_return,
typename T_unary_functor>
119 m_boundmessage(_A_func),
128 const std::auto_ptr<this_type> autodelete_this(
this);
130 Glib::Mutex::Lock lock(m_mutex);
136 m_cond.wait(m_mutex);
138 return m_bound_result.invoke();
143 Glib::Mutex::Lock lock(m_mutex);
145 m_bound_result = m_boundmessage();
152 T_unary_functor m_boundmessage;
153 sigc::bound_argument<typename sigc::type_trait<T_return>::type> m_bound_result;
168 template<
typename T_unary_functor>
176 m_boundmessage(_A_func)
184 const std::auto_ptr<this_type> autodelete_this(
this);
191 Glib::Mutex::Lock lock(m_mutex);
199 T_unary_functor m_boundmessage;