Renaming implementation classes to clean up the namespace.

This commit is contained in:
Fedor Isakov 2016-12-22 12:27:34 +01:00
parent b891f0fa47
commit e6c7ee74f5
5 changed files with 38 additions and 38 deletions

View File

@ -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))
}

View File

@ -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 {

View File

@ -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) {

View File

@ -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
}

View File

@ -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