somewhat more uniform timing markup in ML vs. Scala;
--- a/src/Pure/General/markup.ML Sat Nov 06 17:55:32 2010 +0100
+++ b/src/Pure/General/markup.ML Sat Nov 06 18:10:35 2010 +0100
@@ -99,7 +99,10 @@
val command_spanN: string val command_span: string -> T
val ignored_spanN: string val ignored_span: T
val malformed_spanN: string val malformed_span: T
- val timing: timing -> T
+ val elapsedN: string
+ val cpuN: string
+ val gcN: string
+ val timingN: string val timing: timing -> T
val subgoalsN: string
val proof_stateN: string val proof_state: int -> T
val stateN: string val state: T
@@ -306,11 +309,21 @@
val (malformed_spanN, malformed_span) = markup_elem "malformed_span";
-(* toplevel *)
+(* timing *)
+
+val timingN = "timing";
+val elapsedN = "elapsed";
+val cpuN = "cpu";
+val gcN = "gc";
fun timing ({elapsed, cpu, gc, ...}: timing) =
- ("timing",
- [("elapsed", Time.toString elapsed), ("cpu", Time.toString cpu), ("gc", Time.toString gc)]);
+ (timingN,
+ [(elapsedN, Time.toString elapsed),
+ (cpuN, Time.toString cpu),
+ (gcN, Time.toString gc)]);
+
+
+(* toplevel *)
val subgoalsN = "subgoals";
val (proof_stateN, proof_state) = markup_int "proof_state" subgoalsN;
--- a/src/Pure/General/markup.scala Sat Nov 06 17:55:32 2010 +0100
+++ b/src/Pure/General/markup.scala Sat Nov 06 18:10:35 2010 +0100
@@ -216,6 +216,31 @@
val MALFORMED_SPAN = "malformed_span"
+ /* timing */
+
+ val TIMING = "timing"
+ val ELAPSED = "elapsed"
+ val CPU = "cpu"
+ val GC = "gc"
+
+ object Timing
+ {
+ def apply(timing: isabelle.Timing): Markup =
+ Markup(TIMING, List(
+ (ELAPSED, Double(timing.elapsed)),
+ (CPU, Double(timing.cpu)),
+ (GC, Double(timing.gc))))
+ def unapply(markup: Markup): Option[isabelle.Timing] =
+ markup match {
+ case Markup(TIMING, List(
+ (ELAPSED, Double(elapsed)),
+ (CPU, Double(cpu)),
+ (GC, Double(gc)))) => Some(isabelle.Timing(elapsed, cpu, gc))
+ case _ => None
+ }
+ }
+
+
/* toplevel */
val SUBGOALS = "subgoals"