package org.eclipse.iee.translator.antlr.translator.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class NaryExpression extends Expression { private String name; private List<VariableAssignment> variables; private Expression expression; public NaryExpression() { variables = new ArrayList<>(); } public NaryExpression(String name, List<VariableAssignment> variables, Expression expression) { super(); this.name = name; this.variables = new ArrayList<>(variables); this.expression = expression; } public String getName() { return name; } public void setName(String name) { String oldValue = this.name; this.name = name; getPropertyChangeSupport().firePropertyChange("name", oldValue, name); } public List<VariableAssignment> getVariables() { return Collections.unmodifiableList(variables); } public void setVariables(List<VariableAssignment> variables) { List<VariableAssignment> oldValue = this.variables; this.variables = new ArrayList<>(variables); getPropertyChangeSupport().firePropertyChange("variables", oldValue, variables); } public Expression getExpression() { return expression; } public void setExpression(Expression expression) { Expression oldValue = this.expression; this.expression = expression; getPropertyChangeSupport().firePropertyChange("expression", oldValue, expression); } @Override public String getText() { StringBuilder sb = new StringBuilder(); sb.append(name != null ? name : PLACEHOLDER); sb.append('('); for (int i = 0; i < variables.size(); i++) { if (i > 0) { sb.append(", "); } sb.append(variables.get(i).getText()); } sb.append(','); sb.append(getExpression() != null ? getExpression().getText() : PLACEHOLDER); sb.append(')'); return sb.toString(); } @Override public <R, C> R accept(Visitor<R, C> visitor, C context) { return visitor.acceptNaryExpression(this, context); } }