/** * @author Kun Wei, Frank Zeyda */ package scjlibs.examples.hijac.cdx; import scjlibs.examples.hijac.cdx.Error; import scjlibs.util.ArrayList; /** * This class is used to pre-allocate ArrayList objects in mission memory. */ public class ArrayListFactory { private final ArrayList[] store; private int index; public ArrayListFactory(int size, int capacity) { store = new ArrayList[size]; for (int i = 0; i < store.length; i++) { /* TODO: Why "capacity + 1" here? */ store[i] = new ArrayList<Object>(capacity + 1); } index = 0; } /* Return a new pre-allocated instance of the ArrayList class. */ public ArrayList getNewList() { if (index < store.length) { return store[index++]; } else { Error.abort("Exceeding storage capacity in ArrayListFactory."); return null; // Never reached. } } /* Clear the content of each list before clearing the store. */ public void clear() { for (int i = 0; i < index; i++) { store[i].clear(); } index = 0; } }