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