Class SortedRanges

java.lang.Object
io.deephaven.engine.rowset.impl.RefCountedCow<SortedRanges>
io.deephaven.engine.rowset.impl.sortedranges.SortedRanges
All Implemented Interfaces:
OrderedLongSet
Direct Known Subclasses:
SortedRangesTyped

public abstract class SortedRanges extends RefCountedCow<SortedRanges> implements OrderedLongSet
  • Field Details

    • INITIAL_SIZE

      protected static final int INITIAL_SIZE
    • DEBUG

      public static final boolean DEBUG
    • LONG_DENSE_MAX_CAPACITY

      public static final int LONG_DENSE_MAX_CAPACITY
    • LONG_SPARSE_MAX_CAPACITY

      public static final int LONG_SPARSE_MAX_CAPACITY
    • INT_DENSE_MAX_CAPACITY

      public static final int INT_DENSE_MAX_CAPACITY
    • INT_SPARSE_MAX_CAPACITY

      public static final int INT_SPARSE_MAX_CAPACITY
    • SHORT_MAX_CAPACITY

      public static final int SHORT_MAX_CAPACITY
    • ELEMENTS_PER_BLOCK_DENSE_THRESHOLD

      public static final int ELEMENTS_PER_BLOCK_DENSE_THRESHOLD
    • MAX_CAPACITY

      public static final int MAX_CAPACITY
    • LONG_EXTENT

      protected static final int LONG_EXTENT
    • INT_EXTENT

      protected static final int INT_EXTENT
    • SHORT_EXTENT

      protected static final int SHORT_EXTENT
    • POOL_ARRAYS

      protected static final boolean POOL_ARRAYS
    • USE_RANGES_ARRAY

      public static final boolean USE_RANGES_ARRAY
    • cardinality

      protected long cardinality
    • count

      protected int count
  • Constructor Details

    • SortedRanges

      protected SortedRanges()
  • Method Details

    • deepCopy

      public abstract SortedRanges deepCopy()
      Description copied from class: RefCountedCow
      Get a deep copy of the current object, not shared with anybody. Note this is not thread safe.
      Specified by:
      deepCopy in class RefCountedCow<SortedRanges>
      Returns:
      A full, deep copy of this object with a reference count of 1 (not shared).
    • self

      public final SortedRanges self()
      Description copied from class: RefCountedCow
      Derived classes should implement self() by simply "return this" of the right type. This method exists only as an implementation artifact for a type safe implementation of the curiously recurring generic pattern.
      Specified by:
      self in class RefCountedCow<SortedRanges>
      Returns:
      this object, with the right, most derived type.
    • arraySizeRoundingInt

      public static int arraySizeRoundingInt(int sizeToRound)
    • arraySizeRoundingShort

      public static int arraySizeRoundingShort(int sizeToRound)
    • makeSingleRange

      public static SortedRanges makeSingleRange(long start, long end)
    • makeSingleElement

      public static SortedRanges makeSingleElement(long v)
    • makeEmpty

      public static SortedRanges makeEmpty()
    • tryMakeForKnownRangeFinalCapacityLowerBound

      public static SortedRanges tryMakeForKnownRangeFinalCapacityLowerBound(int initialCapacity, int finalCapacityLowerBound, long first, long last, boolean isDense)
    • makeForKnownRange

      public static SortedRanges makeForKnownRange(long first, long last, boolean isDense)
    • tryMakeForKnownRangeUnknownMaxCapacity

      public static SortedRanges tryMakeForKnownRangeUnknownMaxCapacity(int initialCapacity, long first, long last, boolean isDense)
    • tryMakeForKnownRangeKnownCount

      public static SortedRanges tryMakeForKnownRangeKnownCount(int count, long first, long last)
    • isEmpty

      public final boolean isEmpty()
    • clear

      public final void clear()
    • first

      public final long first()
    • last

      public final long last()
    • hasMoreThanOneRange

      public final boolean hasMoreThanOneRange()
    • validate

      public final void validate()
    • toString

      public final String toString()
      Overrides:
      toString in class Object
    • contains

      public final boolean contains(long v)
    • containsRange

      public final boolean containsRange(long start, long end)
    • find

      public final long find(long v)
    • get

      public final long get(long targetPos)
    • applyShift

      public abstract SortedRanges applyShift(long shift)
    • applyShiftOnNew

      public abstract SortedRanges applyShiftOnNew(long shift)
    • add

      public final SortedRanges add(long v)
    • addUnsafe

      public final SortedRanges addUnsafe(long v)
    • addRange

      public final SortedRanges addRange(long start, long end)
    • addRangeUnsafe

      public final SortedRanges addRangeUnsafe(long start, long end)
    • append

      public final SortedRanges append(long v)
    • appendUnsafe

      public final SortedRanges appendUnsafe(long v)
    • appendRange

      public final SortedRanges appendRange(long start, long end)
    • appendRangeUnsafe

      public final SortedRanges appendRangeUnsafe(long start, long end)
    • remove

      public final SortedRanges remove(long v)
    • removeRange

      public final SortedRanges removeRange(long start, long end)
    • forEachLongRange

      public final boolean forEachLongRange(LongRangeAbortableConsumer lrac)
    • forEachLong

      public final boolean forEachLong(LongAbortableConsumer lac)
    • getIterator

      public final RowSet.Iterator getIterator()
    • getRangeIterator

      public RowSet.RangeIterator getRangeIterator()
    • getSearchIterator

      public final RowSet.SearchIterator getSearchIterator()
    • getReverseIterator

      public final RowSet.SearchIterator getReverseIterator()
    • getCardinality

      public final long getCardinality()
    • getKeysForPositions

      public final void getKeysForPositions(PrimitiveIterator.OfLong inputPositions, LongConsumer outputKeys)
    • subRangesByPos

      public final SortedRanges subRangesByPos(long startPosIn, long endPosIn)
    • subRangesByKey

      public final SortedRanges subRangesByKey(long start, long end)
    • overlapsRange

      public final boolean overlapsRange(long start, long end)
    • overlaps

      public final boolean overlaps(RowSet.RangeIterator rangeIter)
    • retainRange

      public final SortedRanges retainRange(long start, long end)
    • isDenseShort

      public static boolean isDenseShort(short[] data, int count)
    • isDenseLongSample

      protected static boolean isDenseLongSample(long v0, long v1, int count)
    • isDenseInt

      public static boolean isDenseInt(int[] data, int count)
    • isDenseLong

      public static boolean isDenseLong(long[] data, int count)
    • isDense

      public abstract boolean isDense()
    • isSparse

      public final boolean isSparse()
    • intersectOnNewImpl

      public final OrderedLongSet intersectOnNewImpl(OrderedLongSet other)
    • count

      public final int count()
    • subsetOf

      public final boolean subsetOf(RowSet.RangeIterator ritOther)
    • unionOnNew

      public static OrderedLongSet unionOnNew(SortedRanges sar, SortedRanges otherSar)
    • unionOnNewLegacy

      public static SortedRanges unionOnNewLegacy(SortedRanges sar, SortedRanges otherSar)
    • insertImpl

      public final OrderedLongSet insertImpl(SortedRanges other)
    • mergeAppend

      public final SortedRanges mergeAppend(SortedRanges other, boolean writeCheck)
    • insertImpl

      public final OrderedLongSet insertImpl(SortedRanges other, boolean writeCheck)
    • invertRangeOnNew

      public final OrderedLongSet invertRangeOnNew(long start, long end, long maxPosition)
    • invertOnNew

      public final boolean invertOnNew(RowSet.RangeIterator rit, OrderedLongSetBuilderSequential builder, long maxPosition)
    • getRowSequenceByPosition

      public final RowSequence getRowSequenceByPosition(long pos, long length)
    • getRowSequenceByPositionWithStart

      public final RowSequence getRowSequenceByPositionWithStart(long iStartPos, int istart, long startPosForOK, long lengthForOK)
    • getRowSequenceByKeyRange

      public final RowSequence getRowSequenceByKeyRange(long start, long end)
    • getRowSequenceIterator

      public final RowSequence.Iterator getRowSequenceIterator()
    • getAverageRunLengthEstimate

      public final long getAverageRunLengthEstimate()
    • shortArrayCapacityForLastIndex

      protected static int shortArrayCapacityForLastIndex(int lastIndex)
    • intArrayCapacityForLastIndex

      protected static int intArrayCapacityForLastIndex(int lastIndex, boolean isDense)
    • longArrayCapacityForLastIndex

      protected static int longArrayCapacityForLastIndex(int lastIndex, boolean isDense)
    • fits

      public abstract boolean fits(long value)
    • fits

      public abstract boolean fits(long start, long end)
    • fitsForAppend

      public abstract boolean fitsForAppend(long end)
    • makeMyTypeAndOffset

      protected abstract SortedRanges makeMyTypeAndOffset(int initialCapacity)
    • growOnNew

      protected abstract SortedRanges growOnNew(int capacity)
    • packedValuesPerCacheLine

      protected abstract int packedValuesPerCacheLine()
    • packedGet

      protected abstract long packedGet(int i)
    • absPackedGet

      protected final long absPackedGet(int i)
    • packedSet

      protected abstract void packedSet(int i, long packedValue)
    • pack

      protected abstract long pack(long unpackedValue)
    • unpackedGet

      protected abstract long unpackedGet(int i)
    • absUnpackedGet

      protected abstract long absUnpackedGet(int i)
    • unpackedSet

      protected abstract void unpackedSet(int i, long unpackedValue)
    • unpack

      protected abstract long unpack(long packedValue)
    • dataLength

      protected abstract int dataLength()
    • ensureCanAppend

      protected abstract SortedRanges ensureCanAppend(int newLastPosition, long unpackedNewLastKey, boolean writeCheck)
    • moveData

      protected abstract void moveData(int srcPos, int dstPos, int len)
    • copyData

      protected abstract void copyData(int newCapacity)
    • addInternal

      protected abstract SortedRanges addInternal(long v, boolean writeCheck)
    • addRangeInternal

      protected abstract SortedRanges addRangeInternal(long start, long end, boolean writeCheck)
    • appendInternal

      protected abstract SortedRanges appendInternal(long v, boolean writeCheck)
    • appendRangeInternal

      protected abstract SortedRanges appendRangeInternal(long start, long end, boolean writeCheck)
    • removeInternal

      protected abstract SortedRanges removeInternal(long v)
    • removeRangeInternal

      protected abstract SortedRanges removeRangeInternal(long start, long end)
    • tryPackFor

      protected abstract SortedRanges tryPackFor(long first, long last, int maxPos, boolean isDense)
    • tryPackWithNewLast

      protected final SortedRanges tryPackWithNewLast(long newLastKey, int maxPos, boolean isDense)
    • tryPack

      protected abstract SortedRanges tryPack()
    • bytesAllocated

      public abstract int bytesAllocated()
    • bytesUsed

      public abstract int bytesUsed()
    • tryCompactUnsafe

      public abstract SortedRanges tryCompactUnsafe(int k)
      Parameters:
      k - if k == 0, compact if count < capacity. k > 0, compact if (capacity - count > (capacity >> k).
    • tryCompact

      public final SortedRanges tryCompact(int k)
    • isLongAllocationSize

      protected static boolean isLongAllocationSize(int length)
    • isIntAllocationSize

      protected static boolean isIntAllocationSize(int length)
    • isShortAllocationSize

      protected static boolean isShortAllocationSize(int length)
    • checkSizeAndMoveData

      protected abstract SortedRanges checkSizeAndMoveData(int srcPos, int dstPos, int len, long first, boolean writeCheck)
    • close

      protected final void close(int pos)
    • close2

      protected final void close2(int pos)
    • addPacked

      protected static SortedRanges addPacked(SortedRanges sar, long packedValue, long value, boolean writeCheck)
    • addPackedWithStart

      protected static SortedRanges addPackedWithStart(SortedRanges sar, int iStart, long packedValue, long value, org.apache.commons.lang3.mutable.MutableInt iStartOut, boolean writeCheck)
    • addRangePacked

      protected static SortedRanges addRangePacked(SortedRanges sar, long packedStart, long packedEnd, long start, long end, boolean writeCheck)
    • addRangePackedWithStart

      protected static SortedRanges addRangePackedWithStart(SortedRanges sar, int iStart, long packedStart, long packedEnd, long start, long end, long deltaCard, org.apache.commons.lang3.mutable.MutableInt iStartOut, boolean writeCheck)
    • appendPacked

      protected static SortedRanges appendPacked(SortedRanges sar, long packedValue, long value, boolean writeCheck)
    • appendRangeUnpacked

      protected static SortedRanges appendRangeUnpacked(SortedRanges sar, long start, long end, boolean writeCheck)
    • appendRangePacked

      protected static SortedRanges appendRangePacked(SortedRanges sar, long packedStart, long packedEnd, long start, long end, boolean writeCheck)
    • removePacked

      protected static SortedRanges removePacked(SortedRanges sar, long packedValue, long value)
    • removeRangePacked

      protected static SortedRanges removeRangePacked(SortedRanges sar, long packedStart, long packedEnd, long start, long end)
    • removeRangePackedWithStart

      protected static SortedRanges removeRangePackedWithStart(SortedRanges sar, int iStart, long packedStart, long packedEnd, long start, long end, org.apache.commons.lang3.mutable.MutableInt iStartOut, boolean writeCheck)
    • validate

      protected final void validate(long iv1, long iv2)
    • validate

      protected final void validate(String strArg, long iv1, long iv2)
    • ixCowRef

      public final SortedRanges ixCowRef()
      Specified by:
      ixCowRef in interface OrderedLongSet
    • ixRelease

      public final void ixRelease()
      Specified by:
      ixRelease in interface OrderedLongSet
    • ixRefCount

      public final int ixRefCount()
      Specified by:
      ixRefCount in interface OrderedLongSet
    • ixInsert

      public final OrderedLongSet ixInsert(long key)
      Specified by:
      ixInsert in interface OrderedLongSet
    • ixInsertRange

      public final OrderedLongSet ixInsertRange(long startKey, long endKey)
      Specified by:
      ixInsertRange in interface OrderedLongSet
    • ixInsertSecondHalf

      public final OrderedLongSet ixInsertSecondHalf(LongChunk<OrderedRowKeys> keys, int offset, int length)
      Specified by:
      ixInsertSecondHalf in interface OrderedLongSet
    • ixRemoveSecondHalf

      public final OrderedLongSet ixRemoveSecondHalf(LongChunk<OrderedRowKeys> keys, int offset, int length)
      Specified by:
      ixRemoveSecondHalf in interface OrderedLongSet
    • ixAppendRange

      public final OrderedLongSet ixAppendRange(long startKey, long endKey)
      Specified by:
      ixAppendRange in interface OrderedLongSet
    • ixRemove

      public final OrderedLongSet ixRemove(long key)
      Specified by:
      ixRemove in interface OrderedLongSet
    • ixLastKey

      public final long ixLastKey()
      Specified by:
      ixLastKey in interface OrderedLongSet
    • ixFirstKey

      public final long ixFirstKey()
      Specified by:
      ixFirstKey in interface OrderedLongSet
    • ixForEachLong

      public final boolean ixForEachLong(LongAbortableConsumer lc)
      Specified by:
      ixForEachLong in interface OrderedLongSet
    • ixForEachLongRange

      public final boolean ixForEachLongRange(LongRangeAbortableConsumer lrac)
      Specified by:
      ixForEachLongRange in interface OrderedLongSet
    • ixSubindexByPosOnNew

      public final OrderedLongSet ixSubindexByPosOnNew(long startPos, long endPosExclusive)
      Specified by:
      ixSubindexByPosOnNew in interface OrderedLongSet
    • ixSubindexByKeyOnNew

      public final OrderedLongSet ixSubindexByKeyOnNew(long startKey, long endKey)
      Specified by:
      ixSubindexByKeyOnNew in interface OrderedLongSet
    • ixGet

      public final long ixGet(long pos)
      Specified by:
      ixGet in interface OrderedLongSet
    • ixGetKeysForPositions

      public final void ixGetKeysForPositions(PrimitiveIterator.OfLong inputPositions, LongConsumer outputKeys)
      Specified by:
      ixGetKeysForPositions in interface OrderedLongSet
    • ixFind

      public final long ixFind(long key)
      Specified by:
      ixFind in interface OrderedLongSet
    • ixIterator

      public final RowSet.Iterator ixIterator()
      Specified by:
      ixIterator in interface OrderedLongSet
    • ixSearchIterator

      public final RowSet.SearchIterator ixSearchIterator()
      Specified by:
      ixSearchIterator in interface OrderedLongSet
    • ixReverseIterator

      public final RowSet.SearchIterator ixReverseIterator()
      Specified by:
      ixReverseIterator in interface OrderedLongSet
    • ixRangeIterator

      public final RowSet.RangeIterator ixRangeIterator()
      Specified by:
      ixRangeIterator in interface OrderedLongSet
    • ixCardinality

      public final long ixCardinality()
      Specified by:
      ixCardinality in interface OrderedLongSet
    • ixIsEmpty

      public final boolean ixIsEmpty()
      Specified by:
      ixIsEmpty in interface OrderedLongSet
    • ixUpdate

      public final OrderedLongSet ixUpdate(OrderedLongSet added, OrderedLongSet removed)
      Specified by:
      ixUpdate in interface OrderedLongSet
    • ixRemove

      public final OrderedLongSet ixRemove(OrderedLongSet removed)
      Specified by:
      ixRemove in interface OrderedLongSet
    • remove

      public final OrderedLongSet remove(OrderedLongSet removed)
    • ixRemoveRange

      public final OrderedLongSet ixRemoveRange(long startKey, long endKey)
      Specified by:
      ixRemoveRange in interface OrderedLongSet
    • ixRetain

      public final OrderedLongSet ixRetain(OrderedLongSet toIntersect)
      Specified by:
      ixRetain in interface OrderedLongSet
    • ixRetainRange

      public final OrderedLongSet ixRetainRange(long start, long end)
      Specified by:
      ixRetainRange in interface OrderedLongSet
    • ixIntersectOnNew

      public final OrderedLongSet ixIntersectOnNew(OrderedLongSet toIntersect)
      Specified by:
      ixIntersectOnNew in interface OrderedLongSet
    • intersectOnNew

      public final OrderedLongSet intersectOnNew(OrderedLongSet toIntersect)
    • ixContainsRange

      public final boolean ixContainsRange(long start, long end)
      Specified by:
      ixContainsRange in interface OrderedLongSet
    • ixOverlaps

      public final boolean ixOverlaps(OrderedLongSet impl)
      Specified by:
      ixOverlaps in interface OrderedLongSet
    • ixOverlapsRange

      public final boolean ixOverlapsRange(long start, long end)
      Specified by:
      ixOverlapsRange in interface OrderedLongSet
    • ixSubsetOf

      public final boolean ixSubsetOf(OrderedLongSet other)
      Specified by:
      ixSubsetOf in interface OrderedLongSet
    • ixMinusOnNew

      public final OrderedLongSet ixMinusOnNew(OrderedLongSet other)
      Specified by:
      ixMinusOnNew in interface OrderedLongSet
    • ixUnionOnNew

      public final OrderedLongSet ixUnionOnNew(OrderedLongSet other)
      Specified by:
      ixUnionOnNew in interface OrderedLongSet
    • ixShiftOnNew

      public final OrderedLongSet ixShiftOnNew(long shiftAmount)
      Specified by:
      ixShiftOnNew in interface OrderedLongSet
    • ixShiftInPlace

      public final OrderedLongSet ixShiftInPlace(long shiftAmount)
      Specified by:
      ixShiftInPlace in interface OrderedLongSet
    • ixInsertWithShift

      public final OrderedLongSet ixInsertWithShift(long shiftAmount, OrderedLongSet other)
      Specified by:
      ixInsertWithShift in interface OrderedLongSet
    • ixInsert

      public final OrderedLongSet ixInsert(OrderedLongSet added)
      Specified by:
      ixInsert in interface OrderedLongSet
    • ixGetRowSequenceByPosition

      public final RowSequence ixGetRowSequenceByPosition(long startPositionInclusive, long length)
      Specified by:
      ixGetRowSequenceByPosition in interface OrderedLongSet
    • ixGetRowSequenceByKeyRange

      public final RowSequence ixGetRowSequenceByKeyRange(long startKeyInclusive, long endKeyInclusive)
      Specified by:
      ixGetRowSequenceByKeyRange in interface OrderedLongSet
    • ixGetRowSequenceIterator

      public final RowSequence.Iterator ixGetRowSequenceIterator()
      Specified by:
      ixGetRowSequenceIterator in interface OrderedLongSet
    • ixRangesCountUpperBound

      public final long ixRangesCountUpperBound()
      Specified by:
      ixRangesCountUpperBound in interface OrderedLongSet
    • ixGetAverageRunLengthEstimate

      public final long ixGetAverageRunLengthEstimate()
      Specified by:
      ixGetAverageRunLengthEstimate in interface OrderedLongSet
    • ixToRspOnNew

      public final RspBitmap ixToRspOnNew()
      Specified by:
      ixToRspOnNew in interface OrderedLongSet
    • toRsp

      public final RspBitmap toRsp()
    • ixInvertOnNew

      public final OrderedLongSet ixInvertOnNew(OrderedLongSet keys, long maxPosition)
      Description copied from interface: OrderedLongSet
      Invert the given OrderedLongSet.
      Specified by:
      ixInvertOnNew in interface OrderedLongSet
      Parameters:
      keys - OrderedLongSet of keys to invert
      maxPosition - the largest position to add to indexBuilder, inclusive
      Returns:
      the inverse of keys
    • ixCompact

      public final OrderedLongSet ixCompact()
      Specified by:
      ixCompact in interface OrderedLongSet
    • ixValidate

      public final void ixValidate(String failMsg)
      Specified by:
      ixValidate in interface OrderedLongSet