1104c45677660586026a7e74ef8c47d396403d50eMichael Jurka/*
2104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Copyright (C) 2010 The Android Open Source Project
3104c45677660586026a7e74ef8c47d396403d50eMichael Jurka *
4104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Licensed under the Apache License, Version 2.0 (the "License");
5104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * you may not use this file except in compliance with the License.
6104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * You may obtain a copy of the License at
7104c45677660586026a7e74ef8c47d396403d50eMichael Jurka *
8104c45677660586026a7e74ef8c47d396403d50eMichael Jurka *      http://www.apache.org/licenses/LICENSE-2.0
9104c45677660586026a7e74ef8c47d396403d50eMichael Jurka *
10104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * Unless required by applicable law or agreed to in writing, software
11104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * distributed under the License is distributed on an "AS IS" BASIS,
12104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * See the License for the specific language governing permissions and
14104c45677660586026a7e74ef8c47d396403d50eMichael Jurka * limitations under the License.
15104c45677660586026a7e74ef8c47d396403d50eMichael Jurka */
16104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
1706a4d3f1afee2d1069796d585838efbc7a1f491eSunny Goyalpackage com.android.gallery3d.glrenderer;
18104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
19104c45677660586026a7e74ef8c47d396403d50eMichael Jurkapublic class IntArray {
20104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    private static final int INIT_CAPACITY = 8;
21104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
22104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    private int mData[] = new int[INIT_CAPACITY];
23104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    private int mSize = 0;
24104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
25104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public void add(int value) {
26104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        if (mData.length == mSize) {
27104c45677660586026a7e74ef8c47d396403d50eMichael Jurka            int temp[] = new int[mSize + mSize];
28104c45677660586026a7e74ef8c47d396403d50eMichael Jurka            System.arraycopy(mData, 0, temp, 0, mSize);
29104c45677660586026a7e74ef8c47d396403d50eMichael Jurka            mData = temp;
30104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        }
31104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        mData[mSize++] = value;
32104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
33104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
34104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public int removeLast() {
35104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        mSize--;
36104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        return mData[mSize];
37104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
38104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
39104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public int size() {
40104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        return mSize;
41104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
42104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
43104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    // For testing only
44104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public int[] toArray(int[] result) {
45104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        if (result == null || result.length < mSize) {
46104c45677660586026a7e74ef8c47d396403d50eMichael Jurka            result = new int[mSize];
47104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        }
48104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        System.arraycopy(mData, 0, result, 0, mSize);
49104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        return result;
50104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
51104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
52104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public int[] getInternalArray() {
53104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        return mData;
54104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
55104c45677660586026a7e74ef8c47d396403d50eMichael Jurka
56104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    public void clear() {
57104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        mSize = 0;
58104c45677660586026a7e74ef8c47d396403d50eMichael Jurka        if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY];
59104c45677660586026a7e74ef8c47d396403d50eMichael Jurka    }
60104c45677660586026a7e74ef8c47d396403d50eMichael Jurka}
61