01: /*
02: * Javassist, a Java-bytecode translator toolkit.
03: * Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
04: *
05: * The contents of this file are subject to the Mozilla Public License Version
06: * 1.1 (the "License"); you may not use this file except in compliance with
07: * the License. Alternatively, the contents of this file may be used under
08: * the terms of the GNU Lesser General Public License Version 2.1 or later.
09: *
10: * Software distributed under the License is distributed on an "AS IS" basis,
11: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12: * for the specific language governing rights and limitations under the
13: * License.
14: */
15:
16: package javassist.bytecode;
17:
18: import java.io.DataInputStream;
19: import java.util.Map;
20: import java.io.IOException;
21:
22: /**
23: * <code>ConstantValue_attribute</code>.
24: */
25: public class ConstantAttribute extends AttributeInfo {
26: /**
27: * The name of this attribute <code>"ConstantValue"</code>.
28: */
29: public static final String tag = "ConstantValue";
30:
31: ConstantAttribute(ConstPool cp, int n, DataInputStream in)
32: throws IOException {
33: super (cp, n, in);
34: }
35:
36: /**
37: * Constructs a ConstantValue attribute.
38: *
39: * @param cp a constant pool table.
40: * @param index <code>constantvalue_index</code>
41: * of <code>ConstantValue_attribute</code>.
42: */
43: public ConstantAttribute(ConstPool cp, int index) {
44: super (cp, tag);
45: byte[] bvalue = new byte[2];
46: bvalue[0] = (byte) (index >>> 8);
47: bvalue[1] = (byte) index;
48: set(bvalue);
49: }
50:
51: /**
52: * Returns <code>constantvalue_index</code>.
53: */
54: public int getConstantValue() {
55: return ByteArray.readU16bit(get(), 0);
56: }
57:
58: /**
59: * Makes a copy. Class names are replaced according to the
60: * given <code>Map</code> object.
61: *
62: * @param newCp the constant pool table used by the new copy.
63: * @param classnames pairs of replaced and substituted
64: * class names.
65: */
66: public AttributeInfo copy(ConstPool newCp, Map classnames) {
67: int index = getConstPool().copy(getConstantValue(), newCp,
68: classnames);
69: return new ConstantAttribute(newCp, index);
70: }
71: }
|