Mercurial Hosting > luan
diff src/luan/LuanFunction.java @ 1563:8fbcc4747091
remove LuanFunction.luan
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 09 Nov 2020 01:37:57 -0700 |
parents | e1a13e707bf3 |
children |
line wrap: on
line diff
--- a/src/luan/LuanFunction.java Sun Nov 08 16:50:59 2020 -0700 +++ b/src/luan/LuanFunction.java Mon Nov 09 01:37:57 2020 -0700 @@ -1,73 +1,9 @@ package luan; -public abstract class LuanFunction implements LuanCloneable, Cloneable { - private Luan luan; - private LuanCloner cloner; - private boolean clone; - - public LuanFunction(Luan luan) { - if( luan==null ) throw new NullPointerException(); - this.luan = luan; - this.clone = true; - } - - public LuanFunction(boolean clone) { - this.clone = clone; - } - - // for LuanJavaFunction - void dontClone() { - luan = null; - clone = false; - } - - @Override public LuanFunction shallowClone() { - if( !clone ) - return this; - check(); - try { - return (LuanFunction)clone(); - } catch(CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } +public abstract class LuanFunction { - private void check() { - if( cloner != null ) { - completeClone(this,cloner); - cloner = null; - } - } - - @Override public void deepenClone(LuanCloneable dc,LuanCloner cloner) { - if( !clone ) - return; - LuanFunction clone = (LuanFunction)dc; - switch( cloner.type ) { - case COMPLETE: - completeClone(clone,cloner); - return; - case INCREMENTAL: - clone.cloner = cloner; - return; - } - } - - protected void completeClone(LuanFunction clone,LuanCloner cloner) { - clone.luan = (Luan)cloner.clone(luan); - } - - @Override public void makeImmutable(LuanImmutabler immutabler) throws LuanException { - immutabler.makeImmutable(luan); - } - - public Luan luan() { - check(); - return luan; - } - - public abstract Object call(Object... args) throws LuanException; + public abstract Object call(Luan luan,Object... args) throws LuanException; public static final Object[] NOTHING = new Object[0];