Module ReportStat

module ReportStat: sig .. end
This module defines the types and functions related to statistics. All operations gracefully handle overflows by ensuring that:

type single = {
   mutable count : int; (*Number of points actually visited.*)
   mutable total : int; (*Total number of points.*)
}
The type of statistics for a single point kind.
type all = (Common.point_kind * single) list 
The type of statistics for all point kinds, encoded as an association list containing all points kinds in ascending order.
val make : unit -> all
Returns empty statistics for all point kinds. All elements have both count and total set to zero.
val update : all -> Common.point_kind -> bool -> unit
update stats k b updates stats for point kind k. total is always incremented, while count is incremented iff b equals true.
val summarize : all -> int * int
Returns a (count, total) couple where count and total are the sums of respectively all count and all total fields from the passed statistics.
val add : all -> all -> all
add x y returns the sum of statistics x and y.
val sum : all list -> all
sum l is a fold over l elements with function add, using the value returned by make as the initial value.