uLib-0.2
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Signal.h File Reference
#include <boost/typeof/typeof.hpp>
#include <boost/signals2/signal.hpp>
#include <boost/signals2/slot.hpp>
#include <boost/signals2/signal_type.hpp>
#include "Function.h"

Go to the source code of this file.

Data Structures

struct  uLib::Signal< T >
 
struct  uLib::detail::ConnectSignal< FuncT, arity >
 
struct  uLib::detail::ConnectSignal< FuncT, 0 >
 
struct  uLib::detail::ConnectSignal< FuncT, 1 >
 
struct  uLib::detail::ConnectSignal< FuncT, 2 >
 
struct  uLib::detail::ConnectSignal< FuncT, 3 >
 
struct  uLib::detail::ConnectSignal< FuncT, 4 >
 
struct  uLib::detail::ConnectSignal< FuncT, 5 >
 

Namespaces

 uLib
 
 uLib::detail
 

Macros

#define default(vlaue)
 
#define slots
 
#define signals   /*virtual void init_signals();*/ public
 
#define emit
 
#define SLOT(a)   BOOST_STRINGIZE(a)
 
#define SIGNAL(a)   BOOST_STRINGIZE(a)
 
#define _ULIB_DETAIL_SIGNAL_EMIT(_name,...)
 
#define ULIB_SIGNAL_EMIT(_name,...)   _ULIB_DETAIL_SIGNAL_EMIT(_name,__VA_ARGS__)
 

Typedefs

typedef
boost::signals2::signal_base 
uLib::SignalBase
 

Functions

template<typename FuncT >
SignalBase * uLib::NewSignal (FuncT f)
 
template<typename FuncT >
void uLib::ConnectSignal (SignalBase *sigb, FuncT slof, typename FunctionPointer< FuncT >::Object *receiver)
 

Macro Definition Documentation

#define _ULIB_DETAIL_SIGNAL_EMIT (   _name,
  ... 
)
Value:
static BOOST_AUTO(sig,this->findOrAddSignal(&_name)); \
sig->operator()(__VA_ARGS__);
#define _name
Definition: ObjectProps.h:61
#define default (   vlaue)
#define emit
#define SIGNAL (   a)    BOOST_STRINGIZE(a)
#define signals   /*virtual void init_signals();*/ public
#define SLOT (   a)    BOOST_STRINGIZE(a)
#define slots
#define ULIB_SIGNAL_EMIT (   _name,
  ... 
)    _ULIB_DETAIL_SIGNAL_EMIT(_name,__VA_ARGS__)

Utility macro to implement signal emission implementa una delle seguenti:

// metodo standard con cast // SignalBase * sig = this->findSignal((void (Ob1::*)(void))&Ob1::V0); typedef Signal<void()>::type SigT; if(sig) reinterpret_cast<SigT*>(sig)->operator()();

// cast automatico // static BOOST_AUTO(sig,this->findOrAddSignal(&Ob1::V0)); sig->operator()();