package at.oefai.aaa.agent.jam;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;

/**
 * The interface an implementation of a central agent interpreter must fulfill.
 * @author Stefan Rank
 */
public interface Interpreter extends Serializable {
    // setters and getters:

    String getName();

    AgentLogger getLog();

    WorldModelTable getWorldModel();

    IntentionStructure getIntentionStructure();

    PlanTable getPlanLibrary();

    Functions getSystemFunctions();

    Functions getUserFunctions();

    MetaData getMetaData();

    boolean getAgentHasMoved();

    void setAgentHasMoved(boolean flag);

    // parsing methods

    void parseFiles(List<String> argv) throws IOException, ParseException;

    void parseString(String pString) throws ParseException;

    // abstract simulation time per interpreter
    long currentSimTimeMillis();
}
