return a unique identifier based on random numbers
return a list of unique elements. This algorithm runs in O(n) but is not stable . elements are returned in reverse order
A generic memoization function. To use with care as it allocates an hashtbl storing all results that will be released only on exit
Debug, ProgressBars, Timers and Loggers
create a new message handle with label t
.
Printing is disabled per default
Print the message on stderr
if the Util module has been
set to verbose using the function make_verbose
and
either the handle t
is enable or all handles were enabled with
the function all_enabled
disable all handles in the module
enable all handles in the module
Debug, Info and Warning messages are printed immediately on stderr. Info messages are enabled per default. Debug and Warning messages must be enabled explicitely
Ex : To use the Message framework, you should declare three functions at the begin of each module as:
let debug fmt = Util.make_debug "MyModuleLabel" fmt let info fmt = Util.make_info "MyModuleLabel" fmt let warning fmt = Util.make_warning "MyModuleLabel" fmt
and then use these function as
debug "this is a message string %s" "a string"
To enable this handle, from the main program use the function
Debug.enable "MyModuleLabel"
ProgressBars are printed immediately on stderr. To be used, the **must** be created outside the functions where they are used. They can enabled or disabled (default)
Timers are printed all at once by the dump
function on stderr.
They can enabled or disabled (default)