package org.smoothbuild.lang.function.base; import static com.google.common.base.Preconditions.checkNotNull; import org.smoothbuild.lang.type.Type; import com.google.common.collect.ImmutableList; /** * Function's signature. */ public class Signature { private final Type type; private final Name name; private final ImmutableList<Parameter> parameters; public Signature(Type type, Name name, Iterable<Parameter> params) { this.type = checkNotNull(type); this.name = checkNotNull(name); this.parameters = ImmutableList.copyOf(params); } public Type type() { return type; } public Name name() { return name; } public ImmutableList<Parameter> parameters() { return parameters; } public String toString() { StringBuilder builder = new StringBuilder(); builder.append(type.name() + " " + name.value() + "("); int count = 0; for (Parameter parameter : parameters) { if (count != 0) { builder.append(", "); } count++; builder.append(parameter.type().name()); builder.append(" "); builder.append(parameter.name()); } builder.append(")"); return builder.toString(); } }