V
- type of the abstract value that is trackedS
- the store type used in the analysispublic interface TransferFunction<V extends AbstractValue<V>,S extends Store<S>> extends NodeVisitor<TransferResult<V,S>,TransferInput<V,S>>
A transfer function consists of the following components:
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.
visitArrayAccess, visitArrayCreation, visitArrayType, visitAssertionError, visitAssignment, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCase, visitCharacterLiteral, visitClassDeclaration, visitClassName, visitConditionalAnd, visitConditionalNot, visitConditionalOr, visitDoubleLiteral, visitEqualTo, visitExplicitThis, 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, visitStringConcatenateAssignment, visitStringConversion, visitStringLiteral, visitSuper, visitSynchronized, visitTernaryExpression, visitThrow, visitTypeCast, visitUnsignedRightShift, visitVariableDeclaration, visitWideningConversion