Merge branch 'handle-stdout'
[SXSI/xpathcomp.git] / include / debug.ml
1 (******************************************************************************)
2 (*  SXSI : XPath evaluator                                                    *)
3 (*  Kim Nguyen (Kim.Nguyen@nicta.com.au)                                      *)
4 (*  Copyright NICTA 2008                                                      *)
5 (*  Distributed under the terms of the LGPL (see LICENCE)                     *)
6 (******************************************************************************)
7
8 (* This file should not be compiled but included with INCLUDE. This requires
9    pa_macro.cmo to be loaded (see Makefile)
10 *)
11
12 IFNDEF DEBUG__ML__
13 THEN
14 DEFINE DEBUG__ML__
15
16 IFDEF DEBUG
17 THEN
18 module Loc = Camlp4.PreCast.Loc
19
20 DEFINE D_IGNORE_(e1,e2) = (let () = e1 in ();e2)
21 DEFINE D_IF_(e1,e2) = e1
22 DEFINE D_TRACE_(e) = e
23
24 ELSE
25 DEFINE D_IGNORE_(e1,e2) = (e2)
26 DEFINE D_IF_(e1,e2) = e2
27 DEFINE D_TRACE_(e) = ()
28
29 END (* IFDEF DEBUG *)
30
31
32 IFDEF PROFILE
33 THEN
34 DEFINE REGISTER_PROF_(s) = (Hashtbl.replace Profile.table ("", s) (ref (0, [])))
35 DEFINE PROF_(s, e) =
36   let ___tmp_t1 = Unix.gettimeofday () in
37   let ___tmp_result = e in
38   let ___tmp_t2 = Unix.gettimeofday () in
39   let ___r = Hashtbl.find Profile.table ("", s) in
40   let ___c,___tl = !___r in
41   ___r := (___c+1, ((___tmp_t2 -. ___tmp_t1) *. 1000.)::___tl);
42   ___tmp_result
43
44 ELSE
45 DEFINE PROF_(s, e) = e
46 DEFINE REGISTER_PROF_(s) = ()
47 END
48
49
50 END (* IFNDEF DEBUG__ML__ *)