uk.ac.starlink.util

## Class ValueWatcher

- java.lang.Object
- - uk.ac.starlink.util.ValueWatcher

-     public class ValueWatcher
      extends java.lang.Object

  Looks out for an unused value in a sequence of submitted numbers. This can be used to identify a suitable 'magic' representation for a bad value.
  Since:
    22 Jun 2006

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ValueWatcher(long loBound, long hiBound)` Constructs a ValueWatcher which will look out for values in the range covered by `loBound` and `hiBound` inclusive.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Long` | `getUnused()` Returns a value in the range `loBound..hiBound` which has never been sumitted to `useValue(long)`.
    `void` | `useValue(long val)` Takes note of a value.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ValueWatcher

          public ValueWatcher(long loBound,
                              long hiBound)

      Constructs a ValueWatcher which will look out for values in the range covered by `loBound` and `hiBound` inclusive. These shouldn't be arbitrarily far apart - storage of up to about one bit per value in the range will be required.
      Parameters:
        `loBound` - lower bound to watch for (inclusive)
        `hiBound` - upper bound to watch for (inclusive)

  - ### Method Detail

    - #### useValue

          public void useValue(long val)

      Takes note of a value. `val` will never subsequently be returned from `getUnused()`.
      Parameters:
        `val` - value to note

    - #### getUnused

          public java.lang.Long getUnused()

      Returns a value in the range `loBound..hiBound` which has never been sumitted to `useValue(long)`. If there is no such value, returns null.
      Returns:
        unused value in range