2019-08-10 03:18:02 +00:00
|
|
|
package net.shadowfacts.asmr.program
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author shadowfacts
|
|
|
|
*/
|
2019-08-11 22:53:02 +00:00
|
|
|
interface ExecutionFlow {
|
|
|
|
val block: ExecutableBlock
|
2019-08-10 03:18:02 +00:00
|
|
|
|
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
|
2019-08-10 03:18:02 +00:00
|
|
|
|
2019-08-10 04:03:25 +00:00
|
|
|
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-10 04:03:25 +00:00
|
|
|
}
|
2019-08-11 22:53:02 +00:00
|
|
|
}
|