File: matrix.mli

package info (click to toggle)
herdtools7 7.58-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 19,732 kB
  • sloc: ml: 128,583; ansic: 3,827; makefile: 670; python: 407; sh: 212; awk: 14
file content (91 lines) | stat: -rw-r--r-- 2,898 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(****************************************************************************)
(*                           the diy toolsuite                              *)
(*                                                                          *)
(* Jade Alglave, University College London, UK.                             *)
(* Luc Maranget, INRIA Paris-Rocquencourt, France.                          *)
(*                                                                          *)
(* Copyright 2010-present Institut National de Recherche en Informatique et *)
(* en Automatique and the authors. All rights reserved.                     *)
(*                                                                          *)
(* This software is governed by the CeCILL-B license under French law and   *)
(* abiding by the rules of distribution of free software. You can use,      *)
(* modify and/ or redistribute the software under the terms of the CeCILL-B *)
(* license as circulated by CEA, CNRS and INRIA at the following URL        *)
(* "http://www.cecill.info". We also give a copy in LICENSE.txt.            *)
(****************************************************************************)


(* Tool on matrices for compare. A code sharing attemp in 'mcompare' mess *)

(* cells are lists of their lines *)
type cell = string list
type column = cell array
type matrix = column list

module type Config = sig
  val mode : OutMode.t
  val chan : out_channel
  val verbose : int
  val show_empty_rows : bool
  val kinds : LogState.kind TblRename.t
  val conds : LogConstr.cond TblRename.t
  val orders : unit TblRename.t
end


(*****************)
(* Simple Build  *)
(*****************)

module type I = sig
  type info

(*
 Build information matrix from test result matrix.
 Arguments:
    + log  (ie column in log underlying matrix)
    + info (attached to row in log underlying matrix)
    + test result itself
*)

  val fmt_cell : LogState.t -> info -> LogState.test -> cell
(* Add function *)
  type v
  val add : v -> LogState.test -> v
end

module NoAdd : sig
  type v
  val add : v -> LogState.test -> v
end

module Build (I:I) : sig
  type key = I.info Key.t

(* Build a column *)
  val extract :
      LogState.t -> key array ->  LogState.test array -> column

(* Build a matrix *)
  val build : key array -> LogState.t list -> matrix

(* Sum columns *)
  val sum : key array -> I.v list -> LogState.t list -> I.v list
end

(*******************)
(* Final formating *)
(*******************)

module Dump(Opt:Config) :
  sig
    val dump :
        string (* legend *) ->
          bool (* horiz *) ->
            (int * string) list (* first row, 'header' *)->
              string list (* last row, 'sum' *) ->
              'a Key.t array -> (* First column *)
                ?col2:column -> (* Second column *)
                    matrix -> (* matrix proper *)
                      unit
  end