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
TypeScript
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 };