mps-coderules/reactor/Test/src/solver/MemSessionSolver.kt

35 lines
1.4 KiB
Kotlin

package solver
import jetbrains.mps.logic.reactor.evaluation.EvaluationTrace
import jetbrains.mps.logic.reactor.evaluation.Queryable
import jetbrains.mps.logic.reactor.evaluation.SessionSolver
import jetbrains.mps.logic.reactor.program.JavaPredicateSymbol
import jetbrains.mps.logic.reactor.program.PredicateSymbol
/**
* @author Fedor Isakov
*/
open class MemSessionSolver(val expressionSolver: Queryable, val equalsSolver: Queryable) : SessionSolver() {
override fun solverClass(predicateSymbol: PredicateSymbol): Class<out Queryable> {
return when (predicateSymbol) {
is JavaPredicateSymbol -> expressionSolver.javaClass
PredicateSymbol("equals", 2) -> equalsSolver.javaClass
else -> throw UnsupportedOperationException("not implemented")
}
}
override fun registerSymbol(predicateSymbol: PredicateSymbol, computingTracer: EvaluationTrace?) {
when (predicateSymbol) {
is JavaPredicateSymbol -> registerSolver(predicateSymbol, expressionSolver)
PredicateSymbol("equals", 2) -> registerSolver(predicateSymbol, equalsSolver)
else -> throw UnsupportedOperationException("not implemented")
}
}
override fun queueIfBusy(runnable: Runnable): Boolean = false
override fun fail(message: String) = throw IllegalStateException (message)
}