/*
* AssignIncrementOperation.java
* @Author Oleg Gorobets
* Created: 25.08.2007
* CVS-ID: $Id:
*************************************************************************/
package org.swfparser.operation;
import java.util.Stack;
import org.swfparser.AssignOperation;
import org.swfparser.CodeUtil;
import org.swfparser.DualUse;
import org.swfparser.Operation;
import org.swfparser.Priority;
public abstract class AssignIncrementOperation extends SimpleIncrementOperation implements AssignOperation, DualUse {
protected boolean isStatement = false;
public AssignIncrementOperation(Operation op) {
super(op);
}
public AssignIncrementOperation(Operation op, boolean isStatement) {
super(op);
this.isStatement = isStatement;
}
public AssignIncrementOperation(Stack<Operation> stack) {
super(stack);
}
public Operation getLeftPart() {
return op;
}
public Operation getRightPart() {
return null;
}
@Override
public int getPriority() {
return Priority.UNARY;
}
public void markAsStatement() {
isStatement = true;
}
/**
* @return
*/
protected abstract String getPrefix();
/**
* @return
*/
protected abstract String getPostfix();
@Override
public String getStringValue(int level) {
return new StringBuffer()
.append(isStatement ? CodeUtil.getIndent(level) : "")
.append(getPrefix())
.append(op.getStringValue(level))
.append(getPostfix())
.toString();
}
}