libqi-api  2.4.3.28
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Macros
signal.hxx File Reference
#include <qi/trackable.hpp>
#include <qi/type/detail/manageable.hpp>
#include <boost/bind.hpp>
#include <qi/type/detail/functionsignature.hxx>

Go to the source code of this file.

Classes

class  qi::detail::BounceToSignalBase< T >
 

Namespaces

 qi
 
 qi::detail
 

Macros

#define _QITYPE_DETAILS_SIGNAL_HXX_
 
#define genConnect(n, ATYPEDECL, ATYPES, ADECL, AUSE, comma)
 
#define pushArg(z, n, _)   args.push_back(AutoAnyReference(p ##n));
 
#define makeBounce(n, argstypedecl, argstype, argsdecl, argsues, comma)
 

Macro Definition Documentation

#define _QITYPE_DETAILS_SIGNAL_HXX_

Definition at line 8 of file signal.hxx.

#define genConnect (   n,
  ATYPEDECL,
  ATYPES,
  ADECL,
  AUSE,
  comma 
)
Value:
template <typename T> \
template <typename F, typename P comma ATYPEDECL> \
SignalSubscriber& SignalF<T>::connect(const F& func, \
const P& p comma ADECL) \
{ \
int curId; \
SignalLink* trackLink; \
createNewTrackLink(curId, trackLink); \
SignalSubscriber& s = _connectMaybeActor<P>( \
p, qi::bind<T>(func, p comma AUSE), \
qi::track(boost::function<void()>(boost::bind( \
&SignalF<T>::disconnectTrackLink, this, curId)), \
boost::weak_ptr<SignalBasePrivate>(_p))); \
*trackLink = s; \
return s; \
}
boost::function< RF > bind(const AF &fun,...)
boost::function< F > track(const boost::function< F > &f, const ARG0 &arg0)
Wrap given function f with a tracking check on arg0, which must be a weak pointer or a Trackable inst...
Definition: trackable.hxx:206
qi::uint64_t SignalLink
Definition: signal.hpp:33

Definition at line 48 of file signal.hxx.

#define makeBounce (   n,
  argstypedecl,
  argstype,
  argsdecl,
  argsues,
  comma 
)
Value:
template<typename R comma argstypedecl> \
class BounceToSignalBase<R(argstype)> { \
public: \
BounceToSignalBase(SignalBase& signalBase) : signalBase(signalBase) {} \
R operator()(argsdecl) { \
BOOST_PP_REPEAT(n, pushArg, _); \
signalBase.trigger(args); \
} \
private: \
SignalBase& signalBase; \
};
#define pushArg(z, n, _)
Definition: signal.hxx:149
std::vector< AnyReference > AnyReferenceVector

Definition at line 151 of file signal.hxx.

#define pushArg (   z,
  n,
  _ 
)    args.push_back(AutoAnyReference(p ##n));

Definition at line 149 of file signal.hxx.