/* * Copyright 2010 Google Inc. * * 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. */ package elemental.util; /** * A lightweight array of numbers. * * @see elemental.js.util.JsArrayOfNumber */ public interface ArrayOfNumber { /** * Returns a new array that is the concatenation of this array and <code> * values</code>. This method does not mutate the current array. */ ArrayOfNumber concat(ArrayOfNumber values); /** * Gets the value at a given index. * * If an undefined or non-numeric value exists at the given index, a * type-conversion error will occur in hosted mode and unpredictable behavior * may occur in web mode. * * @param index the index to be retrieved * @return the value at the given index */ double get(int index); /** * Inserts a new element into the array at the specified index. * * Note: If index >= the length of the array, the element will be appended to * the end. Also if the index is negative, the element will be inserted * starting from the end of the array. */ void insert(int index, double value); /** * Returns true if the length of the array is zero. * * @return true when length is zero */ boolean isEmpty(); /** * Check that the specified <code>index</code> has been initialized to a valid * value. */ boolean isSet(int index); /** * Convert each element of the array to a String and join them with a comma * separator. The value returned from this method may vary between browsers * based on how JavaScript values are converted into strings. */ String join(); /** * Convert each element of the array to a String and join them with a comma * separator. The value returned from this method may vary between browsers * based on how JavaScript values are converted into strings. */ String join(String separator); /** * Gets the length of the array. * * @return the array length */ int length(); /** * Returns the last value of the array; * * @return the last value */ double peek(); /** * Remove and return the element from the end of the array. * * @return the removed value */ double pop(); /** * Pushes the given number onto the end of the array. */ void push(double value); /** * Removes the element at the specified index. */ void removeByIndex(int index); /** * Sets the value value at a given index. * * If the index is out of bounds, the value will still be set. The array's * length will be updated to encompass the bounds implied by the added value. * * @param index the index to be set * @param value the value to be stored */ void set(int index, double value); /** * Reset the length of the array. * * @param length the new length of the array */ void setLength(int length); /** * Shifts the first value off the array. * * @return the shifted value */ double shift(); /** * Sorts the contents of the array in ascending order. */ void sort(); /** * Sorts the contents of the Array based on the {@link CanCompareNumber}. * * @param comparator */ void sort(CanCompareNumber comparator); /** * Removes the specified number of elements starting at index and returns the * removed elements. */ ArrayOfNumber splice(int index, int count); /** * Shifts a value onto the beginning of the array. * * @param value the value to the stored */ void unshift(double value); }