Coverage Summary for Class: Arg2pPrologSolverFactory (it.unibo.tuprolog.argumentation.core.engine)

Class Class, % Method, % Branch, % Line, % Instruction, %
Arg2pPrologSolverFactory 100% (1/1) 80% (4/5) 80% (4/5) 77.4% (48/62)


 // Forked from 2p-kt's solve-prolog 3.0.2 (Apache License 2.0): see README.md in this package
 package it.unibo.tuprolog.argumentation.core.engine
 
 import it.unibo.tuprolog.argumentation.core.engine.stdlib.DefaultBuiltins
 import it.unibo.tuprolog.solve.MutableSolver
 import it.unibo.tuprolog.solve.Solver
 import it.unibo.tuprolog.solve.SolverFactory
 import it.unibo.tuprolog.solve.channel.InputChannel
 import it.unibo.tuprolog.solve.channel.InputStore
 import it.unibo.tuprolog.solve.channel.OutputChannel
 import it.unibo.tuprolog.solve.channel.OutputStore
 import it.unibo.tuprolog.solve.exception.Warning
 import it.unibo.tuprolog.solve.flags.FlagStore
 import it.unibo.tuprolog.solve.library.Library
 import it.unibo.tuprolog.solve.library.Runtime
 import it.unibo.tuprolog.theory.Theory
 import it.unibo.tuprolog.unify.Unificator
 import kotlin.js.JsExport
 
 /**
  * The [SolverFactory] of the engine of arg2p, the fork of 2P-Kt's ISO-standard, SLD-NF resolution engine
  * (`:solve-prolog`) that inlines module calls and keeps the bindings of the goals left to solve (see README.md in this
  * package). The solvers of arg2p are built with it (Arg2pSolverFactory); it is public for the tools building their own.
  *
  * Every [Solver]/[MutableSolver] produced here resolves goals with the explicit, inspectable finite-state
  * machine documented under `it.unibo.tuprolog.argumentation.core.engine.fsm` (see [PrologExecutionContext] and
  * [SolutionIterator] for the two pieces that make it tick), rather than via the host language's call stack.
  *
  * @see AbstractPrologSolver
  */
 @Suppress("NON_EXPORTABLE_TYPE")
 @JsExport
 object Arg2pPrologSolverFactory : SolverFactory {
     override val defaultBuiltins: Library
         get() = DefaultBuiltins
 
     override fun solverOf(
         unificator: Unificator,
         libraries: Runtime,
         flags: FlagStore,
         staticKb: Theory,
         dynamicKb: Theory,
         inputs: InputStore,
         outputs: OutputStore,
     ): Solver = PrologSolver(unificator, libraries, flags, staticKb, dynamicKb, inputs, outputs)
 
     override fun solverOf(
         unificator: Unificator,
         libraries: Runtime,
         flags: FlagStore,
         staticKb: Theory,
         dynamicKb: Theory,
         stdIn: InputChannel<String>,
         stdOut: OutputChannel<String>,
         stdErr: OutputChannel<String>,
         warnings: OutputChannel<Warning>,
     ): Solver = PrologSolver(unificator, libraries, flags, staticKb, dynamicKb, stdIn, stdOut, stdErr, warnings)
 
     override fun mutableSolverOf(
         unificator: Unificator,
         libraries: Runtime,
         flags: FlagStore,
         staticKb: Theory,
         dynamicKb: Theory,
         stdIn: InputChannel<String>,
         stdOut: OutputChannel<String>,
         stdErr: OutputChannel<String>,
         warnings: OutputChannel<Warning>,
     ): MutableSolver = MutablePrologSolver(unificator, libraries, flags, staticKb, dynamicKb, stdIn, stdOut, stdErr, warnings)
 
     override fun mutableSolverOf(
         unificator: Unificator,
         libraries: Runtime,
         flags: FlagStore,
         staticKb: Theory,
         dynamicKb: Theory,
         inputs: InputStore,
         outputs: OutputStore,
     ): MutableSolver = MutablePrologSolver(unificator, libraries, flags, staticKb, dynamicKb, inputs, outputs)
 }