FindBugs™ 1.3.9

edu.umd.cs.findbugs.ba.obl
Class StateSet

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.obl.StateSet

public class StateSet
extends java.lang.Object

A dataflow fact used in ObligationAnalysis. It is a set of State objects, plus the additional capability to represent top and bottom elements.

Invariant: no StateSet may contain more than one State with the same ObligationSet.

See Weimer and Necula, Finding and preventing run-time error handling mistakes, OOPSLA 2004.

Author:
David Hovemeyer

Constructor Summary
StateSet(ObligationFactory factory)
           
 
Method Summary
 void addObligation(Obligation obligation, int basicBlockId)
          Add an obligation to every State in the StateSet.
 void clear()
           
 void copyFrom(StateSet other)
          Make this StateSet an exact copy of the given StateSet.
 java.util.Map<ObligationSet,State> createEmptyMap()
          Return a newly allocated Map of ObligationSet to State that may be passed to applyToAllStatesAndUpdateMap().
 void deleteObligation(Obligation obligation, int basicBlockId)
          Remove an Obligation from every State in the StateSet.
 StateSet duplicate()
          Return an exact deep copy of this StateSet.
 boolean equals(java.lang.Object o)
           
 java.util.Set<ObligationSet> getAllObligationSets()
          Get Set of all ObligationsSets in this StateSet.
 java.util.List<State> getPrefixStates(Path path)
          Get all States that have Paths which are prefixes of the given Path.
 State getStateWithObligationSet(ObligationSet obligationSet)
          Get the State which has the given ObligationSet.
 int hashCode()
           
 boolean isBottom()
           
 boolean isTop()
           
 boolean isValid()
           
 void replaceMap(java.util.Map<ObligationSet,State> stateMap)
          Replace the map of ObligationSets to States with the given one.
 void setBottom()
           
 void setTop()
           
 java.util.Iterator<State> stateIterator()
          Return an Iterator over the States in the StateSet.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

StateSet

public StateSet(ObligationFactory factory)
Method Detail

setTop

public void setTop()

isTop

public boolean isTop()

setBottom

public void setBottom()

isBottom

public boolean isBottom()

isValid

public boolean isValid()

clear

public void clear()

stateIterator

public java.util.Iterator<State> stateIterator()
Return an Iterator over the States in the StateSet.

Returns:
an Iterator over the States in the StateSet

getAllObligationSets

public java.util.Set<ObligationSet> getAllObligationSets()
Get Set of all ObligationsSets in this StateSet.

Returns:
Set of all ObligationsSets in this StateSet

getStateWithObligationSet

public State getStateWithObligationSet(ObligationSet obligationSet)
Get the State which has the given ObligationSet. Returns null if there is no such state.

Parameters:
obligationSet - we want to get the State with this ObligationSet
Returns:
the State with the given ObligationSet, or null if there is no such State

copyFrom

public void copyFrom(StateSet other)
Make this StateSet an exact copy of the given StateSet.

Parameters:
other - a StateSet; this StateSet will be made identical to it

duplicate

public StateSet duplicate()
Return an exact deep copy of this StateSet.

Returns:
an exact deep copy of this StateSet

addObligation

public void addObligation(Obligation obligation,
                          int basicBlockId)
                   throws ObligationAcquiredOrReleasedInLoopException
Add an obligation to every State in the StateSet.

Parameters:
obligation - the obligation to add
basicBlockId - the id of the basic block (path component) adding the obligation
Throws:
ObligationAcquiredOrReleasedInLoopException

deleteObligation

public void deleteObligation(Obligation obligation,
                             int basicBlockId)
                      throws ObligationAcquiredOrReleasedInLoopException
Remove an Obligation from every State in the StateSet.

Parameters:
obligation - the obligation to remove
basicBlockId - the id of the basic block (path component) removing the obligation
Throws:
NonexistentObligationException
ObligationAcquiredOrReleasedInLoopException

replaceMap

public void replaceMap(java.util.Map<ObligationSet,State> stateMap)
Replace the map of ObligationSets to States with the given one.

Parameters:
stateMap - enw map of ObligationSets to States

getPrefixStates

public java.util.List<State> getPrefixStates(Path path)
Get all States that have Paths which are prefixes of the given Path.

Parameters:
path - a Path
Returns:
Collection of States that have Paths which are prefixes of the given Path

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

createEmptyMap

public java.util.Map<ObligationSet,State> createEmptyMap()
Return a newly allocated Map of ObligationSet to State that may be passed to applyToAllStatesAndUpdateMap().


FindBugs™ 1.3.9

FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.