mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-10 22:45:24 +08:00
This is an early release and there are several things that are known not to work if you're porting your iOS app to Android. See the Known Issues guide on the website. We will work with the community to reach platform parity with iOS.
79 lines
2.0 KiB
Java
79 lines
2.0 KiB
Java
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package com.facebook.react.common;
|
|
|
|
/**
|
|
* Object wrapping an auto-expanding long[]. Like an ArrayList<Long> but without the autoboxing.
|
|
*/
|
|
public class LongArray {
|
|
|
|
private static final double INNER_ARRAY_GROWTH_FACTOR = 1.8;
|
|
|
|
private long[] mArray;
|
|
private int mLength;
|
|
|
|
public static LongArray createWithInitialCapacity(int initialCapacity) {
|
|
return new LongArray(initialCapacity);
|
|
}
|
|
|
|
private LongArray(int initialCapacity) {
|
|
mArray = new long[initialCapacity];
|
|
mLength = 0;
|
|
}
|
|
|
|
public void add(long value) {
|
|
growArrayIfNeeded();
|
|
mArray[mLength++] = value;
|
|
}
|
|
|
|
public long get(int index) {
|
|
if (index >= mLength) {
|
|
throw new IndexOutOfBoundsException("" + index + " >= " + mLength);
|
|
}
|
|
return mArray[index];
|
|
}
|
|
|
|
public void set(int index, long value) {
|
|
if (index >= mLength) {
|
|
throw new IndexOutOfBoundsException("" + index + " >= " + mLength);
|
|
}
|
|
mArray[index] = value;
|
|
}
|
|
|
|
public int size() {
|
|
return mLength;
|
|
}
|
|
|
|
public boolean isEmpty() {
|
|
return mLength == 0;
|
|
}
|
|
|
|
/**
|
|
* Removes the *last* n items of the array all at once.
|
|
*/
|
|
public void dropTail(int n) {
|
|
if (n > mLength) {
|
|
throw new IndexOutOfBoundsException(
|
|
"Trying to drop " + n + " items from array of length " + mLength);
|
|
}
|
|
mLength -= n;
|
|
}
|
|
|
|
private void growArrayIfNeeded() {
|
|
if (mLength == mArray.length) {
|
|
// If the initial capacity was 1 we need to ensure it at least grows by 1.
|
|
int newSize = Math.max(mLength + 1, (int)(mLength * INNER_ARRAY_GROWTH_FACTOR));
|
|
long[] newArray = new long[newSize];
|
|
System.arraycopy(mArray, 0, newArray, 0, mLength);
|
|
mArray = newArray;
|
|
}
|
|
}
|
|
}
|