src/Pure/PIDE/command.scala
changeset 38429 9951852fae91
parent 38427 7066fbd315ae
child 38476 d72479a07882
equal deleted inserted replaced
38428:c13c95c97e89 38429:9951852fae91
    12 import scala.collection.mutable
    12 import scala.collection.mutable
    13 
    13 
    14 
    14 
    15 object Command
    15 object Command
    16 {
    16 {
    17   object Status extends Enumeration
       
    18   {
       
    19     val UNPROCESSED = Value("UNPROCESSED")
       
    20     val FINISHED = Value("FINISHED")
       
    21     val FAILED = Value("FAILED")
       
    22     val UNDEFINED = Value("UNDEFINED")
       
    23   }
       
    24 
       
    25   case class HighlightInfo(kind: String, sub_kind: Option[String]) {
    17   case class HighlightInfo(kind: String, sub_kind: Option[String]) {
    26     override def toString = kind
    18     override def toString = kind
    27   }
    19   }
    28   case class TypeInfo(ty: String)
    20   case class TypeInfo(ty: String)
    29   case class RefInfo(file: Option[String], line: Option[Int],
    21   case class RefInfo(file: Option[String], line: Option[Int],
    33 
    25 
    34   /** accumulated results from prover **/
    26   /** accumulated results from prover **/
    35 
    27 
    36   case class State(
    28   case class State(
    37     val command: Command,
    29     val command: Command,
    38     val status: Command.Status.Value,
    30     val status: List[Markup],
    39     val forks: Int,
       
    40     val reverse_results: List[XML.Tree],
    31     val reverse_results: List[XML.Tree],
    41     val markup: Markup_Text)
    32     val markup: Markup_Text)
    42   {
    33   {
    43     /* content */
    34     /* content */
    44 
    35 
    88     /* message dispatch */
    79     /* message dispatch */
    89 
    80 
    90     def accumulate(message: XML.Tree): Command.State =
    81     def accumulate(message: XML.Tree): Command.State =
    91       message match {
    82       message match {
    92         case XML.Elem(Markup(Markup.STATUS, _), elems) =>
    83         case XML.Elem(Markup(Markup.STATUS, _), elems) =>
    93           (this /: elems)((state, elem) =>
    84           copy(status = (for (XML.Elem(markup, _) <- elems) yield markup) ::: status)
    94             elem match {
       
    95               case XML.Elem(Markup(Markup.UNPROCESSED, _), _) => state.copy(status = Command.Status.UNPROCESSED)
       
    96               case XML.Elem(Markup(Markup.FINISHED, _), _) => state.copy(status = Command.Status.FINISHED)
       
    97               case XML.Elem(Markup(Markup.FAILED, _), _) => state.copy(status = Command.Status.FAILED)
       
    98               case XML.Elem(Markup(Markup.FORKED, _), _) => state.copy(forks = state.forks + 1)
       
    99               case XML.Elem(Markup(Markup.JOINED, _), _) => state.copy(forks = state.forks - 1)
       
   100               case _ => System.err.println("Ignored status message: " + elem); state
       
   101             })
       
   102 
    85 
   103         case XML.Elem(Markup(Markup.REPORT, _), elems) =>
    86         case XML.Elem(Markup(Markup.REPORT, _), elems) =>
   104           (this /: elems)((state, elem) =>
    87           (this /: elems)((state, elem) =>
   105             elem match {
    88             elem match {
   106               case XML.Elem(Markup(kind, atts), body) if Position.get_id(atts) == Some(command.id) =>
    89               case XML.Elem(Markup(kind, atts), body) if Position.get_id(atts) == Some(command.id) =>
   182   }
   165   }
   183 
   166 
   184 
   167 
   185   /* accumulated results */
   168   /* accumulated results */
   186 
   169 
   187   val empty_state: Command.State =
   170   val empty_state: Command.State = Command.State(this, Nil, Nil, new Markup_Text(Nil, source))
   188     Command.State(this, Command.Status.UNPROCESSED, 0, Nil, new Markup_Text(Nil, source))
       
   189 }
   171 }