libqi-api  release-2.5.3-2016-11-18
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Friends | List of all members
qi::SignalBase Class Reference

#include <signal.hpp>

Public Types

using OnSubscribers = boost::function< void(bool)>
 

Public Member Functions

 SignalBase (const Signature &signature, OnSubscribers onSubscribers=OnSubscribers())
 
 SignalBase (OnSubscribers onSubscribers=OnSubscribers())
 
virtual ~SignalBase ()
 
virtual qi::Signature signature () const
 
template<typename F >
SignalSubscriberconnect (boost::function< F > func)
 
SignalSubscriberconnect (const SignalSubscriber &s)
 
SignalSubscriberconnect (AnyObject object, const unsigned int slot)
 
SignalSubscriberconnect (AnyObject object, const std::string &slot)
 
bool disconnectAll ()
 
bool asyncDisconnectAll ()
 
bool disconnect (const SignalLink &link)
 
bool asyncDisconnect (const SignalLink &link)
 
virtual void trigger (const GenericFunctionParameters &params, MetaCallType callType=MetaCallType_Auto)
 
void setCallType (MetaCallType callType)
 Set the MetaCallType used by operator()(). More...
 
void operator() (qi::AutoAnyReference p1=qi::AutoAnyReference(), qi::AutoAnyReference p2=qi::AutoAnyReference(), qi::AutoAnyReference p3=qi::AutoAnyReference(), qi::AutoAnyReference p4=qi::AutoAnyReference(), qi::AutoAnyReference p5=qi::AutoAnyReference(), qi::AutoAnyReference p6=qi::AutoAnyReference(), qi::AutoAnyReference p7=qi::AutoAnyReference(), qi::AutoAnyReference p8=qi::AutoAnyReference())
 Trigger the signal with given arguments, and call type set by setCallType() More...
 
std::vector< SignalSubscribersubscribers ()
 
bool hasSubscribers ()
 
void _setSignature (const Signature &s)
 

Public Attributes

boost::shared_ptr
< SignalBasePrivate
_p
 

Static Public Attributes

static const SignalLink invalidSignalLink
 

Protected Types

using Trigger = boost::function< void(const GenericFunctionParameters &params, MetaCallType callType)>
 

Protected Member Functions

void callSubscribers (const GenericFunctionParameters &params, MetaCallType callType=MetaCallType_Auto)
 
void setTriggerOverride (Trigger trigger)
 
void setOnSubscribers (OnSubscribers onSubscribers)
 
void callOnSubscribe (bool v)
 
void createNewTrackLink (int &id, SignalLink *&trackLink)
 
void disconnectTrackLink (int id)
 

Friends

class SignalBasePrivate
 

Detailed Description

Definition at line 38 of file signal.hpp.

Member Typedef Documentation

using qi::SignalBase::OnSubscribers = boost::function<void(bool)>

Definition at line 41 of file signal.hpp.

using qi::SignalBase::Trigger = boost::function<void(const GenericFunctionParameters& params, MetaCallType callType)>
protected

Definition at line 105 of file signal.hpp.

Constructor & Destructor Documentation

qi::SignalBase::SignalBase ( const Signature signature,
OnSubscribers  onSubscribers = OnSubscribers() 
)
explicit
qi::SignalBase::SignalBase ( OnSubscribers  onSubscribers = OnSubscribers())
virtual qi::SignalBase::~SignalBase ( )
virtual

Member Function Documentation

void qi::SignalBase::_setSignature ( const Signature s)
bool qi::SignalBase::asyncDisconnect ( const SignalLink link)

Disconnect a SignalHandler without waiting for it.

Same as disconnect, but this method does not block.

bool qi::SignalBase::asyncDisconnectAll ( )

Disconnect all callbacks from signal without waiting for them.

This function does not block.

void qi::SignalBase::callOnSubscribe ( bool  v)
protected
void qi::SignalBase::callSubscribers ( const GenericFunctionParameters params,
MetaCallType  callType = MetaCallType_Auto 
)
protected
template<typename F >
SignalSubscriber & qi::SignalBase::connect ( boost::function< F >  func)

Definition at line 72 of file signal.hxx.

SignalSubscriber& qi::SignalBase::connect ( const SignalSubscriber s)
SignalSubscriber& qi::SignalBase::connect ( AnyObject  object,
const unsigned int  slot 
)
SignalSubscriber& qi::SignalBase::connect ( AnyObject  object,
const std::string &  slot 
)
void qi::SignalBase::createNewTrackLink ( int &  id,
SignalLink *&  trackLink 
)
protected
bool qi::SignalBase::disconnect ( const SignalLink link)

Disconnect a SignalHandler.

The associated callback will not be called anymore as soon as this function returns.

This method blocks until all the already running callbacks are finished.

bool qi::SignalBase::disconnectAll ( )

Disconnect all callbacks from signal.

This function will block until all callbacks are finished.

void qi::SignalBase::disconnectTrackLink ( int  id)
protected
bool qi::SignalBase::hasSubscribers ( )

Trigger the signal with given arguments, and call type set by setCallType()

void qi::SignalBase::setCallType ( MetaCallType  callType)

Set the MetaCallType used by operator()().

void qi::SignalBase::setOnSubscribers ( OnSubscribers  onSubscribers)
protected
void qi::SignalBase::setTriggerOverride ( Trigger  trigger)
protected
virtual qi::Signature qi::SignalBase::signature ( ) const
virtual
std::vector<SignalSubscriber> qi::SignalBase::subscribers ( )
virtual void qi::SignalBase::trigger ( const GenericFunctionParameters params,
MetaCallType  callType = MetaCallType_Auto 
)
virtual

Trigger the signal with given type-erased parameters.

Parameters
paramsthe signal arguments
callTypespecify how to invoke subscribers. Used in combination with each subscriber's MetaCallType to chose between synchronous and asynchronous call. The combination rule is to honor subscriber's override, then callType, then signal's callType and default to asynchronous

Friends And Related Function Documentation

friend class SignalBasePrivate
friend

Definition at line 116 of file signal.hpp.

Member Data Documentation

boost::shared_ptr<SignalBasePrivate> qi::SignalBase::_p

Definition at line 115 of file signal.hpp.

const SignalLink qi::SignalBase::invalidSignalLink
static

Definition at line 103 of file signal.hpp.


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