Renaming implementation classes to clean up the namespace.
This commit is contained in:
parent
b891f0fa47
commit
e6c7ee74f5
|
|
@ -22,21 +22,21 @@ import java.util.*
|
|||
|
||||
class FrameStack : LogicalObserver {
|
||||
|
||||
lateinit var current: HandlerFrame
|
||||
lateinit var current: Frame
|
||||
|
||||
val observing = HashSet<IdWrapper<Logical<*>>>()
|
||||
|
||||
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<IdWrapper<Logical<*>>, 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<ConstraintOccurrence> =
|
||||
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))
|
||||
}
|
||||
|
|
@ -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<ConstraintSymbol> =
|
||||
handler.constraintSymbols()
|
||||
controller.constraintSymbols()
|
||||
|
||||
override fun constraintOccurrences(): Iterable<ConstraintOccurrence> =
|
||||
handler.allOccurrences()
|
||||
controller.allOccurrences()
|
||||
|
||||
override fun constraintOccurrences(symbol: ConstraintSymbol): Iterable<ConstraintOccurrence> =
|
||||
handler.occurrences(symbol)
|
||||
controller.occurrences(symbol)
|
||||
|
||||
private class Backend : EvaluationSession.Backend {
|
||||
|
||||
|
|
|
|||
|
|
@ -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<Any, IdHashSet<ConstraintOccurrence>>
|
||||
|
||||
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) {
|
||||
|
|
@ -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<ConstraintSymbol> = TODO()
|
||||
override fun constraintOccurrences(): MutableIterable<ConstraintOccurrence> = 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
|
||||
}
|
||||
|
||||
|
|
@ -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<Pair<Logical<*>, 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue