Live Cells C++
Reactive Programming for C++
Loading...
Searching...
No Matches
live_cells::static_mutable_compute_cell_state< F, R > Class Template Reference

Maintains the state for a static_mutable_compute_cell. More...

#include <static_mutable_compute_cell.hpp>

Inheritance diagram for live_cells::static_mutable_compute_cell_state< F, R >:
Collaboration diagram for live_cells::static_mutable_compute_cell_state< F, R >:

Public Member Functions

template<typename T , typename U >
 static_mutable_compute_cell_state (key_ref key, T &&compute, U &&reverse, const std::unordered_set< cell > &arguments)
 Create the state for a static_mutable_compute cell.
 
- Public Member Functions inherited from live_cells::mutable_compute_cell_state< std::invoke_result_t< F > >
 mutable_compute_cell_state (key_ref key, const std::unordered_set< cell > &arguments)
 Create the state for a mutable computed cell.
 
std::invoke_result_t< F > value ()
 Get the value of the cell.
 
void value (std::invoke_result_t< F > 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 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

typedef std::invoke_result_t< F > value_type
 
typedef mutable_compute_cell_state< value_type > parent
 

Protected Member Functions

value_type compute () override
 Compute the value of the cell as a function of the arguments.
 
void reverse_compute (value_type value) override
 Call the reverse computation function of the cell.
 
void init () override
 Add this state as an observer to the compute function arguments.
 
- Protected Member Functions inherited from live_cells::mutable_compute_cell_state< std::invoke_result_t< F > >
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 &notify_will_update)
 Handle a observer::will_update call.
 
void handle_will_update (const std::invocable auto &pre_update, const std::invocable auto &notify_will_update)
 Handle a observer::will_update call.
 
void handle_update (bool changed, const std::invocable< bool > auto &notify_update)
 Handle an observer::update call.
 
void handle_update (bool changed, const std::invocable auto &did_change, const std::invocable< bool > auto &notify_update, const std::invocable auto &post_update)
 Handle an observer::update call.
 

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.
 
- 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< std::invoke_result_t< F > >
std::unordered_set< cell > arguments
 Set of argument cells referenced by the value computation function.
 
bool reverse
 Is the value of the cell being set, and hence a reverse computation being performed?
 
bool computed
 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?
 

Detailed Description

template<std::invocable F, typename R>
class live_cells::static_mutable_compute_cell_state< F, R >

Maintains the state for a static_mutable_compute_cell.

Member Typedef Documentation

◆ parent

template<std::invocable F, typename R >
typedef mutable_compute_cell_state<value_type> live_cells::static_mutable_compute_cell_state< F, R >::parent
protected

Shorthand for parent class

Constructor & Destructor Documentation

◆ static_mutable_compute_cell_state()

template<std::invocable F, typename R >
template<typename T , typename U >
live_cells::static_mutable_compute_cell_state< F, R >::static_mutable_compute_cell_state ( key_ref key,
T && compute,
U && reverse,
const std::unordered_set< cell > & arguments )
inline

Create the state for a static_mutable_compute cell.

Parameters
keyKey identifying cell
computeValue computation function
reverseReverse computation function
argumentsSet of argument cells referenced in compute

Member Function Documentation

◆ compute()

template<std::invocable F, typename R >
value_type live_cells::static_mutable_compute_cell_state< F, R >::compute ( )
inlineoverrideprotectedvirtual

Compute the value of the cell as a function of the arguments.

Returns
The computed value.

Implements live_cells::mutable_compute_cell_state< std::invoke_result_t< F > >.

◆ init()

template<std::invocable F, typename R >
void live_cells::static_mutable_compute_cell_state< F, R >::init ( )
inlineoverrideprotectedvirtual

Add this state as an observer to the compute function arguments.

Reimplemented from live_cells::mutable_compute_cell_state< std::invoke_result_t< F > >.

◆ reverse_compute()

template<std::invocable F, typename R >
void live_cells::static_mutable_compute_cell_state< F, R >::reverse_compute ( value_type value)
inlineoverrideprotectedvirtual

Call the reverse computation function of the cell.

Parameters
valueThe value assigned to the cell.

Implements live_cells::mutable_compute_cell_state< std::invoke_result_t< F > >.


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