Package seph.lang

Source Code of seph.lang.ControlDefaultBehavior

/*
* 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
TOP

Related Classes of seph.lang.ControlDefaultBehavior

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.