dynamicgraph::Signal< T, Time > Class Template Reference

Signals link I/O ports of entities. They can be constant-valued signals, or copy the value of a heap variable, or evaluated as a function. See SignalPtr and SignalTimeDependent for other types of signals, and SignalArray for a way of grouping them. More...

#include <dynamic-graph/signal.h>

Inheritance diagram for dynamicgraph::Signal< T, Time >:
Collaboration diagram for dynamicgraph::Signal< T, Time >:

List of all members.

Public Types

typedef int * Mutex
typedef int * MutexError

Public Member Functions

 Signal (std::string name)
virtual ~Signal ()
virtual void get (std::ostream &value) const
virtual void set (std::istringstream &value)
virtual void trace (std::ostream &os) const
virtual void setConstant (const T &t)
virtual void setReference (const T *t, Mutex *mutexref=NULL)
virtual void setReferenceNonConstant (T *t, Mutex *mutexref=NULL)
virtual void setFunction (boost::function2< T &, T &, Time > t, Mutex *mutexref=NULL)
bool getKeepReference ()
void setKeepReference (const bool &b)
virtual const T & access (const Time &t)
virtual void recompute (const Time &t)
virtual const T & accessCopy () const
virtual std::ostream & display (std::ostream &os) const
virtual const T & operator() (const Time &t)
virtual Signal< T, Time > & operator= (const T &t)
 operator const T & () const
virtual void getClassName (std::string &aClassName) const
virtual void checkCompatibility ()

Protected Types

enum  SignalType {
  CONSTANT,
  REFERENCE,
  REFERENCE_NON_CONST,
  FUNCTION
}

Protected Attributes

SignalType signalType
Tcopy1
Tcopy2
T * Tcopy
bool copyInit
const T * Treference
T * TreferenceNonConst
boost::function2< T &, T &, Time > Tfunction
bool keepReference
MutexproviderMutex

Static Protected Attributes

static const SignalType SIGNAL_TYPE_DEFAULT = CONSTANT
static const bool KEEP_REFERENCE_DEFAULT = false

Detailed Description

template<class T, class Time>
class dynamicgraph::Signal< T, Time >

Signals link I/O ports of entities. They can be constant-valued signals, or copy the value of a heap variable, or evaluated as a function. See SignalPtr and SignalTimeDependent for other types of signals, and SignalArray for a way of grouping them.

There are several ways to specify the value output by a signal:

  • using the function setConstant(T) to set the value of the signal to T;
  • using the function setReference(mutex, T*) to set the value from a pointer, whose access is restricted by a mutex;
  • using the function setFunction(boost::function2) that will be called when the signal's value is accessed.

Member Typedef Documentation

template<class T, class Time>
typedef int* dynamicgraph::Signal< T, Time >::Mutex
template<class T, class Time>
typedef int* dynamicgraph::Signal< T, Time >::MutexError

Member Enumeration Documentation

template<class T, class Time>
enum dynamicgraph::Signal::SignalType [protected]
Enumerator:
CONSTANT 
REFERENCE 
REFERENCE_NON_CONST 
FUNCTION 

Constructor & Destructor Documentation

template<class T , class Time >
dynamicgraph::Signal< T, Time >::Signal ( std::string  name)
template<class T, class Time>
virtual dynamicgraph::Signal< T, Time >::~Signal ( ) [inline, virtual]

Member Function Documentation

template<class T, class Time>
virtual void dynamicgraph::Signal< T, Time >::checkCompatibility ( ) [inline, virtual]
template<class T , class Time >
std::ostream & dynamicgraph::Signal< T, Time >::display ( std::ostream &  os) const [virtual]
template<class T , class Time >
void dynamicgraph::Signal< T, Time >::get ( std::ostream &  value) const [virtual]

Reimplemented from dynamicgraph::SignalBase< Time >.

template<class T, class Time>
virtual void dynamicgraph::Signal< T, Time >::getClassName ( std::string &  aClassName) const [inline, virtual]

Reimplemented from dynamicgraph::SignalBase< Time >.

template<class T, class Time>
bool dynamicgraph::Signal< T, Time >::getKeepReference ( ) [inline]
template<class T, class Time>
dynamicgraph::Signal< T, Time >::operator const T & ( ) const [inline]
template<class T, class Time>
virtual const T& dynamicgraph::Signal< T, Time >::operator() ( const Time &  t) [inline, virtual]
template<class T, class Time >
Signal< T, Time > & dynamicgraph::Signal< T, Time >::operator= ( const T &  t) [virtual]
template<class T, class Time>
virtual void dynamicgraph::Signal< T, Time >::recompute ( const Time &  t) [inline, virtual]

Reimplemented from dynamicgraph::SignalBase< Time >.

template<class T , class Time >
void dynamicgraph::Signal< T, Time >::set ( std::istringstream &  value) [virtual]
template<class T, class Time >
void dynamicgraph::Signal< T, Time >::setConstant ( const T &  t) [virtual]
template<class T, class Time>
void dynamicgraph::Signal< T, Time >::setFunction ( boost::function2< T &, T &, Time >  t,
Mutex mutexref = NULL 
) [virtual]
template<class T, class Time>
void dynamicgraph::Signal< T, Time >::setKeepReference ( const bool &  b) [inline]
template<class T, class Time >
void dynamicgraph::Signal< T, Time >::setReference ( const T *  t,
Mutex mutexref = NULL 
) [virtual]
template<class T, class Time >
void dynamicgraph::Signal< T, Time >::setReferenceNonConstant ( T *  t,
Mutex mutexref = NULL 
) [virtual]
template<class T , class Time >
void dynamicgraph::Signal< T, Time >::trace ( std::ostream &  os) const [virtual]

Member Data Documentation

template<class T, class Time>
bool dynamicgraph::Signal< T, Time >::copyInit [protected]
template<class T, class Time>
const bool dynamicgraph::Signal< T, Time >::KEEP_REFERENCE_DEFAULT = false [static, protected]
template<class T, class Time>
Mutex* dynamicgraph::Signal< T, Time >::providerMutex [protected]
template<class T, class Time>
const SignalType dynamicgraph::Signal< T, Time >::SIGNAL_TYPE_DEFAULT = CONSTANT [static, protected]
template<class T, class Time>
SignalType dynamicgraph::Signal< T, Time >::signalType [protected]
template<class T, class Time>
T* dynamicgraph::Signal< T, Time >::Tcopy [protected]
template<class T, class Time>
T dynamicgraph::Signal< T, Time >::Tcopy1 [protected]
template<class T, class Time>
T dynamicgraph::Signal< T, Time >::Tcopy2 [protected]
template<class T, class Time>
boost::function2<T&,T&,Time> dynamicgraph::Signal< T, Time >::Tfunction [protected]
template<class T, class Time>
const T* dynamicgraph::Signal< T, Time >::Treference [protected]
template<class T, class Time>
T* dynamicgraph::Signal< T, Time >::TreferenceNonConst [protected]