/*
* See LICENSE file in distribution for copyright and licensing information.
*/
package seph.lang;
import seph.lang.ast.Message;
import seph.lang.ast.NamedMessage;
import seph.lang.persistent.RT;
import seph.lang.persistent.ISeq;
import java.lang.invoke.MethodHandle;
/**
* @author <a href="mailto:ola.bini@gmail.com">Ola Bini</a>
*/
@SephSingleton
public class ControlDefaultBehavior implements SephObject {
public final static ControlDefaultBehavior instance = new ControlDefaultBehavior();
public static SephObject evaluateArgument(Object possibleArgument, LexicalScope scope, SThread thread, boolean fully) {
try {
MethodHandle mh = (MethodHandle)possibleArgument;
return (SephObject)mh.invokeExact(thread, scope, true, fully);
} catch(Throwable e) {
e.printStackTrace();
return null;
}
}
@Override
public SephObject get(String cellName) {
return seph.lang.bim.ControlDefaultBehaviorBase.get(cellName);
}
@Override
public Object identity() {
return seph.lang.bim.ControlDefaultBehaviorBase.IDENTITY;
}
@Override
public boolean isActivatable() {
return false;
}
@Override
public boolean isTrue() {
return true;
}
@Override
public MethodHandle activationFor(int arity, boolean keywords) {
return ActivationHelpers.noActivateFor(this, arity, keywords);
}
}// ControlDefaultBehavior