Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / code / ast / SuperMethodInvocation.java
package code.ast;

import java.util.List;

/**
 * Represents a super method invocation in AST (Abstract Syntax Tree)
 *
 * @author s-yamagiwa
 * @apiNote Type arguments aren't supported because it isn't necessary in DTRAM code generator.
 */
public class SuperMethodInvocation extends Expression {
	private String methodName;
	private List<Expression> arguments;
	
	public SuperMethodInvocation(String methodName) {
		this(methodName, List.of());
	}
	
	public SuperMethodInvocation(String methodName, List<Expression> arguments) {
		this.methodName = methodName;
		this.arguments = arguments;
	}
	
	public String getMethodName() {
		return methodName;
	}
	
	public void setMethodName(String methodName) {
		this.methodName = methodName;
	}
	
	public List<Expression> getArguments() {
		return arguments;
	}
	
	public void setArguments(List<Expression> arguments) {
		this.arguments = arguments;
	}
	
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		
		builder.append("super.").append(methodName).append("(");
		
		if (!arguments.isEmpty()) {
			for (int i = 0; i < arguments.size(); i++) {
				Expression argument = arguments.get(i);
				
				builder.append(argument.toString());
				
				if (i < arguments.size() - 1) {
					builder.append(", ");
				}
			}
		}
		
		builder.append(");");
		
		return builder.toString();
	}
}