UNPKG

circular_buffer_js

Version:

Fast TS/JS implementation of a circular buffer (aka ring queue, cyclic list, etc.) Extremely well tested.

37 lines (36 loc) 1.35 kB
import { version } from './generated/package_version'; declare type TraversalFunctor<T> = (_element: T, _index?: number, _array?: T[]) => unknown; declare class circular_buffer<T> { private _values; private _cursor; private _offset; private _length; private _capacity; constructor(uCapacity: number); get capacity(): number; set capacity(newSize: number); get length(): number; set length(newLength: number); get available(): number; get isEmpty(): boolean; get isFull(): boolean; get first(): T; get last(): T; static from<T>(i: Iterable<T> | ArrayLike<T>, map_fn?: (_k: T, _i: number) => T, t?: unknown): circular_buffer<T>; push(v: T): T; shove(v: T): T | undefined; fill(x: T): T[]; indexOf(searchElement: T, fromIndex?: number): number; find(predicate: TraversalFunctor<T>, thisArg?: unknown): T | unknown; every(functor: TraversalFunctor<T>, thisArg?: unknown): boolean; some(functor: TraversalFunctor<T>, thisArg?: unknown): boolean; reverse(): circular_buffer<T>; clear(): T[]; pop(): T | undefined; at(i: number): T; pos(i: number): T; offset(): number; resize(newSize: number, preferEnd?: boolean): void; toArray(): T[]; } export { version, circular_buffer, TraversalFunctor };