(***********************************************************************) (* 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 [check] is for testing if a given object is allowed to be added to the table; 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 check : string -> unit val key : option_name val title : string val member_message : string -> bool -> string val synchronous : bool end) -> sig val active : string -> bool val elements : unit -> string list end (* The functor [MakeIdentTable] declares a new table of [identifier]; for generality, identifiers may be internally encode in other type which is [A.t] through an encoding function [encode : identifier -> A.t] (typically, [A.t] is the persistent [section_path] associated to the currentdenotation of the [identifier] and the encoding function is the globalization function); the function [check] is for testing if a given object is allowed to be added to the table; 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 MakeIdentTable : functor (A : sig type t val encode : identifier -> t val check : t -> unit val printer : t -> std_ppcmds val key : option_name val title : string val member_message : identifier -> bool -> string val synchronous : bool end) -> sig val active : A.t -> bool val elements : unit -> A.t list end (*s Options. *) (*s a. Synchronous options. *) (* These types and function are for declaring a new option of name [key] and default value [default]; the parameter [name] is the option name used when printing the option value (command "Print Toto Titi." *) type 'a sync_option_sig = { optsyncname : string; optsynckey : option_name; optsyncdefault : 'a } type 'a value_function = unit -> 'a val declare_sync_int_option : int sync_option_sig -> int value_function val declare_sync_bool_option : bool sync_option_sig -> bool value_function val declare_sync_string_option: string sync_option_sig -> string value_function (*s b. Asynchronous options. *) type 'a async_option_sig = { optasyncname : string; optasynckey : option_name; optasyncread : unit -> 'a; optasyncwrite : 'a -> unit } val declare_async_int_option : int async_option_sig -> unit val declare_async_bool_option : bool async_option_sig -> unit val declare_async_string_option : string async_option_sig -> unit (*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_ident_table : option_name -> < add : identifier -> unit; remove : identifier -> unit; mem : identifier -> unit; print : unit > val set_int_option_value : option_name -> int -> 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