def execute(source: String,
solve_all: Boolean = false,
prove: Boolean = false,
max_solutions: Int = Int.MaxValue,
cleanup_inst: Boolean = false,
timeout: Time = Time.zero,
max_threads: Int = 0
): Result = { /* executor */
val pool_size = Multithreading.max_threads(value = max_threads) val executor: ThreadPoolExecutor = new ThreadPoolExecutor(pool_size, pool_size, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue[Runnable], new ThreadPoolExecutor.CallerRunsPolicy)
val executor_killed = Synchronized(false) def executor_kill(): Unit =
executor_killed.change(b => if (b) b else { Isabelle_Thread.fork() { executor.shutdownNow() }; true })
/* system context */
class Exit extends Exception("EXIT")
class Exec_Context extends Context { privatevar rc = Process_Result.RC.ok privateval out = new StringBuilder privateval err = new StringBuilder
try { val lexer = new KodkodiLexer(new ANTLRInputStream(Bytes(source).stream())) val parser =
KodkodiParser.create(context, executor, false, solve_all, prove, max_solutions, cleanup_inst, lexer)
val timeout_request = if (timeout.is_zero) None else {
Some(Event_Timer.request(Time.now() + timeout) {
context.error("Ran out of time")
context.return_code(Process_Result.RC.failure)
executor_kill()
})
}
class Handler extends Session.Protocol_Handler { overridedef init(session: Session): Unit = warmup()
}
/** scala function **/
object Fun extends Scala.Fun_String("kodkod", thread = true) { val here = Scala_Project.here def apply(args: String): String = { val (timeout, (solve_all, (max_solutions, (max_threads, kki)))) = { import XML.Decode._
pair(int, pair(bool, pair(int, pair(int, string))))(
YXML.parse_body(YXML.Source(args)))
} val result =
execute(kki,
solve_all = solve_all,
max_solutions = max_solutions,
timeout = Time.ms(timeout),
max_threads = max_threads)
YXML.string_of_body(result.encode)
}
}
}
class Scala_Functions extends Scala.Functions(Kodkod.Fun)
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.18Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.