Interface TransferFunction<V extends AbstractValue<V>,S extends Store<S>>

Type Parameters:
V - type of the abstract value that is tracked
S - the store type used in the analysis
All Superinterfaces:
NodeVisitor<TransferResult<V,S>,TransferInput<V,S>>
All Known Subinterfaces:
BackwardTransferFunction<V,S>, ForwardTransferFunction<V,S>
All Known Implementing Classes:
AccumulationTransfer, AliasingTransfer, BusyExprTransfer, CalledMethodsTransfer, CFAbstractTransfer, CFTransfer, ConstantPropagationTransfer, FormatterTransfer, I18nFormatterTransfer, IndexAbstractTransfer, InitializationTransfer, InitializedFieldsTransfer, KeyForTransfer, LessThanTransfer, LiveVarTransfer, LockTransfer, LowerBoundTransfer, MustCallTransfer, NullnessTransfer, ReachingDefinitionTransfer, RegexTransfer, ResourceLeakTransfer, SameLenTransfer, SearchIndexTransfer, SignatureTransfer, UpperBoundTransfer, ValueTransfer

public interface TransferFunction<V extends AbstractValue<V>,S extends Store<S>> extends NodeVisitor<TransferResult<V,S>,TransferInput<V,S>>
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 Node type that determines the behavior of the org.checkerframework.dataflow analysis in that case. This method takes a Node and an incoming store, and produces a 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). ForwardTransferFunction and BackwardTransferFunction will create their own initial store method(s).

Important: The individual transfer functions ( visit*) are allowed to use (and modify) the stores contained in the argument passed; the ownership is transferred from the caller to that function.