/Users/lyon/j4p/src/javassist/bytecode/ConstantAttribute.java

1    /* 
2     * Javassist, a Java-bytecode translator toolkit. 
3     * Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved. 
4     * 
5     * The contents of this file are subject to the Mozilla Public License Version 
6     * 1.1 (the "License"); you may not use this file except in compliance with 
7     * the License.  Alternatively, the contents of this file may be used under 
8     * the terms of the GNU Lesser General Public License Version 2.1 or later. 
9     * 
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   } 
72