sigx++  2.0.1
Public Types | Public Member Functions
sigx::signal_f< T_signal > Class Template Reference

Functor returning a sigx::signal_wrapper as a threadsafe signal wrapper. More...

#include <signal_f.h>

Inheritance diagram for sigx::signal_f< T_signal >:
sigx::signal_f_base sigx::nonassignable sigx::nonheapallocatable sigx::nonpointeraliasing

Public Types

typedef T_signal signal_type
 
typedef signal_f< signal_typeself_type
 

Public Member Functions

template<typename T_threadpriv >
 signal_f (const shared_dispatchable &_A_disp, Glib::Private< T_threadpriv > &_A_priv, signal_type T_threadpriv::*_A_sig)
 Constructs a signal functor from a thread private object's member signal of type T_signal. More...
 
template<typename T_dispatchable >
 signal_f (T_dispatchable &_A_obj, signal_type T_dispatchable::*_A_sig)
 Constructs a signal functor from a dispatchable's member signal of type T_signal. More...
 
template<typename T_obj >
 signal_f (const shared_dispatchable &_A_disp, T_obj &_A_obj, signal_type T_obj::*_A_sig)
 Constructs a signal functor from an object's member signal of type T_signal. More...
 
template<typename T_obj >
 signal_f (const shared_dispatchable &_A_disp, sigc::const_reference_wrapper< T_obj * > _A_obj, signal_type T_obj::*_A_sig)
 Constructs a signal functor from an object's member signal of type T_signal. Object instance is late bound. More...
 
template<typename T_obj >
 signal_f (const shared_dispatchable &_A_disp, sigc::reference_wrapper< T_obj * > _A_obj, signal_type T_obj::*_A_sig)
 
template<typename T_obj , typename T_functor >
 signal_f (const shared_dispatchable &_A_disp, sigc::const_reference_wrapper< T_obj * > _A_obj, const T_functor &_A_sig_func)
 Constructs a signal functor from a member functor returning a signal of type T_signal and a member functor's bound object. Object instance is late bound. More...
 
template<typename T_obj , typename T_functor >
 signal_f (const shared_dispatchable &_A_disp, sigc::reference_wrapper< T_obj * > _A_obj, const T_functor &_A_sig_func)
 
template<typename T_functor >
 signal_f (const shared_dispatchable &_A_disp, const T_functor &_A_sig_func)
 Constructs a signal functor from any functor returning a signal of type T_signal. More...
 
template<typename T_functor >
 signal_f (const T_functor &_A_sig_func)
 Constructs a signal functor from a dispatchable functor (i.e. a functor on a dispatchable's method) returning a signal of type T_signal. More...
 
signal_wrapper< signal_typeoperator() () const
 

Additional Inherited Members

Detailed Description

template<typename T_signal>
class sigx::signal_f< T_signal >

Functor returning a sigx::signal_wrapper as a threadsafe signal wrapper.

A signal functor is used to expose a thread's signals and replaces a traditional access function. It acts as a middle tier between two threads, creating a sigx::signal_wrapper to a signal existing in the server thread's context, handing it over to the calling thread.

A signal functor can be created from different signal sources:

Here are some examples for signal sources: From a thread private: Class MyThread has a signal "did something" in a thread private data. The class exposes this signal through a threadsafe signal wrapper.

class MyThread: public sigx::glib_threadable
{
protected:
typedef sigc::signal<void> signal_did_something_type;
public:
MyThread();
// expose signal "did_something"
private:
struct ThreadData
{
signal_did_something_type m_sigDidSomething;
};
Glib::Private<ThreadData> m_threadpriv;
};
MyThread::MyThread():
sigx::glib_threadable(),
// params: dispatchable, thread private key, signal pointer
signal_did_something(this, m_threadpriv, &ThreadData::m_sigDidSomething)
{}

From an object's member function, object instance is late bound: There is a window object that exposes a button's "clicked" signal through a threadsafe signal wrapper.

class TheGUI: public Gtk::Window, public sigx::glib_auto_dispatchable
{
public:
TheGUI();
public:
// expose Gtk::Button::signal_clicked
sigx::signal_f<Glib::SignalProxy0<void> > signal_button_clicked;
private:
Gtk::Button* m_btn;
};
TheGUI::TheGUI():
Gtk::Window(),
sigx::glib_auto_dispatchable(),
// set up signal functor with late object instance binding
signal_button_clicked(this, sigc::ref(m_btn), &Gtk::Button::signal_clicked),
m_btn()
{
// now object instance m_btn is pointing to is created,
// signal_button_clicked now has a valid object instance
m_btn = manage(new Gtk::Button("notify thread"));
add(*m_btn);
show_all_children();
}
Examples:
ipresolver/main.cpp.

Member Typedef Documentation

template<typename T_signal >
typedef signal_f<signal_type> sigx::signal_f< T_signal >::self_type
template<typename T_signal >
typedef T_signal sigx::signal_f< T_signal >::signal_type

Constructor & Destructor Documentation

template<typename T_signal >
template<typename T_threadpriv >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
Glib::Private< T_threadpriv > &  _A_priv,
signal_type T_threadpriv::*  _A_sig 
)
inline

