--- /dev/null
+(***********************************************************************)
+(* *)
+(* TAToo *)
+(* *)
+(* Kim Nguyen, LRI UMR8623 *)
+(* Université Paris-Sud & CNRS *)
+(* *)
+(* Copyright 2010-2013 Université Paris-Sud and Centre National de la *)
+(* Recherche Scientifique. All rights reserved. This file is *)
+(* distributed under the terms of the GNU Lesser General Public *)
+(* License, with the special exception on linking described in file *)
+(* ../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+INCLUDE "utils.ml"
+open Format
+
+type level = [ `NORMAL (* regular output *)
+ | `STATS (* Statistics only given if -s *)
+ | `DEBUG] (* DEBUG STATEMENTS *)
+
+let string_of_level = function
+| `NORMAL -> "NORMAL"
+| `STATS -> "STATS"
+| `DEBUG -> "DEBUG"
+
+
+let _o = ref err_formatter
+
+let set_output o = _o := o
+
+IFDEF DEBUG
+THEN
+let debug = true
+ELSE
+let debug = false
+END
+
+let kont fmt = fprintf fmt "@]@."
+
+let msg level msg =
+ let do_ =
+ match level with
+ `NORMAL -> true
+ | `DEBUG when debug -> true
+ | `STATS when !Options.stats -> true
+ | _ -> false
+ in
+ if do_ then begin
+ fprintf !_o "@[%s: " (string_of_level level);
+ kfprintf kont !_o msg
+ end else
+ ifprintf !_o msg