java/ch/wlkl/wsm/JFun.java
package ch.wlkl.wsm;
import java.lang.reflect.Array;
import static ch.wlkl.env.Env.*;
public abstract class JFun<T> implements Cloneable {
final Class<T> cla;
public T[] a = null;
public String name = null;
public JFun(Class<T> cl) {
cla = cl;
}
public void newA(int sz) {
a = (T[]) Array.newInstance(cla, sz);
}
public JFun<T> clone(int sz) {
JFun<T> c = null;
try {
c = (JFun<T>) super.clone();
} catch (Throwable t) {
err("FunJava<" + cla + "> clone", t);
}
c.a = (T[]) Array.newInstance(cla, sz);
return c;
}
public T put(int ix, Object o) {
try {
return a[ix] = (T) o;
} catch (Throwable t) {
err("FunJava<" + cla.getSimpleName() + "> put(" + ix + ", " + o + ") caught", t);
return null; // never happens, err does not return
}
}
public abstract Object eval();
}