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 * FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
25 *
26 * <PRE>Stack: ... -> ..., </PRE>
27 *
28 * @version $Id: FCONST.java 1747278 2016-06-07 17:28:43Z britter $
29 */
30 public class FCONST extends Instruction implements ConstantPushInstruction {
31
32 private float value;
33
34
35 /**
36 * Empty constructor needed for the Class.newInstance() statement in
37 * Instruction.readInstruction(). Not to be used otherwise.
38 */
39 FCONST() {
40 }
41
42
43 public FCONST(final float f) {
44 super(com.sun.org.apache.bcel.internal.Const.FCONST_0, (short) 1);
45 if (f == 0.0) {
46 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_0);
47 } else if (f == 1.0) {
48 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_1);
49 } else if (f == 2.0) {
50 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_2);
51 } else {
52 throw new ClassGenException("FCONST can be used only for 0.0, 1.0 and 2.0: " + f);
53 }
54 value = f;
55 }
56
57
58 @Override
59 public Number getValue() {
60 return new Float(value);
61 }
62
63
64 /** @return Type.FLOAT
65 */
66 @Override
67 public Type getType( final ConstantPoolGen cp ) {
68 return Type.FLOAT;
69 }
70
71
72 /**
73 * Call corresponding visitor method(s). The order is:
74 * Call visitor methods of implemented interfaces first, then
75 * call methods according to the class hierarchy in descending order,
76 * i.e., the most specific visitXXX() call comes last.
77 *
78 * @param v Visitor object
79 */
80 @Override
|
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 * FCONST - Push 0.0, 1.0 or 2.0, other values cause an exception
25 *
26 * <PRE>Stack: ... -> ..., </PRE>
27 *
28 * @version $Id: FCONST.java 1747278 2016-06-07 17:28:43Z britter $
29 * @LastModified: Nov 2017
30 */
31 public class FCONST extends Instruction implements ConstantPushInstruction {
32
33 private float value;
34
35
36 /**
37 * Empty constructor needed for the Class.newInstance() statement in
38 * Instruction.readInstruction(). Not to be used otherwise.
39 */
40 FCONST() {
41 }
42
43
44 public FCONST(final float f) {
45 super(com.sun.org.apache.bcel.internal.Const.FCONST_0, (short) 1);
46 if (f == 0.0) {
47 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_0);
48 } else if (f == 1.0) {
49 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_1);
50 } else if (f == 2.0) {
51 super.setOpcode(com.sun.org.apache.bcel.internal.Const.FCONST_2);
52 } else {
53 throw new ClassGenException("FCONST can be used only for 0.0, 1.0 and 2.0: " + f);
54 }
55 value = f;
56 }
57
58
59 @Override
60 public Number getValue() {
61 return value;
62 }
63
64
65 /** @return Type.FLOAT
66 */
67 @Override
68 public Type getType( final ConstantPoolGen cp ) {
69 return Type.FLOAT;
70 }
71
72
73 /**
74 * Call corresponding visitor method(s). The order is:
75 * Call visitor methods of implemented interfaces first, then
76 * call methods according to the class hierarchy in descending order,
77 * i.e., the most specific visitXXX() call comes last.
78 *
79 * @param v Visitor object
80 */
81 @Override
|