set to true if the PropagationElement is one that can break or make dependency cycles in the dynamic dependency graph managed by the PropagationComponent basically, set to true if the determiningElement is not in the same component and if this PropagationElement belongs to a cycle in the static dependency graph
set to true if the PropagationElement is one that can break or make dependency cycles in the dynamic dependency graph managed by the PropagationComponent basically, set to true if the determiningElement is not in the same component and if this PropagationElement belongs to a cycle in the static dependency graph
the position in the topological sort
the position in the topological sort
it gives the unique ID of the PropagationElement.
it gives the unique ID of the PropagationElement. those uniqueID are expected to start at 0 and to increase continuously An exception is tolerated: UniqueID is set to -1 if the Propagation Element is not mentioned in the propagation structure, such as for constants yet is mentioned in the dependencies of registered propagation elements
Checks that node have correct reference to each othe.
Checks that node have correct reference to each othe. Nodes are expected to know their successors and predecessors. This is expected to be consistent between several nodes.
This is the debug procedure through which propagation element can redundantly check that the incremental computation they perform through the performPropagation method is correct overriding this method is optional, so an empty body is provided by default
This is the debug procedure through which propagation element can redundantly check that the incremental computation they perform through the performPropagation method is correct overriding this method is optional, so an empty body is provided by default
performs a self-check on the ordering, use for testing
performs a self-check on the ordering, use for testing
this refers to the propagationComponent that contains the PropagationElement.
this refers to the propagationComponent that contains the PropagationElement. it is managed by the propagation structure
this sets the value of IsBoundary according to the definition of this variable
this sets the value of IsBoundary according to the definition of this variable
the value of IsBoundary
sorts DAG nodes according to dependencies.
sorts DAG nodes according to dependencies. first position is set to zero. this throws an exception CycleException in case a cycle is detected
the autosort status
the variable that influence on the dependencies of the proapgation element these are propagated first to constitute the dynamic propagatoin graph
the variable that influence on the dependencies of the proapgation element these are propagated first to constitute the dynamic propagatoin graph
This returns the dot node to display on the DOT output for the node.
This returns the dot node to display on the DOT output for the node. Only the argument of the nodes example: "[label= \"toto\" shape=diamond color=red]"
returns a reference to the propagationStructure where the PropagationElement is registered
returns a reference to the propagationStructure where the PropagationElement is registered
through this method, the PropagationElement must declare which PropagationElement it is listening to in the static dependency graph.
through this method, the PropagationElement must declare which PropagationElement it is listening to in the static dependency graph. The result must be stable after the call to setupPropagationStructure. to override
through this method, the PropagationElement must declare which PropagationElement listen to it in the static dependency graph.
through this method, the PropagationElement must declare which PropagationElement listen to it in the static dependency graph. The result must be stable after the call to setupPropagationStructure. to override
set to true if the PropagationElement is scheduled for propagation, false otherwise.
set to true if the PropagationElement is scheduled for propagation, false otherwise. this is managed by the PropagationElement
to notify that an edge has been added between two nodes.
to notify that an edge has been added between two nodes. this will trigger a re-ordering of the nodes in the topological sort if it is activated. The reordering might lead to an exception CycleException in case there is a cycle in the graph We expect the graph to be updated prior to calling this method notice that you do not need to notify edge deletion.
this is the propagation method that should be overridden by propagation elements.
this is the propagation method that should be overridden by propagation elements. notice that it is only called in a propagation wave if: 1: it has been registered for propagation since the last time it was propagated 2: it is included in the propagation wave: partial propagation wave do not propagate all propagation elements; it only propagates the ones that come in the predecessors of the targeted propagation element overriding this method is optional, so an empty body is provided by default
Performs the propagation, and some bookkeeping around it.
Performs the propagation, and some bookkeeping around it.
must belong to the statically listened elements.
must belong to the statically listened elements. cannot be added to the dynamically listened ones (it is added through this method, so you cannot remove it)
the element that determines the dynamic dependencies of the propagation element
an additional value that is stored in this element together with the reference to this, can be use for notification purposes
this registers to the element in the dynbamic propagation graph.
this registers to the element in the dynbamic propagation graph. this element must have been registered o the static propagation graph before, or be accessible through a bulk
the element that we register to
a value that can be exploited by the element to notify its updates. normally, this value should be an int, if other type is used, the invariant should override a dedicated notification method.
a key that is needed to unregister the element in the dynamic propagation graph
registers an element in the static dependency graph.
registers an element in the static dependency graph. Beware that you also need to register elements in the dynamic propagation graph for something to happen.
the element that we register to
to invoque to force inclusion of the propagation element in the current or next propagation wave.
to invoque to force inclusion of the propagation element in the current or next propagation wave.
turns the incremental sort on or off.
turns the incremental sort on or off. Incremental sort is then applied at each edge insert. node insert and delete is prohibited when autosort is activated in case a cycle is detected, does not pass in autosort model, but throws an exception
Sets the Position oto the number of element that need to be decremented, not belonging to same connex component for connex component, set it to the number of element that are referenced from othercomponents
Sets the Position oto the number of element that need to be decremented, not belonging to same connex component for connex component, set it to the number of element that are referenced from othercomponents
true if there is a dependency, false otherwise
unregisters an element in the dynamic propagation graph.
unregisters an element in the dynamic propagation graph.
the key that was given when the eement was registered in the dynamic propagation graph
supposed to be false between each pass of the algorithm
supposed to be false between each pass of the algorithm