diff --git a/.ocamlinit b/.ocamlinit index e2d652fa..3a2564f1 100644 --- a/.ocamlinit +++ b/.ocamlinit @@ -15,6 +15,7 @@ #directory "_build/src/sexp";; #directory "_build/src/bigarray/";; #directory "_build/src/threads";; +#directory "_build/src/top/";; #directory "_build/tests/";; #load "containers.cma";; #load "containers_iter.cma";; @@ -27,6 +28,7 @@ #load "containers_pervasives.cma";; #load "containers_bigarray.cma";; #load "containers_misc.cma";; +#load "containers_top.cma";; #thread;; #load "containers_thread.cma";; open Containers_misc;; diff --git a/_oasis b/_oasis index ef866ff4..f3aea730 100644 --- a/_oasis +++ b/_oasis @@ -148,6 +148,15 @@ Library "containers_lwt" Install$: flag(lwt) && flag(misc) BuildDepends: containers, lwt, containers.misc +Library "containers_top" + Path: src/top/ + Modules: Containers_top + FindlibName: top + FindlibParent: containers + BuildDepends: compiler-libs.common, containers, containers.data, + containers.misc, containers.bigarray, containers.string, + containers.unix, containers.sexp, containers.iter + Document containers Title: Containers docs Type: ocamlbuild (0.3) diff --git a/src/top/containers_top.ml b/src/top/containers_top.ml new file mode 100644 index 00000000..4df0bdae --- /dev/null +++ b/src/top/containers_top.ml @@ -0,0 +1,36 @@ + +(* This file is free software, part of containers. See file "license" for more details. *) + +type 'a printer = Format.formatter -> 'a -> unit + +let eval_exn str = + let lexbuf = Lexing.from_string str in + let phrase = !Toploop.parse_toplevel_phrase lexbuf in + Toploop.execute_phrase false Format.err_formatter phrase + +let install_printer s = + try + ignore (eval_exn ("#install_printer " ^ s ^ " ;; ")) + with _ -> + Printexc.print_backtrace stderr; + () +let install_printers = List.iter install_printer + +let pp_vector pp_x out (v: _ CCVector.vector) = CCVector.print pp_x out v +let pp_klist (ppx:Format.formatter -> 'a -> unit) out l = CCKList.print ppx out l + +let () = + install_printers + [ "CCHashtbl.print" + ; "Containers_top.pp_vector" + ; "CCBV.print" + ; "CCDeque.print" + ; "CCFQueue.print" + ; "CCIntMap.print" + ; "CCPersistentArray.print" + ; "CCBigstring.print" + ; "Containers_top.pp_klist" + ; "CCKTree.print" + ; "CCSexpM.print" + ] +