Enables reading of the current value during admission.
Enables reading of the current value during admission. Keeps track of written sources internally.
Base implementation for reactives, with Derived for scheduling, together with a ReName and containing a State
Enables the creation of other reactives
Enables the creation of other reactives
A reactive value is something that can be reevaluated
A reactive value is something that can be reevaluated
User facing low level API to access values in a dynamic context.
User facing low level API to access values in a dynamic context.
Encapsulates an action changing a single source.
Encapsulates an action changing a single source.
InnerTickets are used in Rescala to give capabilities to contexts during propagation.
InnerTickets are used in Rescala to give capabilities to contexts during propagation. ReevTicket is used during reevaluation, and AdmissionTicket during the initialization.
Common macro accessors for rescala.operator.SignalBundle.Signal and rescala.operator.EventBundle.Event
Common macro accessors for rescala.operator.SignalBundle.Signal and rescala.operator.EventBundle.Event
return type of the accessor
If no InnerTicket is found, then these implicits will search for a Scheduler, creating the reactives outside of any turn.
If no InnerTicket is found, then these implicits will search for a Scheduler, creating the reactives outside of any turn.
Source of (reactive) values.
Source of (reactive) values. State can only be accessed with a correct InnerTicket.
ReevTicket is given to the Derived reevaluate method and allows to access other reactives.
ReevTicket is given to the Derived reevaluate method and allows to access other reactives. The ticket tracks return values, such as dependencies, the value, and if the value should be propagated. Such usages make it unsuitable as an API for the user, where StaticTicket or DynamicTicket should be used instead.
Propagation engine that defines the basic data-types available to the user and creates turns for propagation handling
Propagation engine that defines the basic data-types available to the user and creates turns for propagation handling
The main task of the initializer is to handle creation of reactives, especially during an ongoing propagation.
The main task of the initializer is to handle creation of reactives, especially during an ongoing propagation. The formalization does not support this, to keep the complexity of the proofs in check.
User facing low level API to access values in a static context.
User facing low level API to access values in a static context.
The formalization uses a per device store mapping reactives to their inputs, values, and operator.
The formalization uses a per device store mapping reactives to their inputs, values, and operator. The operator is already handled by the common implementation, so we keep the value and inputs. The store mapping does not exist as a single object, but instead each reactive has this state.
As reactives can be created during propagation, any InnerTicket can be converted to a creation ticket.
As reactives can be created during propagation, any InnerTicket can be converted to a creation ticket.