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

23 lines
487 B
Kotlin
Raw Normal View History

package net.shadowfacts.asmr.program
/**
* @author shadowfacts
*/
2019-08-11 22:53:02 +00:00
interface ExecutionFlow {
val block: ExecutableBlock
2019-08-11 22:53:02 +00:00
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
2019-08-11 22:53:02 +00:00
(next.executionFlow as? DirectExecutionFlow)?.let {
it.prev = block
}
}
2019-08-11 22:53:02 +00:00
}