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.generic; 19 20 import org.apache.bcel.classfile.ConstantPool; 21 22 /** 23 * Super class for the GET/PUTxxx family of instructions. 24 * 25 * @version $Id$ 26 */ 27 public abstract class FieldInstruction extends FieldOrMethod { 28 29 /** 30 * Empty constructor needed for Instruction.readInstruction. 31 * Not to be used otherwise. 32 */ FieldInstruction()33 FieldInstruction() { 34 } 35 36 37 /** 38 * @param index to constant pool 39 */ FieldInstruction(final short opcode, final int index)40 protected FieldInstruction(final short opcode, final int index) { 41 super(opcode, index); 42 } 43 44 45 /** 46 * @return mnemonic for instruction with symbolic references resolved 47 */ 48 @Override toString( final ConstantPool cp )49 public String toString( final ConstantPool cp ) { 50 return org.apache.bcel.Const.getOpcodeName(super.getOpcode()) + " " 51 + cp.constantToString(super.getIndex(), org.apache.bcel.Const.CONSTANT_Fieldref); 52 } 53 54 55 /** @return size of field (1 or 2) 56 */ getFieldSize( final ConstantPoolGen cpg )57 protected int getFieldSize( final ConstantPoolGen cpg ) { 58 return Type.size(Type.getTypeSize(getSignature(cpg))); 59 } 60 61 62 /** @return return type of referenced field 63 */ 64 @Override getType( final ConstantPoolGen cpg )65 public Type getType( final ConstantPoolGen cpg ) { 66 return getFieldType(cpg); 67 } 68 69 70 /** @return type of field 71 */ getFieldType( final ConstantPoolGen cpg )72 public Type getFieldType( final ConstantPoolGen cpg ) { 73 return Type.getType(getSignature(cpg)); 74 } 75 76 77 /** @return name of referenced field. 78 */ getFieldName( final ConstantPoolGen cpg )79 public String getFieldName( final ConstantPoolGen cpg ) { 80 return getName(cpg); 81 } 82 } 83