V - type of the abstract value that is trackedS - the store type used in the analysispublic class RegularTransferResult<V extends AbstractValue<V>,S extends Store<S>> extends TransferResult<V,S>
TransferResult with just one non-exceptional store. The result of
 getThenStore and getElseStore is equal to the only underlying store.| Modifier and Type | Field and Description | 
|---|---|
| protected S | storeThe regular result store. | 
exceptionalStores, resultValue| Constructor and Description | 
|---|
| RegularTransferResult(V value,
                     S resultStore)Create a new  RegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStoresandfalseforTransferResult.storeChanged(). | 
| RegularTransferResult(V value,
                     S resultStore,
                     boolean storeChanged)Create a new  RegularTransferResult(AbstractValue, Store, Map, boolean), usingnullforTransferResult.exceptionalStores. | 
| RegularTransferResult(V value,
                     S resultStore,
                     Map<TypeMirror,S> exceptionalStores)Create a new  RegularTransferResult(AbstractValue, Store, Map, boolean), usingfalseforTransferResult.storeChanged(). | 
| RegularTransferResult(V value,
                     S resultStore,
                     @Nullable Map<TypeMirror,S> exceptionalStores,
                     boolean storeChanged)Create a  TransferResultwithresultStoreas the resulting store. | 
| Modifier and Type | Method and Description | 
|---|---|
| boolean | containsTwoStores()Returns  trueif and only if this transfer result contains two stores that are
 potentially not equal. | 
| S | getElseStore()Returns the result store produced if the  Nodethis result belongs to evaluates tofalse. | 
| S | getRegularStore()The regular result store. | 
| S | getThenStore()Returns the result store produced if the  Nodethis result belongs to evaluates totrue. | 
| boolean | storeChanged() | 
| String | toString() | 
getExceptionalStore, getExceptionalStores, getResultValue, setResultValuepublic RegularTransferResult(V value, S resultStore, boolean storeChanged)
RegularTransferResult(AbstractValue, Store, Map, boolean), using null for TransferResult.exceptionalStores.
 Exceptions: If the corresponding Node throws an exception, then it is assumed that no
 special handling is necessary and the store before the corresponding Node will be passed along any exceptional edge.
 
Aliasing: resultStore is not allowed to be used anywhere outside of this
 class (including use through aliases). Complete control over the object is transferred to this
 class.
value - the abstract value produced by the transfer functionresultStore - regular result storestoreChanged - whether the store changed; see TransferResult.storeChanged()RegularTransferResult(AbstractValue, Store, Map, boolean)public RegularTransferResult(V value, S resultStore)
RegularTransferResult(AbstractValue, Store, Map, boolean), using null for TransferResult.exceptionalStores and
 false for TransferResult.storeChanged().value - the abstract value produced by the transfer functionresultStore - regular result storeRegularTransferResult(AbstractValue, Store, Map, boolean)public RegularTransferResult(V value, S resultStore, Map<TypeMirror,S> exceptionalStores)
RegularTransferResult(AbstractValue, Store, Map, boolean), using false for TransferResult.storeChanged().value - the abstract value produced by the transfer functionresultStore - the regular result storeexceptionalStores - the stores in case the basic block throws an exception, or null if the
     basic block does not throw any exceptionsRegularTransferResult(AbstractValue, Store, Map, boolean)public RegularTransferResult(V value, S resultStore, @Nullable Map<TypeMirror,S> exceptionalStores, boolean storeChanged)
TransferResult with resultStore as the resulting store. If the
 corresponding Node is a boolean node, then
 resultStore is used for both the 'then' and 'else' edge.
 Exceptions: If the corresponding Node throws an exception, then the corresponding store
 in exceptionalStores is used. If no exception is found in exceptionalStores,
 then it is assumed that no special handling is necessary and the store before the corresponding
 Node will be passed along any exceptional edge.
 
Aliasing: resultStore and any store in exceptionalStores are not
 allowed to be used anywhere outside of this class (including use through aliases). Complete
 control over the objects is transferred to this class.
value - the abstract value produced by the transfer functionresultStore - the regular result storeexceptionalStores - the stores in case the basic block throws an exception, or null if the
     basic block does not throw any exceptionsstoreChanged - see TransferResult.storeChanged()public S getRegularStore()
getRegularStore in class TransferResult<V extends AbstractValue<V>,S extends Store<S>>Node corresponding to this transfer function resultpublic S getThenStore()
TransferResultNode
 this result belongs to evaluates to true.getThenStore in class TransferResult<V extends AbstractValue<V>,S extends Store<S>>Node
     this result belongs to evaluates to truepublic S getElseStore()
TransferResultNode
 this result belongs to evaluates to false.getElseStore in class TransferResult<V extends AbstractValue<V>,S extends Store<S>>Node
     this result belongs to evaluates to falsepublic boolean containsTwoStores()
TransferResulttrue if and only if this transfer result contains two stores that are
 potentially not equal. Note that the result true does not imply that getRegularStore cannot be called (or vice versa for false). Rather, it indicates that
 getThenStore or getElseStore can be used to give more precise results.
 Otherwise, if the result is false, then all three methods getRegularStore,
 getThenStore, and getElseStore return equivalent stores.containsTwoStores in class TransferResult<V extends AbstractValue<V>,S extends Store<S>>true if and only if this transfer result contains two stores that are
     potentially not equalpublic boolean storeChanged()
storeChanged in class TransferResult<V extends AbstractValue<V>,S extends Store<S>>true if and only if the transfer function returning this transfer result
     changed the regularStore, elseStore, or thenStoreTransferResult.storeChanged()