Module Util

module Util: sig .. end

Some helpers




Time facilities


val total_time_s : unit -> float
time elapsed since start of program, in seconds
val total_time_ns : unit -> int64
val start_time : unit -> int64
time at which the program started
val ns_to_s : int64 -> float
convert a nanosecond time to a time in seconds

Misc


module Section: sig .. end
Debug section
val set_debug : int -> unit
Set debug level of Section.root
val get_debug : unit -> int
Current debug level for Section.root
val debugf : ?section:Section.t ->
int ->
('a, Format.formatter, unit, unit) Pervasives.format4 -> ('a -> unit) -> unit
Print a debug message, with the given section and verbosity level. The message might be dropped if its level is too high.
val debug : ?section:Section.t -> int -> string -> unit
Cheap non-formatting version of Util.debugf
val ksprintf_noc : f:(string -> 'a) -> ('b, Format.formatter, unit, 'a) Pervasives.format4 -> 'b
Same as CCFormat.ksprintf, but without colors
val err_spf : ('b, Format.formatter, unit, string) Pervasives.format4 -> 'b
Version of sprintf that adds a colored "error" prefix
val warn : string -> unit
Emit warning
val warnf : ('a, Format.formatter, unit, unit) Pervasives.format4 -> 'a
Emit warning, with formatting
exception Error of string * string
generalist error that do not really belong elsewhere. Error (where,what) means that error what was raised from where.
val error : where:string -> string -> 'a
error msg raises Error msg
Raises Error duh
val errorf : where:string -> ('b, Format.formatter, unit, 'a) Pervasives.format4 -> 'b
Formatting version of Util.error
val pp_pos : Lexing.position -> string
val set_memory_limit : int -> unit
Limit the amount of memory available to the process (in MB)
val set_time_limit : int -> unit
Limit the CPU time available to the process (in seconds)

OCaml Stack

requires ocaml >= 4.01

module Exn: sig .. end

profiling facilities


type profiler 
val enable_profiling : bool Pervasives.ref
Enable/disable profiling
val mk_profiler : string -> profiler
Create a named profiler
val enter_prof : profiler -> unit
Enter the profiler
val exit_prof : profiler -> unit
Exit the profiler
val with_prof : profiler -> ('a -> 'b) -> 'a -> 'b

Runtime statistics


type stat 
val mk_stat : string -> stat
val print_global_stats : unit -> unit
val incr_stat : stat -> unit
val add_stat : stat -> int -> unit

Flags as integers


module Flag: sig .. end

Others


val finally : do_:(unit -> unit) -> (unit -> 'a) -> 'a
finally ~do_ f calls f () and returns its result. If it raises, the same exception is raised; in any case, do_ () is called after f () terminates.
val pp_pair : ?sep:string ->
'a CCFormat.printer -> 'b CCFormat.printer -> ('a * 'b) CCFormat.printer
val pp_list : ?sep:string -> 'a CCFormat.printer -> 'a list CCFormat.printer
Print a list without begin/end separators
val ord_option : 'a CCOrd.t -> 'a option CCOrd.t
val map_product : f:('a -> 'b list list) -> 'a list -> 'b list list

File utils


type 'a or_error = [ `Error of string | `Ok of 'a ] 
val popen : cmd:string -> input:string -> string or_error
Run the given command cmd with the given input, wait for it to terminate, and return its stdout.