UNPKG

@tensorflow/tfjs-data

Version:

TensorFlow Data API in JavaScript

86 lines (85 loc) 2.82 kB
/** * @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; }