1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *  See the License for the specific language governing permissions and
15  *  limitations under the License.
16  *
17  */
18 package org.apache.bcel.classfile;
19 
20 import java.io.DataOutputStream;
21 import java.io.IOException;
22 
23 import org.apache.bcel.Const;
24 
25 /**
26  * @since 6.0
27  */
28 public class ClassElementValue extends ElementValue
29 {
30     // For primitive types and string type, this points to the value entry in
31     // the cpool
32     // For 'class' this points to the class entry in the cpool
33     private final int idx;
34 
ClassElementValue(final int type, final int idx, final ConstantPool cpool)35     public ClassElementValue(final int type, final int idx, final ConstantPool cpool)
36     {
37         super(type, cpool);
38         this.idx = idx;
39     }
40 
getIndex()41     public int getIndex()
42     {
43         return idx;
44     }
45 
getClassString()46     public String getClassString()
47     {
48         final ConstantUtf8 c = (ConstantUtf8) super.getConstantPool().getConstant(idx,
49                 Const.CONSTANT_Utf8);
50         return c.getBytes();
51     }
52 
53     @Override
stringifyValue()54     public String stringifyValue()
55     {
56         final ConstantUtf8 cu8 = (ConstantUtf8) super.getConstantPool().getConstant(idx,
57                 Const.CONSTANT_Utf8);
58         return cu8.getBytes();
59     }
60 
61     @Override
dump(final DataOutputStream dos)62     public void dump(final DataOutputStream dos) throws IOException
63     {
64         dos.writeByte(super.getType()); // u1 kind of value
65         dos.writeShort(idx);
66     }
67 }
68