InputSpec.java

package net.bmahe.genetics4j.gp;

import java.util.List;
import java.util.Objects;

import org.immutables.value.Value;
import org.immutables.value.Value.Parameter;

@Value.Immutable
public abstract class InputSpec {

	@SuppressWarnings("rawtypes")
	@Parameter
	public abstract List<Class> types();

	public int inputSize() {
		return types().size();
	}

	public static InputSpec of(final List<Class> types) {
		Objects.requireNonNull(types);

		return ImmutableInputSpec.of(types);
	}

	public static InputSpec of(final Class... types) {
		Objects.requireNonNull(types);

		return ImmutableInputSpec.of(List.of(types));
	}

}