ASMR/src/main/kotlin/net/shadowfacts/asmr/program/ExecutionFlow.kt

23 lines
487 B
Kotlin

package net.shadowfacts.asmr.program
/**
* @author shadowfacts
*/
interface ExecutionFlow {
val block: ExecutableBlock
val next: ExecutableBlock?
val prev: ExecutableBlock?
}
class DirectExecutionFlow(override val block: ExecutableBlock): ExecutionFlow {
override var next: ExecutableBlock? = null
override var prev: ExecutableBlock? = null
fun link(next: ExecutableBlock) {
this.next = next
(next.executionFlow as? DirectExecutionFlow)?.let {
it.prev = block
}
}
}