00001 package de.fub.bytecode.generic;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 public class FCONST extends Instruction
00012 implements ConstantPushInstruction, TypedInstruction {
00013 private float value;
00014
00015
00016
00017
00018
00019 FCONST() {}
00020 public FCONST(float f) {
00021 super(de.fub.bytecode.Constants.FCONST_0, (short)1);
00022
00023 if(f == 0.0)
00024 tag = de.fub.bytecode.Constants.FCONST_0;
00025 else if(f == 1.0)
00026 tag = de.fub.bytecode.Constants.FCONST_1;
00027 else if(f == 2.0)
00028 tag = de.fub.bytecode.Constants.FCONST_2;
00029 else
00030 throw new ClassGenException("FCONST can be used only for 0.0, 1.0 and 2.0: " + f);
00031
00032 value = f;
00033 }
00034
00035
00036
00037
00038
00039
00040
00041
00042 public void accept(Visitor v) {
00043 v.visitPushInstruction(this);
00044 v.visitStackProducer(this);
00045 v.visitTypedInstruction(this);
00046 v.visitConstantPushInstruction(this);
00047 v.visitFCONST(this);
00048 }
00049
00050
00051 public Type getType(ConstantPoolGen cp) {
00052 return Type.FLOAT;
00053 }
00054 public Number getValue() { return new Float(value); }
00055 }