/* * Created on May 21, 2005 * */ package iitb.Utils; import java.util.ArrayList; /** * @author imran * @since 1.2 * @version 1.3 */ public abstract class StaticObjectHeap extends ObjectHeap { protected ArrayList<Object> objects; protected int curIndex = 0; public StaticObjectHeap(int initCapacity) { super(initCapacity); objects = new ArrayList<Object>(); reset(); for(int i = 0; i < initCapacity; i++) addObject(); } public Object getFreeObject(){ if(curIndex >=objects.size()){ addObject(); curIndex = objects.size() - 1; } return objects.get(curIndex++); } protected boolean addObject(){ return objects.add(newObject()); } protected abstract Object newObject(); protected abstract Object getObject(); public void reset(){ curIndex = 0; } public void clear(){ objects.clear(); reset(); } public void setObjectHeap(int capacity){ if(objects.size() < capacity) for(int i = capacity - objects.size(); i >=0; i--) addObject(); else if(objects.size() > capacity) for(int i = objects.size() - capacity; i >= 0; i--) objects.remove(capacity + i); } }