jif.visit

## Class IntegerBoundsChecker.Bounds

- java.lang.Object
- - jif.visit.IntegerBoundsChecker.Bounds

- Enclosing class:
    IntegerBoundsChecker

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

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Constructor and Description
    `Bounds()`
    `Bounds(IntegerBoundsChecker.Interval range, java.util.Set<IntegerBoundsChecker.Bound> bounds)`
    `Bounds(java.lang.Long lowerBound, java.lang.Long upperBound, java.util.Set<IntegerBoundsChecker.Bound> bounds)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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

    - #### Bounds

          public Bounds()

    - #### Bounds

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

    - #### Bounds

          public 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`