src/Pure/System/isabelle_process.scala
changeset 65218 102b8e092860
parent 65216 060a8a1f2dec
child 65225 ec9ec04546fc
equal deleted inserted replaced
65217:edd3f532e4e3 65218:102b8e092860
    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 }