31#include <dspatch/Signal.h>
61 void SetSignalCount(
int signalCount );
62 int GetSignalCount()
const;
64 Signal& GetSignal(
int signalIndex );
66 bool HasValue(
int signalIndex )
const;
68 template <
class ValueType>
69 ValueType* GetValue(
int signalIndex );
71 template <
class ValueType>
72 bool SetValue(
int signalIndex, ValueType
const& newValue );
74 template <
class ValueType>
75 bool MoveValue(
int signalIndex, ValueType&& newValue );
77 bool SetSignal(
int toSignalIndex,
Signal const& fromSignal );
78 bool MoveSignal(
int toSignalIndex,
Signal& fromSignal );
80 void ClearAllValues();
82 std::type_info
const& GetType(
int signalIndex )
const;
85 std::deque<Signal> _signals;
87 std::unique_ptr<internal::SignalBus> p;
90template <
class ValueType>
91ValueType* SignalBus::GetValue(
int signalIndex )
93 if ( (
size_t)signalIndex < _signals.size() )
95 return _signals[signalIndex].GetValue<ValueType>();
103template <
class ValueType>
104bool SignalBus::SetValue(
int signalIndex, ValueType
const& newValue )
106 if ( (
size_t)signalIndex < _signals.size() )
108 _signals[signalIndex].SetValue( newValue );
117template <
class ValueType>
118bool SignalBus::MoveValue(
int signalIndex, ValueType&& newValue )
120 if ( (
size_t)signalIndex < _signals.size() )
122 _signals[signalIndex].MoveValue( std::move( newValue ) );
Value container used to carry data between components.