/*
* UnaryOperation.java
* @Author Oleg Gorobets
* Created: 24.07.2007
* CVS-ID: $Id:
*************************************************************************/
package org.swfparser.operation;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.log4j.Logger;
import org.swfparser.CodeUtil;
import org.swfparser.Operation;
public abstract class UnaryOperation extends AbstractOperation {
private static Logger logger = Logger.getLogger(UnaryOperation.class);
protected Operation op;
public UnaryOperation(Operation op) {
this.op = op;
}
public UnaryOperation(Stack<Operation> stack) {
super(stack);
op = stack.pop();
}
public int getArgsNumber() {
return 1;
}
public abstract String getStringValue(int level);
@Override
public boolean equals(Object obj) {
// logger.debug("Testing equals of "+obj+" to "+this);
if (!(obj instanceof UnaryOperation)) {
return false;
}
if (obj == this) {
return true;
}
UnaryOperation otherOp = (UnaryOperation) obj;
// logger.debug("Eq "+this.op+" and "+op.op);
return new EqualsBuilder()
.append(this.op, otherOp.op)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(op)
.toHashCode();
}
public Operation getOp() {
return op;
}
@Override
public String toString() {
return getClass().getSimpleName()+"("+op+")";
}
public List<Operation> getOperations() {
return Arrays.asList(op);
}
public void setOp(Operation op) {
this.op = op;
}
}