IAdaptiveObject
IAdaptiveObject represents the core interface for all
adaptive objects and contains everything necessary for
tracking OutOfDate flags and managing in-/outputs in the
dependency tree.
Since eager evalutation might be desirable in some scenarios
the interface also contains a Level representing the execution
order when evaluating inside a transaction and a function called
Mark allowing implementations to actually perform the evaluation.
Mark returns a bool since eager evaluation might cause the change
propagation process to exit early (if the actual value was unchanged)
In order to make adaptive objects easily identifiable all adaptive
objects must also provide a globally unique id (Id)
Instance members
Instance member | Description |
AllInputsProcessed(arg1)
Signature: obj -> unit
Modifiers: abstract
|
|
Id
Signature: int
Modifiers: abstract
|
the globally unique id for the adaptive object
|
InputChanged(arg1, arg2)
Signature: (obj * IAdaptiveObject) -> unit
Modifiers: abstract
|
|
Inputs
Signature: seq<IAdaptiveObject>
Modifiers: abstract
|
the adaptive inputs for the object
|
Level()
Signature: unit -> int
Modifiers: abstract
|
the level for an adaptive object represents the
maximal distance from an input cell in the depdency graph
Note that this level is entirely managed by the system
and shall not be accessed directly by users of the system.
|
Level()
Signature: unit -> unit
Modifiers: abstract
|
the level for an adaptive object represents the
maximal distance from an input cell in the depdency graph
Note that this level is entirely managed by the system
and shall not be accessed directly by users of the system.
|
Mark()
Signature: unit -> bool
Modifiers: abstract
|
Mark allows a specific implementation to
evaluate the cell during the change propagation process.
|
OutOfDate()
Signature: unit -> bool
Modifiers: abstract
|
the outOfDate flag for the object is true
whenever the object has been marked and shall
be set to false by specific implementations.
Note that this flag shall only be accessed when holding
a lock on the adaptive object (allowing for concurrency)
|
OutOfDate()
Signature: unit -> unit
Modifiers: abstract
|
the outOfDate flag for the object is true
whenever the object has been marked and shall
be set to false by specific implementations.
Note that this flag shall only be accessed when holding
a lock on the adaptive object (allowing for concurrency)
|
Outputs
Signature: VolatileCollection<IAdaptiveObject>
Modifiers: abstract
|
the adaptive outputs for the object which are recommended
to be represented by Weak references in order to allow for
unused parts of the graph to be garbage collected.
|
ReaderCount()
Signature: unit -> int
Modifiers: abstract
|
|
ReaderCount()
Signature: unit -> unit
Modifiers: abstract
|
|
Reevaluate()
Signature: unit -> bool
Modifiers: abstract
|
|
Reevaluate()
Signature: unit -> unit
Modifiers: abstract
|
|