package com.stardust.autojs.engine;
import com.stardust.autojs.script.ScriptSource;
/**
* Created by Stardust on 2017/4/2.
* <p>
* <p>
* A ScriptEngine is created by {@link AbstractScriptEngineManager#createEngine()}, and then can be
* used to execute script with {@link ScriptEngine#execute(ScriptSource)} in the **same** thread.
* When the execution finish successfully, the engine should be destroy in the thread that created it.
* <p>
* If you want to stop the engine in other threads, you should call {@link ScriptEngine#forceStop()}.
* It will throw a {@link com.stardust.autojs.runtime.ScriptStopException}.
*/
public interface ScriptEngine {
void put(String name, Object value);
Object execute(ScriptSource scriptSource);
void forceStop();
void destroy();
void setTag(String key, Object value);
Object getTag(String key);
/**
* @hide
*/
void init();
}