Buffer

trait Buffer[T] extends Int => T

Mutable indexed buffer abstraction. All modifications happens in-place.

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
trait Int => T
class Object
trait Matchable
class Any

Document{}

def apply(index: Int): T

Returns value at the provided index.

Returns value at the provided index.

def update(index: Int, value: T): Buffer[T]

Updates value at the provided index.

Updates value at the provided index.

Throws
IndexOutOfBoundsException

if index lower than zero.

def copy: Buffer[T]

Creates a copy of this buffer.

Creates a copy of this buffer.

def emptyCopy: Buffer[T]

Creates a copy of this buffer.

Creates a copy of this buffer.

def toArray[T1 >: T](`evidence$1`: ClassTag[T1]): Array[T1]

Returns a trimmed copy of an underlying array.

Returns a trimmed copy of an underlying array.

def asArray: Array[T]

Returns a trimmed copy of an underlying array.

Returns a trimmed copy of an underlying array.

def asSlice: Slice[T]

Wraps accessible internal state as a Slice without making any copy.

Wraps accessible internal state as a Slice without making any copy.

def slice(from: Int, to: Int): Slice[T]

Takes range and returns a Slice.

Takes range and returns a Slice.

@inline
final def length: Int

Length of the accessible part of the buffer.

Length of the accessible part of the buffer.

@inline
final def isEmpty: Boolean

Is the accessible part of the buffer empty?

Is the accessible part of the buffer empty?

@inline
final def nonEmpty: Boolean

Is the accessible part of the buffer non empty?

Is the accessible part of the buffer non empty?

@inline
final def top: Int

Returns topIndex value.

Returns topIndex value.

@inline
final def head: T

Returns value at the topIndex.

Returns value at the topIndex.

@inline
final def headOption: Option[T]

Returns Some value at the topIndex or None if empty buffer.

Returns Some value at the topIndex or None if empty buffer.

@inline
final def last: T

Returns value at the zero index.

Returns value at the zero index.

@inline
final def lastOption: Option[T]

Returns Some value at the zero index, or None if empty buffer.

Returns Some value at the zero index, or None if empty buffer.

@inline
final def tail: Buffer[T]

Returns this buffer after decrementing topIndex .

Returns this buffer after decrementing topIndex .

@inline
final def init: Buffer[T]

Returns this buffer without a first element.

Returns this buffer without a first element.

@inline
final def get(index: Int): Option[T]

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.

final def modify(index: Int, map: T => T): Buffer[T]

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 Params
index

value's index

map

map function

Throws
IndexOutOfBoundsException

if index lower than zero.

@inline
final def mapInPlace(f: T => T): Buffer[T]

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 Params
f

map function

@inline
final def map[K](f: T => K): Iterable[K]

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 Params
f

map function

final def modifyAll(map: T => T): Buffer[T]

Updates all values in the range [0,length) using the function.

Updates all values in the range [0,length) using the function.

Value Params
map

map function

final def modifyAllWhen(map: T => T, pred: T => Boolean): Buffer[T]

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 Params
map

map function

pred

filter function

final def modifyRange(fromIndex: Int, toIndex: Int, map: T => T): Buffer[T]

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 Params
fromIndex

index of the first value inclusive

map

map function

toIndex

index of the last value exclusive

Throws
IndexOutOfBoundsException

if index lower than zero.

final def modifyRangeWhen(fromIndex: Int, toIndex: Int, map: T => T, pred: T => Boolean): Buffer[T]

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 Params
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.

final def set(index: Int): Buffer[T]

Sets topIndex value.

Sets topIndex value.

final def touch(index: Int): Buffer[T]

Sets topIndex value if lower than index, otherwise keeps existing.

Sets topIndex value if lower than index, otherwise keeps existing.

final def trim(size: Int): Buffer[T]

Trims the buffer, if needed, to have at most the size.

Trims the buffer, if needed, to have at most the size.

final def rewind(distance: Int): Buffer[T]

Moves topIndex value left by the distance.

Moves topIndex value left by the distance.

final def forward(distance: Int): Buffer[T]

Moves topIndex value right by the distance.

Moves topIndex value right by the distance.

final def reset: Int

Resets buffer, sets topIndex to -1.

Resets buffer, sets topIndex to -1.

  • Does not clear existing values.
Returns

previous topIndex

@inline
final def append(value: T): Buffer[T]

Appends value at the end of the buffer and advances topIndex.

Appends value at the end of the buffer and advances topIndex.

@inline
final def appendArray(values: Array[T]): Buffer[T]

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.

