| 1 21 package proguard.evaluation.value; 22 23 28 public class SpecificValueFactory 29 extends ValueFactory 30 { 31 static final IntegerValue INTEGER_VALUE_M1 = new SpecificIntegerValue(-1); 33 static final IntegerValue INTEGER_VALUE_0 = new SpecificIntegerValue(0); 34 static final IntegerValue INTEGER_VALUE_1 = new SpecificIntegerValue(1); 35 static final IntegerValue INTEGER_VALUE_2 = new SpecificIntegerValue(2); 36 static final IntegerValue INTEGER_VALUE_3 = new SpecificIntegerValue(3); 37 static final IntegerValue INTEGER_VALUE_4 = new SpecificIntegerValue(4); 38 static final IntegerValue INTEGER_VALUE_5 = new SpecificIntegerValue(5); 39 static final LongValue LONG_VALUE_0 = new SpecificLongValue(0); 40 static final LongValue LONG_VALUE_1 = new SpecificLongValue(1); 41 static final FloatValue FLOAT_VALUE_0 = new SpecificFloatValue(0.0f); 42 static final FloatValue FLOAT_VALUE_1 = new SpecificFloatValue(1.0f); 43 static final FloatValue FLOAT_VALUE_2 = new SpecificFloatValue(2.0f); 44 static final DoubleValue DOUBLE_VALUE_0 = new SpecificDoubleValue(0.0); 45 static final DoubleValue DOUBLE_VALUE_1 = new SpecificDoubleValue(1.0); 46 47 48 50 public IntegerValue createIntegerValue(int value) 51 { 52 switch (value) 53 { 54 case -1: return INTEGER_VALUE_M1; 55 case 0: return INTEGER_VALUE_0; 56 case 1: return INTEGER_VALUE_1; 57 case 2: return INTEGER_VALUE_2; 58 case 3: return INTEGER_VALUE_3; 59 case 4: return INTEGER_VALUE_4; 60 case 5: return INTEGER_VALUE_5; 61 default: return new SpecificIntegerValue(value); 62 } 63 } 64 65 66 public LongValue createLongValue(long value) 67 { 68 return value == 0 ? LONG_VALUE_0 : 69 value == 1 ? LONG_VALUE_1 : 70 new SpecificLongValue(value); 71 } 72 73 74 public FloatValue createFloatValue(float value) 75 { 76 return value == 0.0f ? FLOAT_VALUE_0 : 77 value == 1.0f ? FLOAT_VALUE_1 : 78 value == 2.0f ? FLOAT_VALUE_2 : 79 new SpecificFloatValue(value); 80 } 81 82 83 public DoubleValue createDoubleValue(double value) 84 { 85 return value == 0.0 ? DOUBLE_VALUE_0 : 86 value == 1.0 ? DOUBLE_VALUE_1 : 87 new SpecificDoubleValue(value); 88 } 89 } 90 | Popular Tags |