org.checkerframework.dataflow.analysis.TransferFunction Maven / Gradle / Ivy
Show all versions of checker Show documentation
package org.checkerframework.dataflow.analysis;
import org.checkerframework.dataflow.cfg.node.Node;
import org.checkerframework.dataflow.cfg.node.NodeVisitor;
/**
* Interface of a transfer function for the abstract interpretation used for the flow analysis.
*
* A transfer function consists of the following components:
*
*
* - Initial store method(s) that determines which initial store should be used in the
* org.checkerframework.dataflow analysis.
*
- A function for every {@link Node} type that determines the behavior of the
* org.checkerframework.dataflow analysis in that case. This method takes a {@link Node} and
* an incoming store, and produces a {@link RegularTransferResult}.
*
*
* Note: Initial store method(s) are different between forward and backward transfer
* functions. Thus, this interface doesn't define any initial store method(s). {@link
* ForwardTransferFunction} and {@link BackwardTransferFunction} will create their own initial store
* method(s).
*
*
Important: The individual transfer functions ( {@code visit*}) are allowed to use
* (and modify) the stores contained in the argument passed; the ownership is transferred from the
* caller to that function.
*
* @param type of the abstract value that is tracked
* @param the store type used in the analysis
*/
public interface TransferFunction, S extends Store>
extends NodeVisitor, TransferInput> {}