1/* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5/* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22package com.sun.org.apache.bcel.internal.generic; 23 24import java.io.*; 25import com.sun.org.apache.bcel.internal.util.ByteSequence; 26 27/** 28 * SIPUSH - Push short 29 * 30 * <PRE>Stack: ... -> ..., value</PRE> 31 * 32 * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> 33 */ 34public class SIPUSH extends Instruction implements ConstantPushInstruction { 35 private short b; 36 37 /** 38 * Empty constructor needed for the Class.newInstance() statement in 39 * Instruction.readInstruction(). Not to be used otherwise. 40 */ 41 SIPUSH() {} 42 43 public SIPUSH(short b) { 44 super(com.sun.org.apache.bcel.internal.Constants.SIPUSH, (short)3); 45 this.b = b; 46 } 47 48 /** 49 * Dump instruction as short code to stream out. 50 */ 51 public void dump(DataOutputStream out) throws IOException { 52 super.dump(out); 53 out.writeShort(b); 54 } 55 56 /** 57 * @return mnemonic for instruction 58 */ 59 public String toString(boolean verbose) { 60 return super.toString(verbose) + " " + b; 61 } 62 63 /** 64 * Read needed data (e.g. index) from file. 65 */ 66 protected void initFromFile(ByteSequence bytes, boolean wide) throws IOException 67 { 68 length = 3; 69 b = bytes.readShort(); 70 } 71 72 public Number getValue() { return new Integer(b); } 73 74 /** @return Type.SHORT 75 */ 76 public Type getType(ConstantPoolGen cp) { 77 return Type.SHORT; 78 } 79 80 /** 81 * Call corresponding visitor method(s). The order is: 82 * Call visitor methods of implemented interfaces first, then 83 * call methods according to the class hierarchy in descending order, 84 * i.e., the most specific visitXXX() call comes last. 85 * 86 * @param v Visitor object 87 */ 88 public void accept(Visitor v) { 89 v.visitPushInstruction(this); 90 v.visitStackProducer(this); 91 v.visitTypedInstruction(this); 92 v.visitConstantPushInstruction(this); 93 v.visitSIPUSH(this); 94 } 95} 96