Put grammar stuff.
[SXSI/xpathcomp.git] / src / tracer.ml
1 open Format
2
3 type tracer = string
4 type level = int
5
6 let tracers = [ "top-down-run"; "top-down-approx"; "result-set"; "level2-jit"; "res-jit"; "grammar" ]
7 let active_tracers : (tracer, int) Hashtbl.t = Hashtbl.create 17
8
9 let available () = tracers
10
11 let is_tracer s = List.mem s tracers
12 let level s = try Hashtbl.find active_tracers s with Not_found -> 0
13 let is_active s = Hashtbl.mem active_tracers s
14 let activate s lvl = if not (is_active s) then Hashtbl.add active_tracers s lvl
15 let deactivate s = Hashtbl.remove active_tracers s
16
17 let tracer_output = ref err_formatter
18 let set_output f = tracer_output := f
19
20 let trace t l s =
21   if l <= level t
22   then begin
23     fprintf !tracer_output "%s: " t;
24     fprintf !tracer_output "%s%!" s
25   end