diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt similarity index 94% rename from reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt rename to reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt index 8b40f77f..f007a1eb 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Controller.kt @@ -22,21 +22,21 @@ import java.util.* class FrameStack : LogicalObserver { - lateinit var current: HandlerFrame + lateinit var current: Frame val observing = HashSet>>() constructor() { - this.current = HandlerFrame(this) + this.current = Frame(this) } - fun push(): HandlerFrame { - val frame = HandlerFrame(this, current) + fun push(): Frame { + val frame = Frame(this, current) this.current = frame return frame } - fun reset(frame: HandlerFrame): Unit { + fun reset(frame: Frame): Unit { this.current = frame } @@ -64,7 +64,7 @@ class FrameStack : LogicalObserver { interface StoreHolder { - fun store(): OccurrenceStore + fun store(): Store fun addObserver(logical: Logical<*>, obs: (StoreHolder) -> LogicalObserver) @@ -72,21 +72,21 @@ interface StoreHolder { } -class HandlerFrame : LogicalObserver, StoreHolder +class Frame : LogicalObserver, StoreHolder { - val prev: HandlerFrame? + val prev: Frame? - val store: OccurrenceStore + val store: Store private var stack: FrameStack private lateinit var observers: PersMap>, ConsList<(StoreHolder) -> LogicalObserver>> - constructor(stack: FrameStack, prev: HandlerFrame? = null) { + constructor(stack: FrameStack, prev: Frame? = null) { this.stack = stack this.prev = prev this.observers = prev?.observers ?: Maps.of() - this.store = OccurrenceStore(prev?.store ?: OccurrenceStore { stack.current }, { stack.current }) + this.store = Store(prev?.store ?: Store { stack.current }, { stack.current }) } override fun store() = store @@ -129,7 +129,7 @@ class HandlerFrame : LogicalObserver, StoreHolder } -class Handler { +class Controller { private val frameStack = FrameStack() @@ -166,7 +166,7 @@ class Handler { fun occurrences(symbol: ConstraintSymbol): Set = frameStack.current.store.allOccurrences().filter { co -> co.constraint().symbol() == symbol }.toSet() - fun tell(constraint: Constraint) { + fun activate(constraint: Constraint) { try { queue(constraint.occurrence({ frameStack.current }, noLogicalContext)) } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt index 782f30ab..a081860c 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt @@ -17,7 +17,7 @@ import java.util.* interface SessionObjects { - fun handler(): Handler + fun handler(): Controller } @@ -80,7 +80,7 @@ class MemEvaluationSession : EvaluationSession, SessionObjects { val sessionSolver: SessionSolver val trace: EvaluationTrace - lateinit var handler: Handler + lateinit var controller: Controller private constructor(program: Program, sessionSolver: SessionSolver, trace: EvaluationTrace): super() { this.program = program @@ -89,22 +89,22 @@ class MemEvaluationSession : EvaluationSession, SessionObjects { } fun launch(main: Constraint, profiler: Profiler?) { - this.handler = Handler(program.rules(), trace, profiler) - handler.tell(main) + this.controller = Controller(program.rules(), trace, profiler) + controller.activate(main) } - override fun handler() = handler + override fun handler() = controller override fun sessionSolver(): SessionSolver = sessionSolver override fun constraintSymbols(): Iterable = - handler.constraintSymbols() + controller.constraintSymbols() override fun constraintOccurrences(): Iterable = - handler.allOccurrences() + controller.allOccurrences() override fun constraintOccurrences(symbol: ConstraintSymbol): Iterable = - handler.occurrences(symbol) + controller.occurrences(symbol) private class Backend : EvaluationSession.Backend { diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceStore.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Store.kt similarity index 94% rename from reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceStore.kt rename to reactor/Core/src/jetbrains/mps/logic/reactor/core/Store.kt index b27a9d4a..c1aadc6c 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/OccurrenceStore.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Store.kt @@ -21,8 +21,8 @@ import com.github.andrewoma.dexx.collection.Vector as PersVector * @author Fedor Isakov */ -fun Constraint.occurrence(currentFrame: () -> HandlerFrame, context: LogicalContext): ConstraintOccurrence = - MemConstraintOccurrence(currentFrame, this, occurrenceArguments(context)) +fun Constraint.occurrence(currentFrame: () -> Frame, context: LogicalContext): ConstraintOccurrence = + Occurrence(currentFrame, this, occurrenceArguments(context)) fun ConstraintOccurrence.isStored(): Boolean = // TODO: superfluous cast @@ -55,7 +55,7 @@ interface OccurrenceIndex { /** * TODO: make this class persistent. */ -class OccurrenceStore : LogicalObserver, OccurrenceIndex { +class Store : LogicalObserver, OccurrenceIndex { val currentFrame: () -> StoreHolder @@ -67,7 +67,7 @@ class OccurrenceStore : LogicalObserver, OccurrenceIndex { var value2occurrences: PersMap> - constructor(copyFrom: OccurrenceStore, currentFrame: () -> StoreHolder) + constructor(copyFrom: Store, currentFrame: () -> StoreHolder) { this.currentFrame = currentFrame this.symbol2occurrences = copyFrom.symbol2occurrences @@ -255,7 +255,7 @@ class OccurrenceStore : LogicalObserver, OccurrenceIndex { -private data class MemConstraintOccurrence(val currentFrame: () -> HandlerFrame, val constraint: Constraint, val arguments: List<*>) : +private data class Occurrence(val currentFrame: () -> Frame, val constraint: Constraint, val arguments: List<*>) : ConstraintOccurrence, LogicalObserver, StoreItem @@ -265,7 +265,7 @@ private data class MemConstraintOccurrence(val currentFrame: () -> HandlerFrame, override var stored = false - constructor(currentFrame: () -> HandlerFrame, constraint: Constraint, arguments: Collection<*>) : + constructor(currentFrame: () -> Frame, constraint: Constraint, arguments: Collection<*>) : this(currentFrame, constraint, ArrayList(arguments)) { for (a in arguments) { diff --git a/reactor/Test/test/TestHandler.kt b/reactor/Test/test/TestController.kt similarity index 98% rename from reactor/Test/test/TestHandler.kt rename to reactor/Test/test/TestController.kt index 782ba895..d793ba40 100644 --- a/reactor/Test/test/TestHandler.kt +++ b/reactor/Test/test/TestController.kt @@ -1,4 +1,4 @@ -import jetbrains.mps.logic.reactor.core.Handler +import jetbrains.mps.logic.reactor.core.Controller import jetbrains.mps.logic.reactor.core.SessionObjects import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence import jetbrains.mps.logic.reactor.evaluation.EvaluationFailureException @@ -19,7 +19,7 @@ import solver.MemSessionSolver */ -class TestHandler { +class TestController { @Before fun beforeTest() { } @@ -29,8 +29,8 @@ class TestHandler { } private class MockSession(val solver: SessionSolver) : EvaluationSession(), SessionObjects { - lateinit var handler: Handler - override fun handler(): Handler = handler + lateinit var controller: Controller + override fun handler(): Controller = controller override fun sessionSolver(): SessionSolver = solver override fun constraintSymbols(): MutableIterable = TODO() override fun constraintOccurrences(): MutableIterable = TODO() @@ -59,10 +59,10 @@ class TestHandler { MemSessionSolver(expressionSolver, equalsSolver).apply { init(PredicateSymbol("equals", 2), JavaPredicateSymbol.EXPRESSION0, JavaPredicateSymbol.EXPRESSION1, JavaPredicateSymbol.EXPRESSION2, JavaPredicateSymbol.EXPRESSION3) } - private fun Builder.handler(vararg occurrences: ConstraintOccurrence): Handler { + private fun Builder.handler(vararg occurrences: ConstraintOccurrence): Controller { MockSession.init(sessionSolver(env.expressionSolver, env.equalsSolver)) - val handler = Handler(rules, occurrences = listOf(* occurrences)) - MockSession.ourBackend.session.handler = handler + val handler = Controller(rules, occurrences = listOf(* occurrences)) + MockSession.ourBackend.session.controller = handler return handler } diff --git a/reactor/Test/test/TestOccurrenceStore.kt b/reactor/Test/test/TestOccurrenceStore.kt index fede711a..eed90357 100644 --- a/reactor/Test/test/TestOccurrenceStore.kt +++ b/reactor/Test/test/TestOccurrenceStore.kt @@ -14,11 +14,11 @@ import org.junit.Before class TestOccurrenceStore { - class MockProxy(val _store: () -> OccurrenceStore) : LogicalObserver, StoreHolder { + class MockProxy(val _store: () -> Store) : LogicalObserver, StoreHolder { private var observerList = emptyConsList, LogicalObserver>>() - override fun store(): OccurrenceStore = _store() + override fun store(): Store = _store() override fun addObserver(logical: Logical<*>, obs: (StoreHolder) -> LogicalObserver) { if (!observerList.any { obs -> obs.first === logical }) { // referential equality! @@ -46,11 +46,11 @@ class TestOccurrenceStore { } } - lateinit var occstore: OccurrenceStore + lateinit var occstore: Store @Before fun setup() { - occstore = OccurrenceStore { MockProxy { occstore } } + occstore = Store { MockProxy { occstore } } } @Test