13c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen/*
23c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Copyright (C) 2009 The Android Open Source Project
33c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
43c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Licensed under the Apache License, Version 2.0 (the "License");
53c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * you may not use this file except in compliance with the License.
63c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * You may obtain a copy of the License at
73c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
83c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *      http://www.apache.org/licenses/LICENSE-2.0
93c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
103c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Unless required by applicable law or agreed to in writing, software
113c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * distributed under the License is distributed on an "AS IS" BASIS,
123c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * See the License for the specific language governing permissions and
143c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * limitations under the License.
153c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen */
163c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen
17f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparkspackage com.cooliris.media;
18f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
19f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparkspublic final class Pool<E extends Object> {
20f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    private final E[] mFreeList;
21f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    private int mFreeListIndex;
22f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
23f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    public Pool(E[] objects) {
24f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        mFreeList = objects;
25f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        mFreeListIndex = objects.length;
26f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    }
27f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
28f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    public E create() {
29f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        int index = --mFreeListIndex;
30f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        if (index >= 0 && index < mFreeList.length) {
31f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks            E object = mFreeList[index];
32f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks            mFreeList[index] = null;
33f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks            return object;
34f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        }
35f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        return null;
36f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    }
37f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
38f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    public void delete(E object) {
39f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        int index = mFreeListIndex;
40f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        if (index >= 0 && index < mFreeList.length) {
41f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks            mFreeList[index] = object;
42f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks            mFreeListIndex++;
43f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks        }
44f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    }
45f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks}
46