KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > bcel > generic > ICONST


1 /*
2  * Copyright 2000-2004 The Apache Software Foundation
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.apache.bcel.generic;
18
19 /**
20  * ICONST - Push value between -1, ..., 5, other values cause an exception
21  *
22  * <PRE>Stack: ... -&gt; ..., </PRE>
23  *
24  * @version $Id: ICONST.java 386056 2006-03-15 11:31:56Z tcurdt $
25  * @author <A HREF="mailto:m.dahm@gmx.de">M. Dahm</A>
26  */

27 public class ICONST extends Instruction implements ConstantPushInstruction, TypedInstruction {
28
29     private int value;
30
31
32     /**
33      * Empty constructor needed for the Class.newInstance() statement in
34      * Instruction.readInstruction(). Not to be used otherwise.
35      */

36     ICONST() {
37     }
38
39
40     public ICONST(int i) {
41         super(org.apache.bcel.Constants.ICONST_0, (short) 1);
42         if ((i >= -1) && (i <= 5)) {
43             opcode = (short) (org.apache.bcel.Constants.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
51     public Number JavaDoc getValue() {
52         return new Integer JavaDoc(value);
53     }
54
55
56     /** @return Type.INT
57      */

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

71     public void accept( Visitor v ) {
72         v.visitPushInstruction(this);
73         v.visitStackProducer(this);
74         v.visitTypedInstruction(this);
75         v.visitConstantPushInstruction(this);
76         v.visitICONST(this);
77     }
78 }
79
Popular Tags