/* * TernaryOperation.java * @Author Oleg Gorobets * Created: 18.08.2007 * CVS-ID: $Id: *************************************************************************/ package org.swfparser.operation; import java.util.Arrays; import java.util.List; import org.swfparser.BooleanOperation; import org.swfparser.CodeUtil; import org.swfparser.DualUse; import org.swfparser.Operation; public class TernaryOperation extends AbstractOperation implements BooleanOperation, DualUse { protected Operation condition; protected Operation trueOp; protected Operation falseOp; private boolean isStatement = false; public TernaryOperation(Operation condition, Operation trueOp, Operation falseOp) { super(); this.condition = condition; this.trueOp = trueOp; this.falseOp = falseOp; } public int getArgsNumber() { return 3; } public String getStringValue(int level) { StringBuilder buf = new StringBuilder(); buf.append(isStatement ? CodeUtil.getIndent(level) : ""); buf.append("("); buf.append(condition.getStringValue(level)); buf.append(" ? "); buf.append(trueOp.getStringValue(level)); buf.append(" : "); buf.append(falseOp.getStringValue(level)); buf.append(")"); return buf.toString(); } @Override public String toString() { return "TernaryOperation("+condition+","+trueOp+","+falseOp+")"; } public Operation getInvertedOperation() { return new SimpleInvertedOperation(this); } public List<Operation> getOperations() { return Arrays.asList(condition,trueOp,falseOp); } public void markAsStatement() { isStatement = true; } }