1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| struct adaptableSignal_flag{};
struct unAdaptableSignal_flag{};
template <class adaptable,class ... flags>
class TSignalHolder;
/* une classe utilisant des signaux renvoyant un type de retour donné
* et prenant deux arguments, mais pour laquelle on ne peut pas
* adapter le comportement du signal
*/
template<class Return, Arg1, Arg2>
class TSignalHolder<unAdaptableSignal, Return, Arg1, Arg2>
{
public:
typedef std::boost::signals2::signal<return(Arg1,Arg2) signal_type;
TSignalHolder(signal_type const & s): sig_(s)
private:
signal_type sig_;
};
/* La même classe, mais à au signal de laquelle on peut
* connecter d'autre fonctions / foncteur
*/
template<class Return, Arg1, Arg2>
class TSignalHolder<unAdaptableSignal, Return, Arg1, Arg2>
{
public:
typedef std::boost::signals2::signal<return(Arg1,Arg2)> signal_type;
typedef signal_type::signature_type signature_type;
TSignalHolder(signal_type const & s): sig_(s)
void connect(signature_type & fun){sig_.connect(fun);}
private:
signal_type sig_;
}; |
Partager