All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.carrotsearch.hppc.FloatStack Maven / Gradle / Ivy

The newest version!
package com.carrotsearch.hppc;

/*  */

import com.carrotsearch.hppc.cursors.FloatCursor;

/**
 * A subclass of {@link FloatArrayList} adding stack-related utility methods.
 * The top of the stack is at the {@link #size()} - 1 element.
 */
  
 @com.carrotsearch.hppc.Generated(
    date = "2018-05-21T12:24:05+0200",
    value = "KTypeStack.java") 
public class FloatStack extends FloatArrayList {
  /**
   * New instance with sane defaults.
   */
  public FloatStack() {
    super();
  }

  /**
   * New instance with sane defaults.
   * 
   * @param expectedElements
   *          The expected number of elements guaranteed not to cause buffer
   *          expansion (inclusive).
   */
  public FloatStack(int expectedElements) {
    super(expectedElements);
  }

  /**
   * New instance with sane defaults.
   * 
   * @param expectedElements
   *          The expected number of elements guaranteed not to cause buffer
   *          expansion (inclusive).
   * @param resizer
   *          Underlying buffer sizing strategy.
   */
  public FloatStack(int expectedElements, ArraySizingStrategy resizer) {
    super(expectedElements, resizer);
  }

  /**
   * Create a stack by pushing all elements of another container to it.
   */
  public FloatStack(FloatContainer container) {
    super(container);
  }

  /**
   * Adds one float to the stack.
   */
  public void push(float e1) {
    ensureBufferSpace(1);
    buffer[elementsCount++] = e1;
  }

  /**
   * Adds two floats to the stack.
   */
  public void push(float e1, float e2) {
    ensureBufferSpace(2);
    buffer[elementsCount++] = e1;
    buffer[elementsCount++] = e2;
  }

  /**
   * Adds three floats to the stack.
   */
  public void push(float e1, float e2, float e3) {
    ensureBufferSpace(3);
    buffer[elementsCount++] = e1;
    buffer[elementsCount++] = e2;
    buffer[elementsCount++] = e3;
  }

  /**
   * Adds four floats to the stack.
   */
  public void push(float e1, float e2, float e3, float e4) {
    ensureBufferSpace(4);
    buffer[elementsCount++] = e1;
    buffer[elementsCount++] = e2;
    buffer[elementsCount++] = e3;
    buffer[elementsCount++] = e4;
  }

  /**
   * Add a range of array elements to the stack.
   */
  public void push(float[] elements, int start, int len) {
    assert start >= 0 && len >= 0;

    ensureBufferSpace(len);
    System.arraycopy(elements, start, buffer, elementsCount, len);
    elementsCount += len;
  }

  /**
   * Vararg-signature method for pushing elements at the top of the stack.
   * 

* This method is handy, but costly if used in tight loops (anonymous array * passing) *

*/ /* */ public final void push(float... elements) { push(elements, 0, elements.length); } /** * Pushes all elements from another container to the top of the stack. */ public int pushAll(FloatContainer container) { return addAll(container); } /** * Pushes all elements from another iterable to the top of the stack. */ public int pushAll(Iterable iterable) { return addAll(iterable); } /** * Discard an arbitrary number of elements from the top of the stack. */ public void discard(int count) { assert elementsCount >= count; elementsCount -= count; /* */ } /** * Discard the top element from the stack. */ public void discard() { assert elementsCount > 0; elementsCount--; /* */ } /** * Remove the top element from the stack and return it. */ public float pop() { assert elementsCount > 0; final float v = buffer[--elementsCount]; /* */ return v; } /** * Peek at the top element on the stack. */ public float peek() { assert elementsCount > 0; return buffer[elementsCount - 1]; } /** * Create a stack by pushing a variable number of arguments to it. */ /* */ public static FloatStack from(float... elements) { final FloatStack stack = new FloatStack(elements.length); stack.push(elements); return stack; } /** * {@inheritDoc} */ @Override public FloatStack clone() { return (FloatStack) super.clone(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy