Sparkle 0.0.1
Loading...
Searching...
No Matches
spk::ObservableValue< TType > Class Template Reference

Stores a value and notifies subscribers whenever it changes. More...

#include <spk_observable_value.hpp>

Collaboration diagram for spk::ObservableValue< TType >:
Collaboration graph

Public Types

using Contract = spk::TContractProvider<TType>::Contract
 Contract type for subscriptions.
using Job = spk::TContractProvider<TType>::Job
 Job type dispatched on updates.

Public Member Functions

 ObservableValue ()=default
 Builds an observable with a default-initialized value.
 ObservableValue (const TType &p_value)
 Builds an observable with an initial value copy.
 ObservableValue (TType &&p_value)
 Builds an observable by moving the initial value.
 operator TType () const
 Converts to the stored value type.
const TType & get () const
 Returns the stored value.
void set (const TType &p_value)
 Sets the value and notifies subscribers.
void set (TType &&p_value)
 Moves a value in and notifies subscribers.
spk::TContractProvider< TType > & onEdition ()
 Returns the contract provider for mutation events.
const spk::TContractProvider< TType > & onEdition () const
 Returns the contract provider for mutation events.
ObservableValueoperator= (const TType &p_value)
 Assigns a new value and notifies subscribers.
ObservableValueoperator= (TType &&p_value)
 Moves a new value in and notifies subscribers.
ObservableValueoperator+= (const TType &p_value)
 Adds a value in-place and notifies subscribers.
ObservableValueoperator-= (const TType &p_value)
 Subtracts a value in-place and notifies subscribers.
ObservableValueoperator*= (const TType &p_value)
 Multiplies by a value in-place and notifies subscribers.
ObservableValueoperator/= (const TType &p_value)
 Divides by a value in-place and notifies subscribers.
ObservableValueoperator%= (const TType &p_value)
 Applies modulo in-place and notifies subscribers.
ObservableValueoperator&= (const TType &p_value)
 Applies bitwise AND in-place and notifies subscribers.
ObservableValueoperator|= (const TType &p_value)
 Applies bitwise OR in-place and notifies subscribers.
ObservableValueoperator^= (const TType &p_value)
 Applies bitwise XOR in-place and notifies subscribers.
ObservableValueoperator<<= (const TType &p_value)
 Applies left shift in-place and notifies subscribers.
ObservableValueoperator>>= (const TType &p_value)
 Applies right shift in-place and notifies subscribers.

Detailed Description

template<typename TType>
class spk::ObservableValue< TType >

Stores a value and notifies subscribers whenever it changes.

Template Parameters
TTypeValue type to observe.
See also
TContractProvider
score.onEdition().connect([](const int &value) { // ... });
score = 10;
Stores a value and notifies subscribers whenever it changes.
Definition spk_observable_value.hpp:22

Constructor & Destructor Documentation

◆ ObservableValue() [1/2]

template<typename TType>
spk::ObservableValue< TType >::ObservableValue ( const TType & p_value)
inlineexplicit

Builds an observable with an initial value copy.

Parameters
p_valueInitial value.

◆ ObservableValue() [2/2]

template<typename TType>
spk::ObservableValue< TType >::ObservableValue ( TType && p_value)
inlineexplicit

Builds an observable by moving the initial value.

Parameters
p_valueInitial value to move.

Member Function Documentation

◆ get()

template<typename TType>
const TType & spk::ObservableValue< TType >::get ( ) const
inline

Returns the stored value.

Returns
Const reference to the current value.

◆ onEdition() [1/2]

template<typename TType>
spk::TContractProvider< TType > & spk::ObservableValue< TType >::onEdition ( )
inline

Returns the contract provider for mutation events.

Returns
Mutable contract provider.

◆ onEdition() [2/2]

template<typename TType>
const spk::TContractProvider< TType > & spk::ObservableValue< TType >::onEdition ( ) const
inline

Returns the contract provider for mutation events.

Returns
Const contract provider.

◆ operator TType()

template<typename TType>
spk::ObservableValue< TType >::operator TType ( ) const
inline

Converts to the stored value type.

Returns
Copy of the current value.

◆ operator%=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator%= ( const TType & p_value)
inline

Applies modulo in-place and notifies subscribers.

Parameters
p_valueValue to modulo by.
Returns
Reference to this observable.

◆ operator&=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator&= ( const TType & p_value)
inline

Applies bitwise AND in-place and notifies subscribers.

Parameters
p_valueValue to AND with.
Returns
Reference to this observable.

◆ operator*=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator*= ( const TType & p_value)
inline

Multiplies by a value in-place and notifies subscribers.

Parameters
p_valueValue to multiply by.
Returns
Reference to this observable.

◆ operator+=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator+= ( const TType & p_value)
inline

Adds a value in-place and notifies subscribers.

Parameters
p_valueValue to add.
Returns
Reference to this observable.

◆ operator-=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator-= ( const TType & p_value)
inline

Subtracts a value in-place and notifies subscribers.

Parameters
p_valueValue to subtract.
Returns
Reference to this observable.

◆ operator/=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator/= ( const TType & p_value)
inline

Divides by a value in-place and notifies subscribers.

Parameters
p_valueValue to divide by.
Returns
Reference to this observable.

◆ operator<<=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator<<= ( const TType & p_value)
inline

Applies left shift in-place and notifies subscribers.

Parameters
p_valueShift amount/value.
Returns
Reference to this observable.

◆ operator=() [1/2]

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator= ( const TType & p_value)
inline

Assigns a new value and notifies subscribers.

Parameters
p_valueNew value.
Returns
Reference to this observable.

◆ operator=() [2/2]

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator= ( TType && p_value)
inline

Moves a new value in and notifies subscribers.

Parameters
p_valueNew value to move.
Returns
Reference to this observable.

◆ operator>>=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator>>= ( const TType & p_value)
inline

Applies right shift in-place and notifies subscribers.

Parameters
p_valueShift amount/value.
Returns
Reference to this observable.

◆ operator^=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator^= ( const TType & p_value)
inline

Applies bitwise XOR in-place and notifies subscribers.

Parameters
p_valueValue to XOR with.
Returns
Reference to this observable.

◆ operator|=()

template<typename TType>
ObservableValue & spk::ObservableValue< TType >::operator|= ( const TType & p_value)
inline

Applies bitwise OR in-place and notifies subscribers.

Parameters
p_valueValue to OR with.
Returns
Reference to this observable.

◆ set() [1/2]

template<typename TType>
void spk::ObservableValue< TType >::set ( const TType & p_value)
inline

Sets the value and notifies subscribers.

Parameters
p_valueNew value.
Here is the caller graph for this function:

◆ set() [2/2]

template<typename TType>
void spk::ObservableValue< TType >::set ( TType && p_value)
inline

Moves a value in and notifies subscribers.

Parameters
p_valueNew value to move.

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