All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.s2.dsl.automate.S2Automate.kt Maven / Gradle / Ivy

package s2.dsl.automate

import kotlin.js.JsExport
import kotlin.js.JsName

@JsExport
@JsName("S2Automate")
class S2Automate(
	val name: String,
	val transitions: Array,
	val subMachines: Array
):Automate {
	override fun getAvailableTransitions(state: S2State): Array {
		return transitions.filter { isSameState(it.from, state) }.toTypedArray()
	}

	override fun isAvailableTransition(currentState: S2State, msg: Msg): Boolean {
		return getAvailableTransitions(currentState).any { it.msg.isInstance(msg) }
	}

	override fun isAvailableInitTransition(command: Msg): Boolean {
		return transitions.any { it.from == null && it.msg.isInstance(command) }
	}

	override fun isFinalState(state: S2State): Boolean {
		return getAvailableTransitions(state).isEmpty()
	}

	override fun isSameState(from: S2State?, to: S2State): Boolean {
		return from?.position == to.position
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy