KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > cojen > classfile > ConstantInfo


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;
18
19 import java.io.DataOutput JavaDoc;
20 import java.io.IOException JavaDoc;
21
22 /**
23  * This class corresponds to the cp_info structure as defined in
24  * section 4.4 of <i>The Java Virtual Machine Specification</i>.
25  * Subclasses should override the default hashCode and equals methods so
26  * that the ConstantPool will only contain one instance of this constant.
27  *
28  * @author Brian S O'Neill
29  */

30 public abstract class ConstantInfo {
31
32     public static final int TAG_UTF8 = 1;
33     public static final int TAG_INTEGER = 3;
34     public static final int TAG_FLOAT = 4;
35     public static final int TAG_LONG = 5;
36     public static final int TAG_DOUBLE = 6;
37     public static final int TAG_CLASS = 7;
38     public static final int TAG_STRING = 8;
39     public static final int TAG_FIELD = 9;
40     public static final int TAG_METHOD = 10;
41     public static final int TAG_INTERFACE_METHOD = 11;
42     public static final int TAG_NAME_AND_TYPE = 12;
43
44     // mIndex is manipulated by ConstantPool
45
int mIndex = -1;
46     private int mTag;
47     
48     protected ConstantInfo(int tag) {
49         mTag = tag;
50     }
51
52     /**
53      * The index of this constant in the constant pool. Is -1 if the
54      * index has not yet been resolved. Constant pool indexes are resolved
55      * when the constant pool is written out.
56      */

57     public int getIndex() {
58         return mIndex;
59     }
60
61     protected boolean hasPriority() {
62         return false;
63     }
64     
65     protected int getEntryCount() {
66         return 1;
67     }
68
69     public void writeTo(DataOutput JavaDoc dout) throws IOException JavaDoc {
70         dout.writeByte(mTag);
71     }
72 }
73
Popular Tags