package org.yakindu.scr;
/**
* Basic interface for state machines.
*/
public interface IStatemachine {
/**
* Initializes the state machine. Used to initialize internal variables etc.
*/
public void init();
/**
* Enters the state machine. Sets the state machine into a defined state.
*/
public void enter();
/**
* Exits the state machine. Leaves the state machine with a defined state.
*/
public void exit();
/**
* Checks whether the state machine is active.
* A state machine is active if it has been entered. It is inactive if it has not been entered at all or if it has been exited.
*/
public boolean isActive();
/**
* Checks whether all active states are final.
* If there are no active states then the state machine is considered being incative. In this case this method returns <code>false</code>.
*/
public boolean isFinal();
/**
* Start a run-to-completion cycle.
*/
public void runCycle();
}