ocaml/toplevel/topdirs.mli
Sébastien Hinderer 5cfe883181 Embed printer types in toplevels and debugger
The debugger and toplevels let users install printers for their data types.

To make sure the provided printers have the right type, both the debugger and
the toplevel need to know the internal OCaml representation of
the expected types.

So far, both the debugger and the toplevels used to extract the expected
representatioons from topdirs.cmi which they were reading at runtime.

This creates problems (e.g. when the compiler has not yet been installed)
and yields not so easy to read code.

In this commit, the type of the printers are defined in strings as they
would be written in OCaml in topdirs.ml. These strings are parsed
at runtime and the corresponding typing declarations are added to the
environment.
2022-11-24 15:22:56 +01:00

48 lines
2.0 KiB
OCaml

(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. *)
(* *)
(* All rights reserved. This file is distributed under the terms of *)
(* the GNU Lesser General Public License version 2.1, with the *)
(* special exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
(* The toplevel directives. *)
open Format
val dir_quit : unit -> unit
val dir_directory : string -> unit
val dir_remove_directory : string -> unit
val dir_cd : string -> unit
val dir_load : formatter -> string -> unit
val dir_use : formatter -> string -> unit
val dir_use_output : formatter -> string -> unit
val dir_install_printer : formatter -> Longident.t -> unit
val dir_remove_printer : formatter -> Longident.t -> unit
(* These are now injected from [Topeval], for the bytecode toplevel only:
val dir_trace : formatter -> Longident.t -> unit
val dir_untrace : formatter -> Longident.t -> unit
val dir_untrace_all : formatter -> unit -> unit
*)
val section_general : string
val section_run : string
val section_env : string
val section_print : string
val section_trace : string
val section_options : string
val section_undocumented : string
(* Here for backwards compatibility, use [Toploop.load_file]. *)
val[@deprecated] load_file : formatter -> string -> bool