iterateEOG

inline fun <K : Node, V> iterateEOG(startNode: K, startState: State<K, V>, transformation: (K, State<K, V>) -> State<K, V>): State<K, V>?

Iterates through the worklist of the Evaluation Order Graph starting at startNode and with the State. For each node, the transformation is applied which should update the state.

transformation receives the current Node popped from the worklist and the State at this node which is considered for this analysis. The transformation has to return the updated State.


inline fun <K : Node, V> iterateEOG(startNode: K, startState: State<K, V>, transformation: (K, State<K, V>, Worklist<K, K, V>) -> State<K, V>): State<K, V>?

Iterates through the worklist of the Evaluation Order Graph starting at startNode and with the State. For each node, the transformation is applied which should update the state.

transformation receives the current Node popped from the worklist, the State at this node which is considered for this analysis and even the current Worklist. The worklist is given if we have to add more elements out-of-order e.g. because the EOG is traversed in an order which is not useful for this analysis. The transformation has to return the updated State.


inline fun <K : Edge<Node>, N : Any, V> iterateEOG(startEdges: List<K>, startState: State<N, V>, transformation: (K, State<N, V>) -> State<N, V>): State<N, V>?
inline fun <K : Edge<Node>, N : Any, V> iterateEOG(startEdges: List<K>, startState: State<N, V>, transformation: (K, State<N, V>, Worklist<K, N, V>) -> State<N, V>): State<N, V>?