Class RegularTransferResult<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
TransferResult with just one non-exceptional store. The result of
 getThenStore and getElseStore is equal to the only underlying store.- 
Field SummaryFieldsFields inherited from class org.checkerframework.dataflow.analysis.TransferResultexceptionalStores, resultValue
- 
Constructor SummaryConstructorsConstructorDescriptionRegularTransferResult(@Nullable V value, S resultStore) Create a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStoresandfalseforTransferResult.storeChanged().RegularTransferResult(@Nullable V value, S resultStore, boolean storeChanged) Create a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStores.RegularTransferResult(@Nullable V value, S resultStore, @Nullable Map<TypeMirror, S> exceptionalStores) Create a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingfalseforTransferResult.storeChanged().RegularTransferResult(@Nullable V value, S resultStore, @Nullable Map<TypeMirror, S> exceptionalStores, boolean storeChanged) Create aTransferResultwithresultStoreas the resulting store.
- 
Method SummaryModifier and TypeMethodDescriptionbooleanReturnstrueif and only if this transfer result contains two stores that are potentially not equal.Returns the result store produced if theNodethis result belongs to evaluates tofalse.Returns the regular result store produced if no exception is thrown by theNodecorresponding to this transfer function result.Returns the result store produced if theNodethis result belongs to evaluates totrue.booleantoString()Methods inherited from class org.checkerframework.dataflow.analysis.TransferResultgetExceptionalStore, getExceptionalStores, getResultValue, setResultValue
- 
Field Details- 
storeThe regular result store.
 
- 
- 
Constructor Details- 
RegularTransferResultCreate a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStores.Exceptions: If the corresponding Nodethrows an exception, then it is assumed that no special handling is necessary and the store before the correspondingNodewill be passed along any exceptional edge.Aliasing: resultStoreis not allowed to be used anywhere outside of this class (including use through aliases). Complete control over the object is transferred to this class.- Parameters:
- value- the abstract value produced by the transfer function
- resultStore- regular result store
- storeChanged- whether the store changed; see- TransferResult.storeChanged()
- See Also:
 
- 
RegularTransferResultCreate a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStoresandfalseforTransferResult.storeChanged().- Parameters:
- value- the abstract value produced by the transfer function
- resultStore- regular result store
- See Also:
 
- 
RegularTransferResultpublic RegularTransferResult(@Nullable V value, S resultStore, @Nullable Map<TypeMirror, S> exceptionalStores) Create a newRegularTransferResult(AbstractValue, Store, Map, boolean), usingfalseforTransferResult.storeChanged().- Parameters:
- value- the abstract value produced by the transfer function
- resultStore- the regular result store
- exceptionalStores- the stores in case the basic block throws an exception, or null if the basic block does not throw any exceptions
- See Also:
 
- 
RegularTransferResultpublic RegularTransferResult(@Nullable V value, S resultStore, @Nullable Map<TypeMirror, S> exceptionalStores, boolean storeChanged) Create aTransferResultwithresultStoreas the resulting store. If the correspondingNodeis a boolean node, thenresultStoreis used for both the 'then' and 'else' edge.Exceptions: If the corresponding Nodethrows an exception, then the corresponding store inexceptionalStoresis used. If no exception is found inexceptionalStores, then it is assumed that no special handling is necessary and the store before the correspondingNodewill be passed along any exceptional edge.Aliasing: resultStoreand any store inexceptionalStoresare not allowed to be used anywhere outside of this class (including use through aliases). Complete control over the objects is transferred to this class.- Parameters:
- value- the abstract value produced by the transfer function
- resultStore- the regular result store
- exceptionalStores- the stores in case the basic block throws an exception, or null if the basic block does not throw any exceptions
- storeChanged- see- TransferResult.storeChanged()
 
 
- 
- 
Method Details- 
getRegularStoreDescription copied from class:TransferResultReturns the regular result store produced if no exception is thrown by theNodecorresponding to this transfer function result.- Specified by:
- getRegularStorein class- TransferResult<V extends AbstractValue<V>,- S extends Store<S>> 
- Returns:
- the regular result store produced if no exception is thrown by the Nodecorresponding to this transfer function result
 
- 
getThenStoreDescription copied from class:TransferResultReturns the result store produced if theNodethis result belongs to evaluates totrue.- Specified by:
- getThenStorein class- TransferResult<V extends AbstractValue<V>,- S extends Store<S>> 
- Returns:
- the result store produced if the Nodethis result belongs to evaluates totrue
 
- 
getElseStoreDescription copied from class:TransferResultReturns the result store produced if theNodethis result belongs to evaluates tofalse.- Specified by:
- getElseStorein class- TransferResult<V extends AbstractValue<V>,- S extends Store<S>> 
- Returns:
- the result store produced if the Nodethis result belongs to evaluates tofalse
 
- 
containsTwoStorespublic boolean containsTwoStores()Description copied from class:TransferResultReturnstrueif and only if this transfer result contains two stores that are potentially not equal. Note that the resulttruedoes not imply thatgetRegularStorecannot be called (or vice versa forfalse). Rather, it indicates thatgetThenStoreorgetElseStorecan be used to give more precise results. Otherwise, if the result isfalse, then all three methodsgetRegularStore,getThenStore, andgetElseStorereturn equivalent stores.- Specified by:
- containsTwoStoresin class- TransferResult<V extends AbstractValue<V>,- S extends Store<S>> 
- Returns:
- trueif and only if this transfer result contains two stores that are potentially not equal
 
- 
toString
- 
storeChangedpublic boolean storeChanged()- Specified by:
- storeChangedin class- TransferResult<V extends AbstractValue<V>,- S extends Store<S>> 
- Returns:
- trueif and only if the transfer function returning this transfer result changed the regularStore, elseStore, or thenStore
- See Also:
 
 
-