001    package sysModel.classFile.constantPool;
002    
003    import java.util.ArrayList;
004    import java.util.Collection;
005    
006    /**
007     * Constant pool.
008     *
009     * @author Mathias Ricken
010     */
011    public class ConstantPool extends ArrayList<APoolInfo> {
012        /**
013         * Constructs an empty constant pool with the specified initial capacity.
014         *
015         * @param initialCapacity the initial capacity of the constant pool.
016         *
017         * @throws IllegalArgumentException if the specified initial capacity is negative
018         */
019        public ConstantPool(int initialCapacity) {
020            super(initialCapacity);
021        }
022    
023        /**
024         * Constructs an empty constant pool with an initial capacity of ten.
025         */
026        public ConstantPool() {
027        }
028    
029        /**
030         * Constructs a constant pool containing the elements of the specified collection, in the order they are returned
031         * by the collection's iterator.  The <tt>ConstantPool</tt> instance has an initial capacity of 110% the size of
032         * the specified collection.
033         *
034         * @param aPoolInfos the collection whose elements are to be placed into this constant pool.
035         *
036         * @throws NullPointerException if the specified collection is null.
037         */
038        public ConstantPool(Collection<? extends APoolInfo> aPoolInfos) {
039            super(aPoolInfos);
040        }
041    
042        /**
043         * Return the index of the pool item in the pool.
044         *
045         * @param item          item
046         *
047         * @return index
048         */
049        public short indexOf(APoolInfo item) {
050            for(int i = 0; i < size(); i++) {
051                if (item == get(i)) {
052                    return (short)i;
053                }
054            }
055            throw new AssertionError("Item not in pool: "+item.toStringVerbose());
056        }
057    }