Module Declaremods

Modules
type 'a module_signature =
| Enforce of 'a

... : T

| Check of 'a list

... <: T1 <: T2, possibly empty

type inline =
| NoInline
| DefaultInline
| InlineAt of int
type module_kind =
| Module
| ModType
| ModAny
type 'modast module_interpretor = Environ.env -> module_kind -> 'modast -> Entries.module_struct_entry * module_kind * Univ.ContextSet.t
type 'modast module_params = (Names.lident list * ('modast * inline)) list
val declare_module : 'modast module_interpretor -> Names.Id.t -> 'modast module_params -> ('modast * inline) module_signature -> ('modast * inline) list -> Names.ModPath.t
val start_module : 'modast module_interpretor -> bool option -> Names.Id.t -> 'modast module_params -> ('modast * inline) module_signature -> Names.ModPath.t
val end_module : unit -> Names.ModPath.t
Module types
val declare_modtype : 'modast module_interpretor -> Names.Id.t -> 'modast module_params -> ('modast * inline) list -> ('modast * inline) list -> Names.ModPath.t
val start_modtype : 'modast module_interpretor -> Names.Id.t -> 'modast module_params -> ('modast * inline) list -> Names.ModPath.t
val end_modtype : unit -> Names.ModPath.t
Libraries i.e. modules on disk
type library_name = Names.DirPath.t
type library_objects
val register_library : library_name -> Safe_typing.compiled_library -> library_objects -> Safe_typing.vodigest -> Univ.ContextSet.t -> unit
val get_library_native_symbols : library_name -> Nativecode.symbols
val start_library : library_name -> unit
val end_library : ?⁠except:Future.UUIDSet.t -> output_native_objects:bool -> library_name -> Safe_typing.compiled_library * library_objects * Safe_typing.native_library
val append_end_library_hook : (unit -> unit) -> unit

append a function to be executed at end_library

val really_import_module : Names.ModPath.t -> unit
val import_module : bool -> Names.ModPath.t -> unit
val declare_include : 'modast module_interpretor -> ('modast * inline) list -> unit
...
val iter_all_segments : (Libobject.object_name -> Libobject.obj -> unit) -> unit
val debug_print_modtab : unit -> Pp.t
val process_module_binding : Names.MBId.t -> Declarations.module_alg_expr -> unit