jjg@46: /* jjg@46: * Copyright 2007 Sun Microsystems, Inc. All Rights Reserved. jjg@46: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jjg@46: * jjg@46: * This code is free software; you can redistribute it and/or modify it jjg@46: * under the terms of the GNU General Public License version 2 only, as jjg@46: * published by the Free Software Foundation. Sun designates this jjg@46: * particular file as subject to the "Classpath" exception as provided jjg@46: * by Sun in the LICENSE file that accompanied this code. jjg@46: * jjg@46: * This code is distributed in the hope that it will be useful, but WITHOUT jjg@46: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jjg@46: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jjg@46: * version 2 for more details (a copy is included in the LICENSE file that jjg@46: * accompanied this code). jjg@46: * jjg@46: * You should have received a copy of the GNU General Public License version jjg@46: * 2 along with this work; if not, write to the Free Software Foundation, jjg@46: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jjg@46: * jjg@46: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, jjg@46: * CA 95054 USA or visit www.sun.com if you need additional information or jjg@46: * have any questions. jjg@46: */ jjg@46: jjg@46: package com.sun.tools.classfile; jjg@46: jjg@46: import java.io.IOException; jjg@46: import java.util.Arrays; jjg@46: import java.util.HashMap; jjg@46: import java.util.Iterator; jjg@46: import java.util.Map; jjg@46: jjg@46: /* jjg@46: *

This is NOT part of any API supported by Sun Microsystems. If jjg@46: * you write code that depends on this, you do so at your own risk. jjg@46: * This code and its internal interfaces are subject to change or jjg@46: * deletion without notice. jjg@46: */ jjg@46: public class Attributes implements Iterable { jjg@46: Attributes(ClassReader cr) throws IOException { jjg@46: map = new HashMap(); jjg@46: int attrs_count = cr.readUnsignedShort(); jjg@46: attrs = new Attribute[attrs_count]; jjg@46: for (int i = 0; i < attrs_count; i++) { jjg@46: Attribute attr = Attribute.read(cr); jjg@46: attrs[i] = attr; jjg@46: try { jjg@46: map.put(attr.getName(cr.getConstantPool()), attr); jjg@46: } catch (ConstantPoolException e) { jjg@46: // don't enter invalid names in map jjg@46: } jjg@46: } jjg@46: } jjg@46: jjg@46: public Attributes(ConstantPool constant_pool, Attribute[] attrs) { jjg@46: this.attrs = attrs; jjg@46: map = new HashMap(); jjg@46: for (int i = 0; i < attrs.length; i++) { jjg@46: Attribute attr = attrs[i]; jjg@46: try { jjg@46: map.put(attr.getName(constant_pool), attr); jjg@46: } catch (ConstantPoolException e) { jjg@46: // don't enter invalid names in map jjg@46: } jjg@46: } jjg@46: } jjg@46: jjg@46: public Iterator iterator() { jjg@46: return Arrays.asList(attrs).iterator(); jjg@46: } jjg@46: jjg@46: public Attribute get(int index) { jjg@46: return attrs[index]; jjg@46: } jjg@46: jjg@46: public Attribute get(String name) { jjg@46: return map.get(name); jjg@46: } jjg@46: jjg@46: public int size() { jjg@46: return attrs.length; jjg@46: } jjg@46: jjg@46: public final Attribute[] attrs; jjg@46: public final Map map; jjg@46: }