Class SimplePositionedMutableByteRange

All Implemented Interfaces:
Comparable<ByteRange>, ByteRange, PositionedByteRange

Extends the basic AbstractPositionedByteRange implementation with position support and it is a mutable version. position is considered transient, not fundamental to the definition of the range, and does not participate in AbstractByteRange.compareTo(ByteRange), AbstractByteRange.hashCode(), or AbstractByteRange.equals(Object). Position is retained by copy operations.
  • Constructor Details

    • SimplePositionedMutableByteRange

      Create a new PositionedByteRange lacking a backing array and with an undefined viewport.
    • SimplePositionedMutableByteRange

      public SimplePositionedMutableByteRange(int capacity)
      Create a new PositionedByteRange over a new backing array of size capacity. The range's offset and length are 0 and capacity, respectively. the size of the backing array.
    • SimplePositionedMutableByteRange

      public SimplePositionedMutableByteRange(byte[] bytes)
      Create a new PositionedByteRange over the provided bytes. The array to wrap.
    • SimplePositionedMutableByteRange

      public SimplePositionedMutableByteRange(byte[] bytes, int offset, int length)
      Create a new PositionedByteRange over the provided bytes. The array to wrap. The offset into bytes considered the beginning of this range. The length of this range.
  • Method Details

    • unset

      Description copied from interface: ByteRange
      Nullifies this ByteRange. That is, it becomes a husk, being a range over no byte[] whatsoever.
    • set

      public PositionedByteRange set(int capacity)
      Description copied from interface: ByteRange
      Reuse this ByteRange over a new byte[]. offset is set to 0 and length is set to capacity.
      Specified by:
      set in interface ByteRange
      Specified by:
      set in interface PositionedByteRange
      Overrides:
      set in class AbstractPositionedByteRange
      Parameters:
      capacity - the size of a new byte[].
    • set

      public PositionedByteRange set(byte[] bytes)
      Description copied from interface: ByteRange
      Reuse this ByteRange over a new byte[]. offset is set to 0 and length is set to bytes.length. A null bytes IS supported, in which case this method will behave equivalently to ByteRange.unset().
      Specified by:
      set in interface ByteRange
      Specified by:
      set in interface PositionedByteRange
      Overrides:
      set in class AbstractPositionedByteRange
      Parameters:
      bytes - the array to wrap.
    • set

      public PositionedByteRange set(byte[] bytes, int offset, int length)
      Description copied from interface: ByteRange
      Reuse this ByteRange over a new byte[]. A null bytes IS supported, in which case this method will behave equivalently to ByteRange.unset(), regardless of the values of offset and length.
      Specified by:
      set in interface ByteRange
      Specified by:
      set in interface PositionedByteRange
      Overrides:
      set in class AbstractPositionedByteRange
      Parameters:
      bytes - The array to wrap.
      offset - The offset into bytes considered the beginning of this range.
      length - The length of this range.
      Returns:
      this.
    • setOffset

      public PositionedByteRange setOffset(int offset)
      Update the beginning of this range. offset + length may not be greater than bytes.length. Resets position to 0. the new start of this range.
      Specified by:
      setOffset in interface ByteRange
      Specified by:
      setOffset in interface PositionedByteRange
      Overrides:
      setOffset in class AbstractPositionedByteRange
      Parameters:
      offset - the new start of this range.
      Returns:
      this.
    • setLength

      public PositionedByteRange setLength(int length)
      Update the length of this range. offset + length should not be greater than bytes.length. If position is greater than the new length, sets position to length. The new length of this range.
      Specified by:
      setLength in interface ByteRange
      Specified by:
      setLength in interface PositionedByteRange
      Overrides:
      setLength in class AbstractPositionedByteRange
      Parameters:
      length - The new length of this range.
      Returns:
      this.
    • put

      public PositionedByteRange put(byte val)
      Description copied from interface: PositionedByteRange
      Store val at the next position in this range.
      Parameters:
      val - the new value.
      Returns:
      this.
    • put

      public PositionedByteRange put(byte[] val)
      Description copied from interface: PositionedByteRange
      Store the content of val in this range, starting at the next position.
      Parameters:
      val - the new value.
      Returns:
      this.
    • put

      public PositionedByteRange put(byte[] val, int offset, int length)
      Description copied from interface: PositionedByteRange
      Store length bytes from val into this range. Bytes from val are copied starting at offset into the range, starting at the current position.
      Parameters:
      val - the new value.
      offset - the offset in val from which to start copying.
      length - the number of bytes to copy from val.
      Returns:
      this.
    • get

      public PositionedByteRange get(int index, byte[] dst)
      Description copied from interface: ByteRange
      Fill dst with bytes from the range, starting from index.
      Specified by:
      get in interface ByteRange
      Specified by:
      get in interface PositionedByteRange
      Overrides:
      get in class AbstractPositionedByteRange
      Parameters:
      index - zero-based index into this range.
      dst - the destination of the copy.
      Returns:
      this.
    • get

      public PositionedByteRange get(int index, byte[] dst, int offset, int length)
      Description copied from interface: ByteRange
      Fill dst with bytes from the range, starting from index. length bytes are copied into dst, starting at offset.
      Specified by:
      get in interface ByteRange
      Specified by:
      get in interface PositionedByteRange
      Overrides:
      get in class AbstractPositionedByteRange
      Parameters:
      index - zero-based index into this range.
      dst - the destination of the copy.
      offset - the offset into dst to start the copy.
      length - the number of bytes to copy into dst.
      Returns:
      this.
    • put

      public PositionedByteRange put(int index, byte val)
      Description copied from interface: ByteRange
      Store val at index.
      Parameters:
      index - the index in the range where val is stored.
      val - the value to store.
      Returns:
      this.
    • put

      public PositionedByteRange put(int index, byte[] val)
      Description copied from interface: ByteRange
      Store val at index.
      Parameters:
      index - the index in the range where val is stored.
      val - the value to store.
      Returns:
      this.
    • put

      public PositionedByteRange put(int index, byte[] val, int offset, int length)
      Description copied from interface: ByteRange
      Store length bytes from val into this range, starting at index. Bytes from val are copied starting at offset into the range.
      Parameters:
      index - position in this range to start the copy.
      val - the value to store.
      offset - the offset in val from which to start copying.
      length - the number of bytes to copy from val.
      Returns:
      this.
    • deepCopy

      Description copied from interface: ByteRange
      Create a new ByteRange with new backing byte[] containing a copy of the content from this range's window.
      Returns:
      Deep copy
    • shallowCopy

      Description copied from interface: ByteRange
      Create a new ByteRange that points at this range's byte[]. Modifying the shallowCopy will modify the bytes in this range's array. Pass over the hash code if it is already cached.
      Returns:
      new ByteRange object referencing this range's byte[].
    • shallowCopySubRange

      public PositionedByteRange shallowCopySubRange(int innerOffset, int copyLength)
      Description copied from interface: ByteRange
      Create a new ByteRange that points at this range's byte[]. The new range can have different values for offset and length, but modifying the shallowCopy will modify the bytes in this range's array. Pass over the hash code if it is already cached.
      Parameters:
      innerOffset - First byte of clone will be this.offset + copyOffset.
      copyLength - Number of bytes in the clone.
      Returns:
      new ByteRange object referencing this range's byte[].
    • putShort

      public PositionedByteRange putShort(short val)
      Description copied from interface: PositionedByteRange
      Store short val at the next position in this range.
      Parameters:
      val - the new value.
      Returns:
      this.
    • putInt

      public PositionedByteRange putInt(int val)
      Description copied from interface: PositionedByteRange
      Store int val at the next position in this range.
      Parameters:
      val - the new value.
      Returns:
      this.
    • putLong

      public PositionedByteRange putLong(long val)
      Description copied from interface: PositionedByteRange
      Store long val at the next position in this range.
      Parameters:
      val - the new value.
      Returns:
      this.
    • putVLong

      public int putVLong(long val)
      Description copied from interface: PositionedByteRange
      Store the long val at the next position as a VLong
      Parameters:
      val - the value to store
      Returns:
      number of bytes written
    • putShort

      public PositionedByteRange putShort(int index, short val)
      Description copied from interface: ByteRange
      Store the short value at index
      Parameters:
      index - the index in the range where val is stored
      val - the value to store
    • putInt

      public PositionedByteRange putInt(int index, int val)
      Description copied from interface: ByteRange
      Store the int value at index
      Parameters:
      index - the index in the range where val is stored
      val - the value to store
    • putLong

      public PositionedByteRange putLong(int index, long val)
      Description copied from interface: ByteRange
      Store the long value at index
      Parameters:
      index - the index in the range where val is stored
      val - the value to store
    • putVLong

      public int putVLong(int index, long val)
      Description copied from interface: ByteRange
      Store the long value at index as a VLong
      Parameters:
      index - the index in the range where val is stored
      val - the value to store
      Returns:
      number of bytes written