package wax-lib

  1. Overview
  2. Docs
Libraries for Wax, a Rust-like syntax for WebAssembly

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wax-v0.2.0.tbz
sha256=4361e1324b7754a4c08ab5b505df32061f3ce0cea60443fd0d3699e0fa796b32
sha512=fcc756d2f160ba90a9aa1131f2ab22ed7f45466ccd658c21cf9df6868a6aab0cee7f404719d698a379958802f9820398f2fe0685ecc4dda018ca4f653294e39b

doc/src/wax-lib.utils/debug.ml.html

Source file debug.ml

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
type category = Timing | Width_check | Width_record

let categories = [ "timing"; "width-check"; "width-record" ]

let parse = function
  | "timing" -> Ok Timing
  | "width-check" -> Ok Width_check
  | "width-record" -> Ok Width_record
  | s ->
      Error
        (Printf.sprintf "Unknown debug category: %s (expected one of: %s)" s
           (String.concat ", " categories))

(* The set of active categories, set once at startup. Mirrors the one-shot
   global config used elsewhere (e.g. [Validation.validate_refs]). *)
let enabled : category list ref = ref []
let enable categories = enabled := categories
let is_enabled category = List.mem category !enabled

let timed_if cond label f =
  if not (cond && is_enabled Timing) then f ()
  else begin
    let start = Unix.gettimeofday () in
    let finally () =
      let elapsed = (Unix.gettimeofday () -. start) *. 1000. in
      Printf.eprintf "%s: %.1f ms\n%!" label elapsed
    in
    Fun.protect ~finally f
  end

let timed label f = timed_if true label f