@inline
final def appendSlice(slice: Slice[T]): Buffer[T]

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.

@inline
final def appendSequence(values: IndexedSeq[T]): Buffer[T]

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.

final def appendFromIterator(iterator: Iterator[T]): Buffer[T]

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.

@inline
final def appendFromIterator(numberOfValues: Int, iterator: Iterator[T]): Buffer[T]

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.

@inline
final def appendIterable(iterable: Iterable[T]): Buffer[T]

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.

final def insert(index: Int, value: T): Buffer[T]

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.

def insertArray(index: Int, sourceIndex: Int, insertLength: Int, sourceArray: Array[T]): Buffer[T]

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.
def insertSlice(index: Int, slice: Slice[T]): Buffer[T]

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.
final def insertValues(index: Int, sourceIndex: Int, numberOfValues: Int, source: Int => T): Buffer[T]

Shift current content to the right starting from indexat the insertLength distance, iterates over the source indexes and copies values into the gap.

Shift current content to the right starting from indexat 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.
final def insertFromIterator(index: Int, iterator: Iterator[T]): Buffer[T]

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.
final def insertFromIteratorReverse(index: Int, iterator: Iterator[T]): Buffer[T]

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.
final def insertFromIterator(index: Int, numberOfValues: Int, iterator: Iterator[T]): Buffer[T]

Shift current content to the right starting from indexat the min(iterator.length, insertLength) distance, and inserts iterated values into the gap.

Shift current content to the right starting from indexat 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.
final def insertFromIteratorReverse(index: Int, numberOfValues: Int, iterator: Iterator[T]): Buffer[T]

Shift current content to the right starting from indexat 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 indexat 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.
def replaceFromArray(index: Int, sourceIndex: Int, replaceLength: Int, sourceArray: Array[T]): Buffer[T]

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).

def replaceFromSlice(index: Int, slice: Slice[T]): Buffer[T]

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.

final def replaceValues(index: Int, sourceIndex: Int, numberOfValues: Int, source: Int => T): Buffer[T]

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).

final def replaceFromIterator(index: Int, numberOfValues: Int, iterator: Iterator[T]): Buffer[T]

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.

final def replaceFromIteratorReverse(index: Int, numberOfValues: Int, iterator: Iterator[T]): Buffer[T]

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.

@inline
final def remove(index: Int): Buffer[T]

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.

@inline
final def removeRange(fromIndex: Int, toIndex: Int): Buffer[T]

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.

@inline
final def removeWhen(pred: T => Boolean): Buffer[T]

Removes values matching the predicate.

Removes values matching the predicate.

def shiftRight(index: Int, distance: Int): Buffer[T]

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.
def shiftLeft(index: Int, distance: Int): Buffer[T]

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.
def moveRangeRight(fromIndex: Int, toIndex: Int, distance: Int): Buffer[T]

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.
def moveRangeLeft(fromIndex: Int, toIndex: Int, distance: Int): Buffer[T]

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.
final def swap(first: Int, second: Int): Buffer[T]

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.
def swapRange(first: Int, second: Int, swapLength: Int): Buffer[T]

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.
final def store(value: T): Buffer[T]

Replace value at the topIndex.

Replace value at the topIndex.

@inline
final def push(value: T): Buffer[T]

Appends value to the topIndex. Same as append

Appends value to the topIndex. Same as append

@inline
final def peek: T

Returns value at the topIndex.

Returns value at the topIndex.

@inline
final def peek(offset: Int): T

Returns value at the topIndex - offset.

Returns value at the topIndex - offset.

@inline
final def peekOption(offset: Int): Option[T]

Returns value at the topIndex - offset.

Returns value at the topIndex - offset.

final def pop: T

Returns value at the topIndex, and moves topIndex back.

Returns value at the topIndex, and moves topIndex back.

final def iterator: Iterator[T]

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,

final def reverseIterator: Iterator[T]

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.

Value members

Abstract methods

def optimize(): Buffer[T]

Attempts to optimize buffer storage, if needed.

Attempts to optimize buffer storage, if needed.

Concrete methods

final def contains(value: T): Boolean

Returns true if buffer contains given value.

Returns true if buffer contains given value.

final def exists(pred: T => Boolean): Boolean

Returns true if buffer contains value fulfilling the predicate.

Returns true if buffer contains value fulfilling the predicate.

Inherited methods

@unspecialized
def andThen[A](g: T => A): Int => A
Inherited from
Function1
@unspecialized
def compose[A](g: A => Int): A => T
Inherited from
Function1
override def toString(): String
Definition Classes
Function1 -> Any
Inherited from
Function1