package me.tomassetti.turin.parser.ast.expressions;
import com.google.common.collect.ImmutableList;
import me.tomassetti.turin.parser.ast.Node;
public class ActualParam extends Node {
private String name;
private Expression value;
private boolean asterisk;
public String getName() {
return name;
}
public Expression getValue() {
return value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ActualParam)) return false;
ActualParam that = (ActualParam) o;
if (asterisk != that.asterisk) return false;
if (name != null ? !name.equals(that.name) : that.name != null) return false;
if (!value.equals(that.value)) return false;
return true;
}
public boolean isAsterisk() {
return asterisk;
}
@Override
public String toString() {
return "ActualParam{" +
"name='" + name + '\'' +
", value=" + value +
", asterisk=" + asterisk +
'}';
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + value.hashCode();
result = 31 * result + (asterisk ? 1 : 0);
return result;
}
public ActualParam(Expression value) {
this.value = value;
this.value.setParent(this);
}
public ActualParam(Expression value, boolean asterisk) {
this.value = value;
this.value.setParent(this);
this.asterisk = asterisk;
}
public ActualParam(String name, Expression value) {
this.name = name;
this.value = value;
this.value.setParent(this);
}
@Override
public Iterable<Node> getChildren() {
return ImmutableList.of(value);
}
public boolean isNamed() {
return name != null;
}
public ActualParam toUnnamed() {
return new ActualParam(value);
}
}