Package generic

# Interface ULongSpan

All Superinterfaces:
  `Comparable<ULongSpan>`, `Span<Long,ULongSpan>`

All Known Implementing Classes:
  `ULongSpan.Empty`, `ULongSpan.Impl`

public interface ULongSpan extends Span<Long,ULongSpan>
A span of unsigned longs

While the type of endpoint is `Long`, the domain imposes unsigned behavior. To ensure consistent behavior in client code, comparisons and manipulations should be performed via `DOMAIN`, where applicable.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static class`
  `ULongSpan.DefaultULongSpanMap<V>`
  An interval tree implementing `ULongSpan.MutableULongSpanMap`
  `static class`
  `ULongSpan.DefaultULongSpanSet`
  An interval tree implementing `ULongSpan.MutableULongSpanSet`
  `static enum`
  `ULongSpan.Domain`
  The domain of unsigned longs
  `static class`
  `ULongSpan.Empty`
  The singleton empty span of unsigned longs
  `static final record`
  `ULongSpan.Impl`
  A non-empty span of unsigned longs
  `static interface`
  `ULongSpan.MutableULongSpanMap<V>`
  A mutable map of unsigned long spans to values
  `static interface`
  `ULongSpan.MutableULongSpanSet`
  A mutable set of unsigned long spans
  `static interface`
  `ULongSpan.ULongSpanMap<V>`
  A map of unsigned long spans to values
  `static interface`
  `ULongSpan.ULongSpanSet`
  A set of unsigned long spans

  ## Nested classes/interfaces inherited from interface generic.Span

  `Span.DefaultSpanMap<N,S extends Span<N,S>,V>, Span.DefaultSpanSet<N,S extends Span<N,S>>, Span.MutableSpanMap<N,S extends Span<N,S>,V>, Span.MutableSpanSet<N,S extends Span<N,S>>, Span.SpanMap<N,S extends Span<N,S>,V>, Span.SpanMapSetter<E,N,S extends Span<N,S>,V>, Span.SpanSet<N,S extends Span<N,S>>`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final ULongSpan.Impl`
  `ALL`
  `static final ULongSpan.Domain`
  `DOMAIN`
  `static final ULongSpan.Empty`
  `EMPTY`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ULongSpan`
  `extent(long min, int length)`
  Create a closed interval of unsigned longs having the given (unsigned) length
  `static ULongSpan`
  `extent(long min, long length)`
  Create a closed interval of unsigned longs having a given length
  `default long`
  `length()`
  Get the length of the span
  `static ULongSpan`
  `span(long min, long max)`
  Create a closed interval of unsigned longs

  ### Methods inherited from interface generic.Span

  `bound, compareTo, contains, domain, encloses, intersect, intersects, isEmpty, max, maxIsFinite, min, minIsFinite, subtract, toString`

- ## Field Details

  - ### DOMAIN

    static final ULongSpan.Domain DOMAIN

  - ### EMPTY

    static final ULongSpan.Empty EMPTY

  - ### ALL

    static final ULongSpan.Impl ALL

- ## Method Details

  - ### span

    static ULongSpan span(long min, long max)
    Create a closed interval of unsigned longs
    Parameters:
      `min` - the lower bound
      `max` - the upper bound
    Returns:
      the span
    Throws:
      `IllegalArgumentException` - if `max < min`

  - ### extent

    static ULongSpan extent(long min, long length)
    Create a closed interval of unsigned longs having a given length
    Parameters:
      `min` - the lower bound
      `length` - the length
    Returns:
      the span
    Throws:
      `IllegalArgumentException` - if the upper endpoint would exceed `ULongSpan.Domain.max()`

  - ### extent

    static ULongSpan extent(long min, int length)
    Create a closed interval of unsigned longs having the given (unsigned) length

    This operates the same as `extent(long, int)`, but ensures the given length is treated as an unsigned integer.

    Parameters:
      `min` -
      `length` -
    Returns:
      the span
    Throws:
      `IllegalArgumentException` - if the upper endpoint would exceed `ULongSpan.Domain.max()`

  - ### length

    default long length()
    Get the length of the span
    Returns:
      the length