KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > cojen > classfile > attribute > ConstantValueAttr


1 /*
2  * Copyright 2004 Brian S O'Neill
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.cojen.classfile.attribute;
18
19 import java.io.DataInput JavaDoc;
20 import java.io.DataOutput JavaDoc;
21 import java.io.IOException JavaDoc;
22 import org.cojen.classfile.Attribute;
23 import org.cojen.classfile.ConstantInfo;
24 import org.cojen.classfile.ConstantPool;
25
26 /**
27  * This class corresponds to the ConstantValue_attribute structure as defined
28  * in section 4.7.3 of <i>The Java Virtual Machine Specification</i>.
29  *
30  * @author Brian S O'Neill
31  */

32 public class ConstantValueAttr extends Attribute {
33
34     private final ConstantInfo mConstant;
35     
36     public ConstantValueAttr(ConstantPool cp, ConstantInfo constant) {
37         super(cp, CONSTANT_VALUE);
38         mConstant = constant;
39     }
40     
41     public ConstantValueAttr(ConstantPool cp, String JavaDoc name, ConstantInfo constant) {
42         super(cp, name);
43         mConstant = constant;
44     }
45
46     public ConstantValueAttr(ConstantPool cp, String JavaDoc name, int length, DataInput JavaDoc din)
47         throws IOException JavaDoc
48     {
49         super(cp, name);
50         int index = din.readUnsignedShort();
51         if ((length -= 2) > 0) {
52             din.skipBytes(length);
53         }
54         mConstant = cp.getConstant(index);
55     }
56
57     public ConstantInfo getConstant() {
58         return mConstant;
59     }
60     
61     public int getLength() {
62         return 2;
63     }
64     
65     public void writeDataTo(DataOutput JavaDoc dout) throws IOException JavaDoc {
66         dout.writeShort(mConstant.getIndex());
67     }
68 }
69
Popular Tags