1897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar/*
2897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar * Copyright (C) 2010 The Android Open Source Project
3897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar *
4897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar * Licensed under the Apache License, Version 2.0 (the "License");
5897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar * you may not use this file except in compliance with the License.
6897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar * You may obtain a copy of the License at
7897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar *
8897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar *      http://www.apache.org/licenses/LICENSE-2.0
9897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar *
109b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar * Unless required by applicable law or agreed to in writing, software
11897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar * distributed under the License is distributed on an "AS IS" BASIS,
12b18b8ad63061c23daf4d95b022764027739691d8Dan Gohman * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1355fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth * See the License for the specific language governing permissions and
1406057cef0bcd7804e80f3ce2bbe352178396c715Chandler Carruth * limitations under the License.
15897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar */
16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
1787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainarpackage com.android.gallery3d.glrenderer;
186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
194967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainarpublic class IntArray {
200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines    private static final int INIT_CAPACITY = 8;
210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines    private int mData[] = new int[INIT_CAPACITY];
234967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar    private int mSize = 0;
24897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar
25897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    public void add(int value) {
263b844ba7d5be205a9b4f5f0b0d1b7978977f4b8cChandler Carruth        if (mData.length == mSize) {
274967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar            int temp[] = new int[mSize + mSize];
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines            System.arraycopy(mData, 0, temp, 0, mSize);
290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines            mData = temp;
303b844ba7d5be205a9b4f5f0b0d1b7978977f4b8cChandler Carruth        }
31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines        mData[mSize++] = value;
32693769cafc218ff31393e0bf43cd3dcf21a36be2Evan Cheng    }
334967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar
34897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    public int removeLast() {
35897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar        mSize--;
36a6b4045dc462c03cd1e7cb9c3ec9dbfdb9c6ad62Evan Cheng        return mData[mSize];
37897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    }
38897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar
39897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    public int size() {
40897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar        return mSize;
41176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines    }
42cf565c57371b3d294a1737c8f3924491d2fe8e3eRafael Espindola
43cf565c57371b3d294a1737c8f3924491d2fe8e3eRafael Espindola    // For testing only
4455fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth    public int[] toArray(int[] result) {
4523d5b090cb11078714139bdb5a30d814e3443c4cMichael Gottesman        if (result == null || result.length < mSize) {
46cf565c57371b3d294a1737c8f3924491d2fe8e3eRafael Espindola            result = new int[mSize];
474967a710c84587c654b56c828382219c3937dacbPirama Arumuga Nainar        }
480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines        System.arraycopy(mData, 0, result, 0, mSize);
49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines        return result;
50897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    }
51897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar
52897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    public int[] getInternalArray() {
53897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar        return mData;
54897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar    }
55897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar
56d6471f7c1921c7802804ce3ff6fe9768310f72b9David Blaikie    public void clear() {
57897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar        mSize = 0;
583aaeccc597fa49e5b5aa9c197ef699d2c19ec86bNick Lewycky        if (mData.length != INIT_CAPACITY) mData = new int[INIT_CAPACITY];
59b18b8ad63061c23daf4d95b022764027739691d8Dan Gohman    }
60897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar}
61897c6768db8e09c692009280d9f1d71fb17023bfDaniel Dunbar