From 6b649aba925b6f7462da07599fe67ebb12a3460e Mon Sep 17 00:00:00 2001 From: Samuel Mimram Date: Wed, 28 Jul 2004 21:54:47 +0000 Subject: Imported Upstream version 8.0pl1 --- library/goptions.mli | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 library/goptions.mli (limited to 'library/goptions.mli') diff --git a/library/goptions.mli b/library/goptions.mli new file mode 100644 index 00000000..bbf5357a --- /dev/null +++ b/library/goptions.mli @@ -0,0 +1,171 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* 'a + +(*s Tables. *) + +(* The functor [MakeStringTable] declares a table containing objects + of type [string]; the function [member_message] say what to print + when invoking the "Test Toto Titi foo." command; at the end [title] + is the table name printed when invoking the "Print Toto Titi." + command; [active] is roughly the internal version of the vernacular + "Test ...": it tells if a given object is in the table; [elements] + returns the list of elements of the table *) + +module MakeStringTable : + functor + (A : sig + val key : option_name + val title : string + val member_message : string -> bool -> std_ppcmds + val synchronous : bool + end) -> +sig + val active : string -> bool + val elements : unit -> string list +end + +(* The functor [MakeRefTable] declares a new table of objects of type + [A.t] practically denoted by [reference]; the encoding function + [encode : reference -> A.t] is typically a globalization function, + possibly with some restriction checks; the function + [member_message] say what to print when invoking the "Test Toto + Titi foo." command; at the end [title] is the table name printed + when invoking the "Print Toto Titi." command; [active] is roughly + the internal version of the vernacular "Test ...": it tells if a + given object is in the table. *) + +module MakeRefTable : + functor + (A : sig + type t + val encode : reference -> t + val subst : substitution -> t -> t + val printer : t -> std_ppcmds + val key : option_name + val title : string + val member_message : t -> bool -> std_ppcmds + val synchronous : bool + end) -> + sig + val active : A.t -> bool + val elements : unit -> A.t list + end + + +(*s Options. *) + +(* These types and function are for declaring a new option of name [key] + and access functions [read] and [write]; the parameter [name] is the option name + used when printing the option value (command "Print Toto Titi." *) + +type 'a option_sig = { + optsync : bool; + optname : string; + optkey : option_name; + optread : unit -> 'a; + optwrite : 'a -> unit +} + +(* When an option is declared synchronous ([optsync] is [true]), the output is + a synchronous write function. Otherwise it is [optwrite] *) + +type 'a write_function = 'a -> unit + +val declare_int_option : int option option_sig -> int option write_function +val declare_bool_option : bool option_sig -> bool write_function +val declare_string_option: string option_sig -> string write_function + + +(*s Special functions supposed to be used only in vernacentries.ml *) + +val get_string_table : + option_name -> + < add : string -> unit; + remove : string -> unit; + mem : string -> unit; + print : unit > + +val get_ref_table : + option_name -> + < add : reference -> unit; + remove : reference -> unit; + mem : reference -> unit; + print : unit > + +val set_int_option_value : option_name -> int option -> unit +val set_bool_option_value : option_name -> bool -> unit +val set_string_option_value : option_name -> string -> unit + +val print_option_value : option_name -> unit + +val print_tables : unit -> unit + -- cgit v1.2.3