Mutable indexed buffer abstraction. All modifications happens in-place.
In addition, the Buffer API offers both Stack- and List-like interfaces. For the purpose of the List-like processing, the head is a top element in the buffer.
- Companion:
- object
Value members
Abstract methods
Wraps accessible internal state as a Slice without making any copy.
Wraps accessible internal state as a Slice without making any copy.
Shift current content to the right starting from index
at the insertLength
distance,
and copies array chunk into the gap.
Shift current content to the right starting from index
at the insertLength
distance,
and copies array chunk into the gap.
- Sets topIndex to be at least at the end of the new chunk of values.
Shift current content to the right starting from index
at the slice.length
distance,
and copies slice into the gap.
Shift current content to the right starting from index
at the slice.length
distance,
and copies slice into the gap.
- Sets topIndex to be at least at the end of the new chunk of values.
Moves values in [fromIndex, toIndex) to the left at a distance, to become [fromIndex - distance, toIndex - distance), and moves right any existing values in [fromIndex - distance, fromIndex) to become [toIndex, toIndex + distance).
Moves values in [fromIndex, toIndex) to the left at a distance, to become [fromIndex - distance, toIndex - distance), and moves right any existing values in [fromIndex - distance, fromIndex) to become [toIndex, toIndex + distance).
- Ignores negative distance.
- Does nothing if fromIndex > topIndex.
- Moves topIndex if affected.
Moves values in [fromIndex, toIndex) to the right at a distance, to become [fromIndex + distance, toIndex + distance), and moves left any existing values in [toIndex, toIndex + distance) to become [fromIndex, fromIndex + distance).
Moves values in [fromIndex, toIndex) to the right at a distance, to become [fromIndex + distance, toIndex + distance), and moves left any existing values in [toIndex, toIndex + distance) to become [fromIndex, fromIndex + distance).
- Ignores negative distance.
- Does nothing if fromIndex > topIndex.
- Moves topIndex if affected.
Replaces current values in the range [index, index + replaceLength) with values of the array range [sourceIndex, sourceIndex + replaceLength).
Replaces current values in the range [index, index + replaceLength) with values of the array range [sourceIndex, sourceIndex + replaceLength).
Replaces current values in the range [index, index + slice.length) with values of the slice.
Replaces current values in the range [index, index + slice.length) with values of the slice.
Moves values in [index, length) left to [index-distance, length - distance). Effectively removes range (index-distance, index].
Moves values in [index, length) left to [index-distance, length - distance). Effectively removes range (index-distance, index].
- Ignores negative distance.
- Moves topIndex if affected.
Moves values in [index, length) right to [index+distance, length + distance). Effectively creates a new range [index, index+distance).
Moves values in [index, length) right to [index+distance, length + distance). Effectively creates a new range [index, index+distance).
- Ignores negative distance.
- Does not clear existing values inside [index, index+distance).
- Moves topIndex if affected.
Swap values in range [first, first + swapLength) with values in range [second, second + swapLength)
Swap values in range [first, first + swapLength) with values in range [second, second + swapLength)
- Does nothing if any index falls outside [0,length) or if indexes are equal.
- if [first, first + swapLength) overlaps with [second, second + swapLength) then the later overwrites the former.
Concrete methods
Appends value at the end of the buffer and advances topIndex.
Appends value at the end of the buffer and advances topIndex.
Appends values from the given array at the end of the buffer and advances topIndex.
Appends values from the given array at the end of the buffer and advances topIndex.
Appends values from the given iterator at the end of the buffer and advances topIndex.
Appends values from the given iterator at the end of the buffer and advances topIndex.
Appends number of values from the given iterator at the end of the buffer and advances topIndex.
Appends number of values from the given iterator at the end of the buffer and advances topIndex.
Appends values from the given iterable at the end of the buffer and advances topIndex.
Appends values from the given iterable at the end of the buffer and advances topIndex.
Appends values from the given sequence at the end of the buffer and advances topIndex.
Appends values from the given sequence at the end of the buffer and advances topIndex.
Appends values from the given slice at the end of the buffer and advances topIndex.
Appends values from the given slice at the end of the buffer and advances topIndex.
Returns true if buffer contains value fulfilling the predicate.
Returns true if buffer contains value fulfilling the predicate.
Returns Some value at the index, or None if index outside of range.
Returns Some value at the index, or None if index outside of range.
Returns Some value at the topIndex or None if empty buffer.
Returns Some value at the topIndex or None if empty buffer.
Shifts content in [index, length) one step to the right and updates value at index.
Shifts content in [index, length) one step to the right and updates value at index.
Inserts iterated values into the gap made by shiftjng buffer right, starting from the index.
Inserts iterated values into the gap made by shiftjng buffer right, starting from the index.
- Sets topIndex to be at least at the end of the new chunk of values.
Shift current content to the right starting from index
at the min(iterator.length, insertLength)
distance,
and inserts iterated values into the gap.
Shift current content to the right starting from index
at the min(iterator.length, insertLength)
distance,
and inserts iterated values into the gap.
- Sets topIndex to be at least at the end of the new chunk of values.
Inserts iterated values, in the reverse order, into the gap made by shiftjng buffer right, starting from the index.
Inserts iterated values, in the reverse order, into the gap made by shiftjng buffer right, starting from the index.
- Sets topIndex to be at least at the end of the new chunk of values.
Shift current content to the right starting from index
at the min(iterator.length, insertLength)
distance,
and inserts iterated values into the gap in the reverse order.
Shift current content to the right starting from index
at the min(iterator.length, insertLength)
distance,
and inserts iterated values into the gap in the reverse order.
- Sets topIndex to be at least at the end of the new chunk of values.
Shift current content to the right starting from index
at the insertLength
distance,
iterates over the source indexes and copies values into the gap.
Shift current content to the right starting from index
at the insertLength
distance,
iterates over the source indexes and copies values into the gap.
- Sets topIndex to be at least at the end of the new chunk of values.
Returns an iterator over actual buffer values, starting from the zero index up.
Returns an iterator over actual buffer values, starting from the zero index up.
- Note:
does not copy buffer values,
Returns Some value at the zero index, or None if empty buffer.
Returns Some value at the zero index, or None if empty buffer.
Iterable representing lazily mapped values of this buffer at the time of access.
Iterable representing lazily mapped values of this buffer at the time of access.
- Value parameters:
- f
map function
Updates in-place all values in the range [0,length) using the function.
Updates in-place all values in the range [0,length) using the function.
- Value parameters:
- f
map function
Updates value at the provided index using the function. Index must fall within range [0,length).
Updates value at the provided index using the function. Index must fall within range [0,length).
- Value parameters:
- index
value's index
- map
map function
- Throws:
- IndexOutOfBoundsException
if index lower than zero.
Updates all values in the range [0,length) using the function.
Updates all values in the range [0,length) using the function.
- Value parameters:
- map
map function
Updates all accepted values in the range [0,length) using the function.
Updates all accepted values in the range [0,length) using the function.
- Value parameters:
- map
map function
- pred
filter function
Updates values in the range [startIndex,toIndex)^^[0,length) using the function. One of {startIndex,toIndex} must fall within range [0,length).
Updates values in the range [startIndex,toIndex)^^[0,length) using the function. One of {startIndex,toIndex} must fall within range [0,length).
- Value parameters:
- fromIndex
index of the first value inclusive
- map
map function
- toIndex
index of the last value exclusive
- Throws:
- IndexOutOfBoundsException
if index lower than zero.
Updates values in the range [startIndex,toIndex)^^[0,length) using the function. One of {startIndex,toIndex} must fall within range [0,length).
Updates values in the range [startIndex,toIndex)^^[0,length) using the function. One of {startIndex,toIndex} must fall within range [0,length).
- Value parameters:
- fromIndex
index of the first value inclusive
- map
map function
- pred
filter function
- toIndex
index of the last value exclusive
- Throws:
- IndexOutOfBoundsException
if index lower than zero.
Is the accessible part of the buffer non empty?
Is the accessible part of the buffer non empty?
Returns value at the topIndex, and moves topIndex back.
Returns value at the topIndex, and moves topIndex back.
Removes value at index and shifts content in [index+1, length) to the left.
Removes value at index and shifts content in [index+1, length) to the left.
Removes values in the range [fromIndex, toIndex) and shifts content in [toIndex, length) to the left.
Removes values in the range [fromIndex, toIndex) and shifts content in [toIndex, length) to the left.
Replaces current values in the range [index, index + min(iterator.length, replaceLength) ) with values returned from the iterator.
Replaces current values in the range [index, index + min(iterator.length, replaceLength) ) with values returned from the iterator.
Replaces current values in the range [index, index + min(iterator.length, replaceLength)) with values returned from the iterator in the reverse order.
Replaces current values in the range [index, index + min(iterator.length, replaceLength)) with values returned from the iterator in the reverse order.
Replaces current values in the range [index, index + replaceLength) with values returned by the function when iterating argument in the range [sourceIndex, sourceIndex + replaceLength).
Replaces current values in the range [index, index + replaceLength) with values returned by the function when iterating argument in the range [sourceIndex, sourceIndex + replaceLength).
Resets buffer, sets topIndex to -1.
Resets buffer, sets topIndex to -1.
- Does not clear existing values.
- Returns:
previous topIndex
Returns a reverse iterator over actual buffer values, starting from the topIndex down.
Returns a reverse iterator over actual buffer values, starting from the topIndex down.
Swap two values at the provided indexes.
Value at first
becomes value at second
, and vice versa.
Swap two values at the provided indexes.
Value at first
becomes value at second
, and vice versa.
- Does nothing if any index falls outside [0,length) or if indexes are equal.
Returns this buffer after decrementing topIndex .
Returns this buffer after decrementing topIndex .