Interface TransferFunction<V extends AbstractValue<V>,S extends Store<S>>
- Type Parameters:
V- type of the abstract value that is trackedS- 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,NonEmptyTransfer,NullnessTransfer,OptionalImplTransfer,ReachingDefinitionTransfer,RegexTransfer,RLCCalledMethodsTransfer,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
Nodetype that determines the behavior of the org.checkerframework.dataflow analysis in that case. This method takes aNodeand an incoming store, and produces aRegularTransferResult.
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.
-
Method Summary
Methods inherited from interface org.checkerframework.dataflow.cfg.node.NodeVisitor
visitAnyPattern, visitArrayAccess, visitArrayCreation, visitArrayType, visitAssertionError, visitAssignment, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCase, visitCharacterLiteral, visitClassDeclaration, visitClassName, visitConditionalAnd, visitConditionalNot, visitConditionalOr, visitDeconstructorPattern, visitDoubleLiteral, visitEqualTo, visitExplicitThis, visitExpressionStatement, visitFieldAccess, visitFloatingDivision, visitFloatingRemainder, visitFloatLiteral, visitGreaterThan, visitGreaterThanOrEqual, visitImplicitThis, visitInstanceOf, visitIntegerDivision, visitIntegerLiteral, visitIntegerRemainder, visitLambdaResultExpression, visitLeftShift, visitLessThan, visitLessThanOrEqual, visitLocalVariable, visitLongLiteral, visitMarker, visitMemberReference, visitMethodAccess, visitMethodInvocation, visitNarrowingConversion, visitNotEqual, visitNullChk, visitNullLiteral, visitNumericalAddition, visitNumericalMinus, visitNumericalMultiplication, visitNumericalPlus, visitNumericalSubtraction, visitObjectCreation, visitPackageName, visitParameterizedType, visitPrimitiveType, visitReturn, visitShortLiteral, visitSignedRightShift, visitStringConcatenate, visitStringConversion, visitStringLiteral, visitSuper, visitSwitchExpressionNode, visitSynchronized, visitTernaryExpression, visitThrow, visitTypeCast, visitUnsignedRightShift, visitVariableDeclaration, visitWideningConversion