@Override public boolean equals(Object obj) { // if (!(obj instanceof StackValue)) { // return false; // } if (this == obj) { return true; } if (obj instanceof StackValue) { StackValue stackValue = (StackValue) obj; boolean match = stackValue.getType() == type; if (!match) { return false; } switch (type) { case TYPE_STRING: match = string.equals(stackValue.getString()); break; case TYPE_FLOAT: match = (floatValue == stackValue.getFloat()); break; case TYPE_REGISTER: match = (registerNumber == stackValue.getRegisterNumber()); break; case TYPE_BOOLEAN: match = (booleanValue == stackValue.getBoolean()); break; case TYPE_DOUBLE: match = (doubleValue == stackValue.getDouble()); break; case TYPE_INTEGER: match = (integerValue == stackValue.getInteger()); break; case TYPE_CONSTANT_8: match = (constant8 == stackValue.getConstant8()); break; case TYPE_CONSTANT_16: match = (constant16 == stackValue.getConstant16()); break; } return match; } else if (obj instanceof NotOperation) { return obj.equals(this); } else { return false; } }
private static Element writePush(Element parentElement, Push push) { Element element = parentElement.addElement("push"); List values = push.getValues(); for (Iterator it = values.iterator(); it.hasNext(); ) { StackValue value = (StackValue) it.next(); switch (value.getType()) { case StackValue.TYPE_BOOLEAN: element.addElement("boolean").addAttribute("value", Boolean.toString(value.getBoolean())); break; case StackValue.TYPE_CONSTANT_16: element .addElement("constant16") .addAttribute("id", Integer.toString(value.getConstant16())); break; case StackValue.TYPE_CONSTANT_8: element .addElement("constant8") .addAttribute("id", Integer.toString(value.getConstant8())); break; case StackValue.TYPE_DOUBLE: element.addElement("double").addAttribute("value", Double.toString(value.getDouble())); break; case StackValue.TYPE_FLOAT: element.addElement("float").addAttribute("value", Float.toString(value.getFloat())); break; case StackValue.TYPE_INTEGER: element.addElement("integer").addAttribute("value", Long.toString(value.getInteger())); break; case StackValue.TYPE_NULL: element.addElement("null"); break; case StackValue.TYPE_REGISTER: element .addElement("register") .addAttribute("number", Short.toString(value.getRegisterNumber())); break; case StackValue.TYPE_STRING: element.addElement("string").addAttribute("value", value.getString()); break; case StackValue.TYPE_UNDEFINED: element.addElement("undefined"); break; } } return element; }