< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ICONST.java

Print this page


   1 /*
   2  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
   3  */
   4 /*
   5  * Licensed to the Apache Software Foundation (ASF) under one or more
   6  * contributor license agreements.  See the NOTICE file distributed with
   7  * this work for additional information regarding copyright ownership.
   8  * The ASF licenses this file to You under the Apache License, Version 2.0
   9  * (the "License"); you may not use this file except in compliance with
  10  * the License.  You may obtain a copy of the License at
  11  *
  12  *      http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */
  20 
  21 package com.sun.org.apache.bcel.internal.generic;
  22 
  23 
  24 /**
  25  * ICONST - Push value between -1, ..., 5, other values cause an exception
  26  *
  27  * <PRE>Stack: ... -&gt; ..., </PRE>
  28  *
  29  * @author  <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
  30  */
  31 public class ICONST extends Instruction
  32   implements ConstantPushInstruction, TypedInstruction {
  33   private int value;
  34 
  35   /**
  36    * Empty constructor needed for the Class.newInstance() statement in
  37    * Instruction.readInstruction(). Not to be used otherwise.
  38    */
  39   ICONST() {}
  40 
  41   public ICONST(int i) {
  42     super(com.sun.org.apache.bcel.internal.Constants.ICONST_0, (short)1);
  43 
  44     if((i >= -1) && (i <= 5))
  45       opcode = (short)(com.sun.org.apache.bcel.internal.Constants.ICONST_0 + i); // Even works for i == -1
  46     else
  47       throw new ClassGenException("ICONST can be used only for value between -1 and 5: " +
  48                                   i);


  49     value = i;
  50   }
  51 
  52   public Number getValue() { return Integer.valueOf(value); }



  53 
  54   /** @return Type.INT

  55    */
  56   public Type getType(ConstantPoolGen cp) {

  57     return Type.INT;
  58   }
  59 
  60   /**
  61    * Call corresponding visitor method(s). The order is:
  62    * Call visitor methods of implemented interfaces first, then
  63    * call methods according to the class hierarchy in descending order,
  64    * i.e., the most specific visitXXX() call comes last.
  65    *
  66    * @param v Visitor object
  67    */
  68   public void accept(Visitor v) {

  69     v.visitPushInstruction(this);
  70     v.visitStackProducer(this);
  71     v.visitTypedInstruction(this);
  72     v.visitConstantPushInstruction(this);
  73     v.visitICONST(this);
  74   }
  75 }
   1 /*
   2  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
   3  */
   4 /*
   5  * Licensed to the Apache Software Foundation (ASF) under one or more
   6  * contributor license agreements.  See the NOTICE file distributed with
   7  * this work for additional information regarding copyright ownership.
   8  * The ASF licenses this file to You under the Apache License, Version 2.0
   9  * (the "License"); you may not use this file except in compliance with
  10  * the License.  You may obtain a copy of the License at
  11  *
  12  *      http://www.apache.org/licenses/LICENSE-2.0
  13  *
  14  * Unless required by applicable law or agreed to in writing, software
  15  * distributed under the License is distributed on an "AS IS" BASIS,
  16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17  * See the License for the specific language governing permissions and
  18  * limitations under the License.
  19  */

  20 package com.sun.org.apache.bcel.internal.generic;
  21 

  22 /**
  23  * ICONST - Push value between -1, ..., 5, other values cause an exception
  24  *
  25  * <PRE>Stack: ... -&gt; ..., </PRE>
  26  *
  27  * @version $Id: ICONST.java 1747278 2016-06-07 17:28:43Z britter $
  28  */
  29 public class ICONST extends Instruction implements ConstantPushInstruction {
  30 
  31     private int value;
  32 
  33     /**
  34      * Empty constructor needed for the Class.newInstance() statement in
  35      * Instruction.readInstruction(). Not to be used otherwise.
  36      */
  37     ICONST() {
  38     }


  39 
  40     public ICONST(final int i) {
  41         super(com.sun.org.apache.bcel.internal.Const.ICONST_0, (short) 1);
  42         if ((i >= -1) && (i <= 5)) {
  43             super.setOpcode((short) (com.sun.org.apache.bcel.internal.Const.ICONST_0 + i)); // Even works for i == -1
  44         } else {
  45             throw new ClassGenException("ICONST can be used only for value between -1 and 5: " + i);
  46         }
  47         value = i;
  48     }
  49 
  50     @Override
  51     public Number getValue() {
  52         return Integer.valueOf(value);
  53     }
  54 
  55     /**
  56      * @return Type.INT
  57      */
  58     @Override
  59     public Type getType(final ConstantPoolGen cp) {
  60         return Type.INT;
  61     }
  62 
  63     /**
  64      * Call corresponding visitor method(s). The order is: Call visitor methods
  65      * of implemented interfaces first, then call methods according to the class
  66      * hierarchy in descending order, i.e., the most specific visitXXX() call
  67      * comes last.
  68      *
  69      * @param v Visitor object
  70      */
  71     @Override
  72     public void accept(final Visitor v) {
  73         v.visitPushInstruction(this);
  74         v.visitStackProducer(this);
  75         v.visitTypedInstruction(this);
  76         v.visitConstantPushInstruction(this);
  77         v.visitICONST(this);
  78     }
  79 }
< prev index next >