AbstractEndState

abstract class AbstractEndState(val solution: Solution, val context: ClassicExecutionContext) : AbstractState, EndState

Common base of the two terminal EndStates (StateEnd and StateHalt). By default there is no further transition from here (computeNext throws); StateEnd overrides this to loop back into StateBacktracking when ClassicExecutionContext.hasOpenAlternatives is true, which is what makes it a resumable terminal, unlike StateHalt, the one true sink of the machine.

Inheritors

Constructors

Link copied to clipboard
constructor(solution: Solution, context: ClassicExecutionContext)

Properties

Link copied to clipboard
open override val context: ClassicExecutionContext

The execution context this state operates on.

Link copied to clipboard

Whether asking for another solution after this one would resume resolution (via backtracking) rather than truly stop.

Link copied to clipboard

Whether this state is a terminal one for the current resolution step, i.e. an EndState.

Link copied to clipboard
open override val solution: Solution

The solution emitted by reaching this state.

Functions

Link copied to clipboard
open fun asEndState(): EndState

This state as an EndState, or null if isEndState is false.

Link copied to clipboard

This state as an EndState.

Link copied to clipboard
abstract fun clone(context: ClassicExecutionContext = this.context): State

Returns a copy of this state, replacing context with the given one (defaulting to the current context).

Link copied to clipboard
open override fun next(): State

Computes the state the machine transitions into from here -- a pure function of context.