jif.visit
Class IntegerBoundsChecker.Bounds

java.lang.Object
  extended by jif.visit.IntegerBoundsChecker.Bounds
Enclosing class:
IntegerBoundsChecker

protected static class IntegerBoundsChecker.Bounds
extends java.lang.Object


Field Summary
protected  java.util.Set<IntegerBoundsChecker.Bound> bounds
           
static java.lang.Long NEG_INF
           
static java.lang.Long POS_INF
           
protected  IntegerBoundsChecker.Interval range
           
 
Constructor Summary
IntegerBoundsChecker.Bounds()
           
IntegerBoundsChecker.Bounds(IntegerBoundsChecker.Interval range, java.util.Set<IntegerBoundsChecker.Bound> bounds)
           
IntegerBoundsChecker.Bounds(java.lang.Long lowerBound, java.lang.Long upperBound, java.util.Set<IntegerBoundsChecker.Bound> bounds)
           
 
Method Summary
 boolean equals(java.lang.Object o)
           
 java.util.Set<IntegerBoundsChecker.Bound> getBounds()
           
 java.lang.Long getNumericBound(IntegerBoundsChecker.Bound.Type type)
           
 java.lang.Long getNumericLower()
           
 java.lang.Long getNumericUpper()
           
 int hashCode()
           
 boolean isTighterThan(IntegerBoundsChecker.Bounds other)
          Returns whether these bounds are at least as tight as the other bounds.
 IntegerBoundsChecker.Bounds merge(IntegerBoundsChecker.Bounds b1)
          Merge two bounds.
 IntegerBoundsChecker.Bounds refine(IntegerBoundsChecker.Bounds b1)
          Merge two bounds.
static java.lang.Long refine(java.lang.Long i, java.lang.Long j, IntegerBoundsChecker.Bound.Type type)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

POS_INF

public static final java.lang.Long POS_INF

NEG_INF

public static final java.lang.Long NEG_INF

range

protected final IntegerBoundsChecker.Interval range

bounds

protected final java.util.Set<IntegerBoundsChecker.Bound> bounds
Constructor Detail

IntegerBoundsChecker.Bounds

public IntegerBoundsChecker.Bounds()

IntegerBoundsChecker.Bounds

public IntegerBoundsChecker.Bounds(IntegerBoundsChecker.Interval range,
                                   java.util.Set<IntegerBoundsChecker.Bound> bounds)

IntegerBoundsChecker.Bounds

public IntegerBoundsChecker.Bounds(java.lang.Long lowerBound,
                                   java.lang.Long upperBound,
                                   java.util.Set<IntegerBoundsChecker.Bound> bounds)
Method Detail

refine

public static java.lang.Long refine(java.lang.Long i,
                                    java.lang.Long j,
                                    IntegerBoundsChecker.Bound.Type type)

getNumericLower

public java.lang.Long getNumericLower()

getNumericUpper

public java.lang.Long getNumericUpper()

getBounds

public java.util.Set<IntegerBoundsChecker.Bound> getBounds()

getNumericBound

public java.lang.Long getNumericBound(IntegerBoundsChecker.Bound.Type type)

isTighterThan

public boolean isTighterThan(IntegerBoundsChecker.Bounds other)
Returns whether these bounds are at least as tight as the other bounds.


merge

public IntegerBoundsChecker.Bounds merge(IntegerBoundsChecker.Bounds b1)
Merge two bounds. The merge is conservative, meaning that the numeric (greatest lower) bound is the lower of the two, and the set of locals is the intersection of both.


refine

public IntegerBoundsChecker.Bounds refine(IntegerBoundsChecker.Bounds b1)
Merge two bounds. The merge is not conservative, meaning that the facts in both branches are true. So the numeric (greatest lower) bound is the greater of the two, and the set of locals is the union of both.


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