/*
* SetMemberOperation.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.log4j.Logger;
import org.swfparser.CodeUtil;
import org.swfparser.Operation;
public class SetMemberOperation extends AbstractOperation {
private static Logger logger = Logger.getLogger(SetMemberOperation.class);
private Operation object;
private Operation member;
private Operation value;
// private boolean simpleMember;
public SetMemberOperation(Stack<Operation> stack) {
super(stack);
this.value = stack.pop();
this.member = stack.pop();
this.object = stack.pop();
// this.simpleMember = (member instanceof StackValue && StackValue.TYPE_STRING==((StackValue)member).getType());
// logger.debug("value = "+value);
}
public int getArgsNumber() {
return 3;
}
public String getStringValue(int level) {
StringBuilder buf = new StringBuilder();
buf.append(CodeUtil.getIndent(level));
buf.append(object.getStringValue(level));
buf.append(CodeUtil.getMemberGetExpression(member, level));
buf.append(" = ");
buf.append(this.value.getStringValue(level));
return buf.toString();
}
@Override
public String toString() {
return "SetMember("+object+","+member+")";
}
public List<Operation> getOperations() {
return Arrays.asList(value,member,object);
}
}