Constructs a signal functor from a thread private object's member signal of type T_signal.

Parameters
_A_dispThe dispatchable to operate on.
_A_privKey to the thread private data
_A_sigpointer to the thread private object's member signal
template<typename T_signal >
template<typename T_dispatchable >
sigx::signal_f< T_signal >::signal_f ( T_dispatchable &  _A_obj,
signal_type T_dispatchable::*  _A_sig 
)
inline

Constructs a signal functor from a dispatchable's member signal of type T_signal.

Parameters
_A_objThe dispatchable to operate on and the object instance for _A_sig
_A_sigPointer to the _A_obj's member signal
template<typename T_signal >
template<typename T_obj >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
T_obj &  _A_obj,
signal_type T_obj::*  _A_sig 
)
inline

Constructs a signal functor from an object's member signal of type T_signal.

Parameters
_A_dispThe dispatchable to operate on.
_A_objThe object instance for _A_sig
_A_sigPointer to the _A_obj's member signal
template<typename T_signal >
template<typename T_obj >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
sigc::const_reference_wrapper< T_obj * >  _A_obj,
signal_type T_obj::*  _A_sig 
)
inline

Constructs a signal functor from an object's member signal of type T_signal. Object instance is late bound.

Parameters
_A_dispThe dispatchable to operate on.
_A_objPointer reference to the object for _A_sig
_A_sigPointer to the _A_obj's member signal
template<typename T_signal >
template<typename T_obj >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
sigc::reference_wrapper< T_obj * >  _A_obj,
signal_type T_obj::*  _A_sig 
)
inline
template<typename T_signal >
template<typename T_obj , typename T_functor >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
sigc::const_reference_wrapper< T_obj * >  _A_obj,
const T_functor &  _A_sig_func 
)
inline

Constructs a signal functor from a member functor returning a signal of type T_signal and a member functor's bound object. Object instance is late bound.

Parameters
_A_dispThe dispatchable to operate on.
_A_objpointer reference to the object for _A_sig_func
_A_sig_funcFunctor returning a signal of type T_signal; must take a T_obj* as argument, e.g. create the functor with sigc::mem_fun(&MyObj::signal_did_something)
template<typename T_signal >
template<typename T_obj , typename T_functor >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
sigc::reference_wrapper< T_obj * >  _A_obj,
const T_functor &  _A_sig_func 
)
inline
template<typename T_signal >
template<typename T_functor >
sigx::signal_f< T_signal >::signal_f ( const shared_dispatchable _A_disp,
const T_functor &  _A_sig_func 
)
inline

Constructs a signal functor from any functor returning a signal of type T_signal.

Parameters
_A_dispThe dispatchable to operate on.
_A_sig_funcFunctor returning a signal of type T_signal
template<typename T_signal >
template<typename T_functor >
sigx::signal_f< T_signal >::signal_f ( const T_functor &  _A_sig_func)
inlineexplicit

Constructs a signal functor from a dispatchable functor (i.e. a functor on a dispatchable's method) returning a signal of type T_signal.

Parameters
_A_sig_funcDispatchable functor returning a signal of type T_signal

Member Function Documentation

template<typename T_signal >
signal_wrapper<signal_type> sigx::signal_f< T_signal >::operator() ( ) const
inline
Returns
A threadsafe representation of a signal of type T_signal.
Note
Executed by any client thread.

References sigx::signal_f_base::m_disp, and sigx::signal_f_base::m_sigsource.


The documentation for this class was generated from the following file: