1 6 7 package org.hansel.stack; 8 9 import org.objectweb.asm.Type; 10 import org.objectweb.asm.tree.analysis.Value; 11 12 16 public class HanselValue implements Value { 17 public static final HanselValue ZERO_1 = new HanselValue("0", false, 1); 18 public static final HanselValue ZERO_2 = new HanselValue("0", false, 2); 19 public static final HanselValue ONE_1 = new HanselValue("1", false, 1); 20 public static final HanselValue ONE_2 = new HanselValue("1", false, 2); 21 public static final HanselValue NULL = new HanselValue("null", false, 1); 22 public static final HanselValue DONT_CARE = new HanselValue("unknown", false, 1); 23 24 private String value; 25 private boolean booleanType; 26 private int size; 27 28 public HanselValue(String value, boolean booleanType, int size) { 29 this.value = value; 30 this.booleanType = booleanType; 31 this.size = size; 32 } 33 34 public boolean isBoolType() { 35 return booleanType; 36 } 37 38 public boolean equals(Value obj) { 39 return value.equals(((HanselValue) obj).value); 40 } 41 42 public int getSize() { 43 return size; 44 } 45 46 public HanselValue invert() { 47 return new NotOp(this); 48 } 49 50 public HanselValue compress() { 51 return this; 52 } 53 54 public String toString() { 55 return value; 56 } 57 58 public String toString(Type requiredType) { 59 String result = toString(); 60 61 if (requiredType == Type.BOOLEAN_TYPE) { 63 if ("0".equals(value)) { 64 return "false"; 65 } 66 67 if ("1".equals(value)) { 68 return "true"; 69 } 70 } 71 72 return result; 73 } 74 75 } 76 | Popular Tags |