--- a/src/Pure/General/time.scala Thu Apr 27 22:21:43 2017 +0200
+++ b/src/Pure/General/time.scala Thu Apr 27 23:36:16 2017 +0200
@@ -27,6 +27,9 @@
String.format(Locale.ROOT, "%.3f", s.asInstanceOf[AnyRef])
def instant(t: Instant): Time = ms(t.getEpochSecond * 1000L + t.getNano / 1000000L)
+
+ val encode: XML.Encode.T[Time] = (t: Time) => XML.Encode.long(t.ms)
+ val decode: XML.Decode.T[Time] = (body: XML.Body) => ms(XML.Decode.long(body))
}
final class Time private(val ms: Long) extends AnyVal
--- a/src/Pure/General/timing.scala Thu Apr 27 22:21:43 2017 +0200
+++ b/src/Pure/General/timing.scala Thu Apr 27 23:36:16 2017 +0200
@@ -29,6 +29,19 @@
Exn.release(result)
}
else e
+
+ val encode: XML.Encode.T[Timing] = (t: Timing) =>
+ {
+ import XML.Encode._
+ triple(Time.encode, Time.encode, Time.encode)(t.elapsed, t.cpu, t.gc)
+ }
+
+ val decode: XML.Decode.T[Timing] = (body: XML.Body) =>
+ {
+ import XML.Decode._
+ val (elapsed, cpu, gc) = triple(Time.decode, Time.decode, Time.decode)(body)
+ Timing(elapsed, cpu, gc)
+ }
}
sealed case class Timing(elapsed: Time, cpu: Time, gc: Time)