Live Cells C++
Reactive Programming for C++
|
A dynamic_mutable_compute_cell_state
that only notifies the observers of the cell if its value has actually changed.
More...
#include <dynamic_mutable_compute_cell.hpp>
Additional Inherited Members | |
Public Types inherited from live_cells::cell_state | |
typedef std::shared_ptr< cell_state > | ref |
Shared pointer to a cell_state . | |
Public Types inherited from live_cells::observer | |
typedef std::shared_ptr< observer > | ref |
Shared pointer to an observer . | |
Public Member Functions inherited from live_cells::changes_only_cell_state< dynamic_mutable_compute_cell_state< F, R > > | |
void | will_update (const key_ref &k) override |
void | update (const key_ref &k, bool changed) override |
Public Member Functions inherited from live_cells::dynamic_mutable_compute_cell_state< F, R, ValueType > | |
template<typename T , typename U > | |
dynamic_mutable_compute_cell_state (key_ref key, T &&compute, U &&reverse) | |
Create the state for a dynamic mutable computed cell. | |
Public Member Functions inherited from live_cells::mutable_compute_cell_state< T > | |
mutable_compute_cell_state (key_ref key, const std::unordered_set< cell > &arguments) | |
Create the state for a mutable computed cell. | |
T | value () |
Get the value of the cell. | |
void | value (T value) |
Set the value of the cell. | |
void | will_update (const key_ref &k) override |
Notifies this observer that the value of the Cell identified by k is going to change. | |
void | update (const key_ref &k, bool changed) override |
Notifies this observer that the value of the Cell identified by k has changed. | |
void | init () override |
Add this state as an observer to the compute function arguments. | |
void | pause () override |
Remove this state from the observers of the compute function arguments. | |
Public Member Functions inherited from live_cells::mutable_cell_state< T > | |
mutable_cell_state (key_ref key, T value) | |
Create a mutable cell state with the value initialized to value. | |
T | value () |
Get the value of the cell. | |
void | value (T value) |
Set the value of the cell and notify its observers. | |
cell_state (key_ref k) | |
Create a cell state with a given key. | |
Public Member Functions inherited from live_cells::cell_state | |
cell_state (key_ref k) | |
Create a cell state with a given key. | |
cell_state & | operator= (const cell_state &other)=delete |
virtual void | add_observer (observer::ref o) |
Add an observer to the cell's set of observers. | |
virtual void | remove_observer (observer::ref o) |
Remove an observer from the cell's set of observers. | |
virtual void | notify_will_update () |
Notify the observers that the cell's value will change. | |
virtual void | notify_update (bool did_change=true) |
Notify the observers that the cell's value has changed. | |
Protected Types inherited from live_cells::dynamic_mutable_compute_cell_state< F, R, ValueType > | |
typedef ValueType | value_type |
typedef mutable_compute_cell_state< ValueType > | parent |
Shorthand for parent class. | |
Protected Member Functions inherited from live_cells::dynamic_mutable_compute_cell_state< F, R, ValueType > | |
ValueType | compute () override |
Compute the value of the cell as a function of its argument cells. | |
void | reverse_compute (ValueType value) override |
Protected Member Functions inherited from live_cells::mutable_compute_cell_state< T > | |
virtual void | reverse_compute (T value)=0 |
Perform the reverse computation. | |
std::shared_ptr< observer > | observer_ptr () |
Get an observer::ref for this, that can be passed to add_observer() and remove_observer() of the Cell concept. | |
Protected Member Functions inherited from live_cells::mutable_cell_state< T > | |
void | silent_set (T value) |
Set the cell's value without notifying observers. | |
void | add_to_batch () |
Add this state to the list of mutable cells that were updating during the current batch update. | |
Protected Member Functions inherited from live_cells::cell_state | |
bool | is_active () const |
Does the cell have at least one observer? | |
Protected Member Functions inherited from live_cells::observer_cell_state | |
void | init_observer_state () |
Initialize the cell observation state. | |
void | pause_observer_state () |
Pause the cell observation state. | |
void | handle_will_update (const std::invocable auto ¬ify_will_update) |
Handle a observer::will_update call. | |
void | handle_will_update (const std::invocable auto &pre_update, const std::invocable auto ¬ify_will_update) |
Handle a observer::will_update call. | |
void | handle_update (bool changed, const std::invocable< bool > auto ¬ify_update) |
Handle an observer::update call. | |
void | handle_update (bool changed, const std::invocable auto &did_change, const std::invocable< bool > auto ¬ify_update, const std::invocable auto &post_update) |
Handle an observer::update call. | |
Static Protected Member Functions inherited from live_cells::mutable_cell_state< T > | |
static bool | is_batch_update () |
Is a batch update of mutable cells currently in effect? | |
Protected Attributes inherited from live_cells::mutable_compute_cell_state< T > | |
std::unordered_set< cell > | arguments |
Set of argument cells referenced by the value computation function. | |
bool | reverse = false |
Is the value of the cell being set, and hence a reverse computation being performed? | |
bool | computed = true |
Is the cell's value the computed value (true) or a value that was set (false). | |
Protected Attributes inherited from live_cells::cell_state | |
key_ref | key_ |
Key identifying the cell corresponding to this state. | |
std::unordered_map< observer::ref, std::size_t > | observers |
The set of observers observing changes to the values in the cell corresponding to this state. | |
Protected Attributes inherited from live_cells::observer_cell_state | |
bool | stale = true |
Does the value have to be recomputed? | |
bool | updating = false |
Are the argument cells in the process of updating their values? | |
A dynamic_mutable_compute_cell_state
that only notifies the observers of the cell if its value has actually changed.