package openmods.calc;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
public class Compilers<E, M> {
public interface ICompiler<E> {
public IExecutable<E> compile(String input);
}
private final Map<M, ICompiler<E>> compilers;
public Compilers(Map<M, ICompiler<E>> compilers) {
this.compilers = ImmutableMap.copyOf(compilers);
}
public IExecutable<E> compile(M type, String input) {
final ICompiler<E> compiler = compilers.get(type);
Preconditions.checkArgument(compiler != null, "Unknown compiler: " + type);
return compiler.compile(input);
}
}