Aardvark.Base.Incremental


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 memberDescription
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
Fork me on GitHub