package openmods.calc;
public abstract class SymbolMap<E> {
protected abstract ISymbol<E> createSymbol(ICallable<E> callable);
protected abstract ISymbol<E> createSymbol(IGettable<E> gettable);
protected abstract ISymbol<E> createSymbol(E value);
public abstract void put(String name, ISymbol<E> symbol);
public void put(String name, ICallable<E> callable) {
put(name, createSymbol(callable));
}
public void put(String name, IGettable<E> gettable) {
put(name, createSymbol(gettable));
}
public void put(String name, E value) {
put(name, createSymbol(value));
}
public abstract ISymbol<E> get(String name);
}