17 modes: List[String] = Nil, |
17 modes: List[String] = Nil, |
18 store: Sessions.Store = Sessions.store()) |
18 store: Sessions.Store = Sessions.store()) |
19 { |
19 { |
20 session.start(receiver => |
20 session.start(receiver => |
21 Isabelle_Process(options, logic = logic, args = args, dirs = dirs, modes = modes, |
21 Isabelle_Process(options, logic = logic, args = args, dirs = dirs, modes = modes, |
22 receiver = receiver, store = store)) |
22 receiver = receiver, xml_cache = session.xml_cache, store = store)) |
23 } |
23 } |
24 |
24 |
25 def apply( |
25 def apply( |
26 options: Options, |
26 options: Options, |
27 logic: String = "", |
27 logic: String = "", |
28 args: List[String] = Nil, |
28 args: List[String] = Nil, |
29 dirs: List[Path] = Nil, |
29 dirs: List[Path] = Nil, |
30 modes: List[String] = Nil, |
30 modes: List[String] = Nil, |
31 receiver: Prover.Receiver = Console.println(_), |
31 receiver: Prover.Receiver = Console.println(_), |
|
32 xml_cache: XML.Cache = new XML.Cache(), |
32 store: Sessions.Store = Sessions.store()): Isabelle_Process = |
33 store: Sessions.Store = Sessions.store()): Isabelle_Process = |
33 { |
34 { |
34 val channel = System_Channel() |
35 val channel = System_Channel() |
35 val process = |
36 val process = |
36 try { |
37 try { |
38 modes = modes, store = store, channel = Some(channel)) |
39 modes = modes, store = store, channel = Some(channel)) |
39 } |
40 } |
40 catch { case exn @ ERROR(_) => channel.accepted(); throw exn } |
41 catch { case exn @ ERROR(_) => channel.accepted(); throw exn } |
41 process.stdin.close |
42 process.stdin.close |
42 |
43 |
43 new Isabelle_Process(receiver, channel, process) |
44 new Isabelle_Process(receiver, xml_cache, channel, process) |
44 } |
45 } |
45 } |
46 } |
46 |
47 |
47 class Isabelle_Process private( |
48 class Isabelle_Process private( |
48 receiver: Prover.Receiver, channel: System_Channel, process: Prover.System_Process) |
49 receiver: Prover.Receiver, |
49 extends Prover(receiver, channel, process) |
50 xml_cache: XML.Cache, |
|
51 channel: System_Channel, |
|
52 process: Prover.System_Process) |
|
53 extends Prover(receiver, xml_cache, channel, process) |
50 { |
54 { |
51 def encode(s: String): String = Symbol.encode(s) |
55 def encode(s: String): String = Symbol.encode(s) |
52 def decode(s: String): String = Symbol.decode(s) |
56 def decode(s: String): String = Symbol.decode(s) |
53 } |
57 } |