All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.checkerframework.dataflow.analysis.TransferFunction Maven / Gradle / Ivy

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> {}