@tensorflow/tfjs-data
Version:
TensorFlow Data API in JavaScript
86 lines (85 loc) • 2.82 kB
TypeScript
/**
* @license
* Copyright 2018 Google LLC. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* =============================================================================
*/
/// <amd-module name="@tensorflow/tfjs-data/dist/util/ring_buffer" />
/**
* A ring buffer, providing O(1) FIFO, LIFO, and related operations.
*/
export declare class RingBuffer<T> {
capacity: number;
protected begin: number;
protected end: number;
protected doubledCapacity: number;
protected data: T[];
/**
* Constructs a `RingBuffer`.
* @param capacity The number of items that the buffer can accomodate.
*/
constructor(capacity: number);
/**
* Map any index into the range 0 <= index < 2*capacity.
*/
protected wrap(index: number): number;
protected get(index: number): T;
protected set(index: number, value: T): void;
/**
* Returns the current number of items in the buffer.
*/
length(): number;
/**
* Reports whether the buffer is full.
* @returns true if the number of items in the buffer equals its capacity, and
* false otherwise.
*/
isFull(): boolean;
/**
* Reports whether the buffer is empty.
* @returns true if the number of items in the buffer equals zero, and
* false otherwise.
*/
isEmpty(): boolean;
/**
* Adds an item to the end of the buffer.
*/
push(value: T): void;
/**
* Adds many items to the end of the buffer, in order.
*/
pushAll(values: T[]): void;
/**
* Removes and returns the last item in the buffer.
*/
pop(): T;
/**
* Adds an item to the beginning of the buffer.
*/
unshift(value: T): void;
/**
* Removes and returns the first item in the buffer.
*/
shift(): T;
/**
* Removes and returns a specific item in the buffer, and moves the last item
* to the vacated slot. This is useful for implementing a shuffling stream.
* Note that this operation necessarily scrambles the original order.
*
* @param relativeIndex: the index of the item to remove, relative to the
* first item in the buffer (e.g., hiding the ring nature of the underlying
* storage).
*/
shuffleExcise(relativeIndex: number): T;
}