KickJava   Java API By Example, From Geeks To Geeks.

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


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.ConstantPool;
24 import org.cojen.classfile.constant.ConstantUTFInfo;
25
26 /**
27  * This class corresponds to the signature attribute structure, which is used
28  * to support generics.
29  *
30  * @author Brian S O'Neill
31  */

32 public class SignatureAttr extends Attribute {
33     private final ConstantUTFInfo mSignature;
34     
35     public SignatureAttr(ConstantPool cp, ConstantUTFInfo signature) {
36         this(cp, SIGNATURE, signature);
37     }
38
39     public SignatureAttr(ConstantPool cp, String JavaDoc name, ConstantUTFInfo signature) {
40         super(cp, name);
41         mSignature = signature;
42     }
43     
44     public SignatureAttr(ConstantPool cp, String JavaDoc name, int length, DataInput JavaDoc din)
45         throws IOException JavaDoc
46     {
47         super(cp, name);
48         int index = din.readUnsignedShort();
49         if ((length -= 2) > 0) {
50             din.skipBytes(length);
51         }
52         mSignature = (ConstantUTFInfo) cp.getConstant(index);
53     }
54
55     /**
56      * Returns the signature.
57      */

58     public ConstantUTFInfo getSignature() {
59         return mSignature;
60     }
61     
62     /**
63      * Returns the length of the signature attribute, which is 2 bytes.
64      */

65     public int getLength() {
66         return 2;
67     }
68     
69     public void writeDataTo(DataOutput JavaDoc dout) throws IOException JavaDoc {
70         dout.writeShort(mSignature.getIndex());
71     }
72 }
73
Popular Tags