LibLib: record of operations, backtrack, low-level sections
This module provides a general mechanism to keep a trace of all operations and to backtrack (undo) those operations. It provides also the section mechanism (at a low level; discharge is not known at this step).
type export = (export_flag * Libobject.open_filter) optionval make_oname : Libobject.object_prefix -> Names.Id.t -> Libobject.object_nameval make_foname : Names.Id.t -> Libobject.object_nametype 'summary node = | | CompilingLibrary of Libobject.object_prefix | 
| | OpenedModule of is_type * export * Libobject.object_prefix * 'summary | 
| | OpenedSection of Libobject.object_prefix * 'summary | 
val node_prefix : 'summary node -> Libobject.object_prefixExtract the object_prefix component. Note that it is the prefix of the objects *inside* this node, eg in Module M. we have OpenedModule with prefix containing M.
type 'summary library_segment = ('summary node * Libobject.t list) listAdding operations (which call the cache method, and getting the current list of operations (most recent ones coming first).
val add_leaf : Libobject.obj -> unitval add_discharged_leaf : Libobject.discharged_obj -> unitThe function contents gives access to the current entire segment
val contents : unit -> Summary.Interp.frozen library_segmentval prefix : unit -> Libobject.object_prefixUser-side names
cwd() is (prefix()).obj_dir current_mp() is (prefix()).obj_mp
Inside a library A.B module M section S, we have
make_path (resp make_path_except_section) uses cwd (resp cwd_except_section) make_kn uses current_mp
val cwd : unit -> Libnames.full_pathval cwd_except_section : unit -> Libnames.full_pathval current_dirpath : bool -> Names.DirPath.tval make_path : Names.Id.t -> Libnames.full_pathval make_path_except_section : Names.Id.t -> Libnames.full_pathval current_mp : unit -> Names.ModPath.tKernel-side names
val make_kn : Names.Id.t -> Names.KerName.ttype discharged_item = | | DischargedExport of Libobject.ExportObj.t | 
| | DischargedLeaf of Libobject.discharged_obj | 
type classified_objects = {| substobjs : Libobject.t list; | 
| keepobjs : Libobject.keep_objects; | 
| escapeobjs : Libobject.escape_objects; | 
| anticipateobjs : Libobject.t list; | 
}module type StagedLibS = sig ... endThe StagedLibS abstraction describes operations and traversal for Lib at a given stage.
We provide two instances of StagedLibS, corresponding to the Synterp and Interp stages.
module Synterp : StagedLibS with type summary = Summary.Synterp.frozenmodule Interp : StagedLibS with type summary = Summary.Interp.frozenval start_compilation : Names.DirPath.t -> Names.ModPath.t -> unittype compilation_result = {| info : Library_info.t; | 
| synterp_objects : classified_objects; | 
| interp_objects : classified_objects; | 
}val end_compilation : Names.DirPath.t -> compilation_resultFinalize the compilation of a library.
val library_dp : unit -> Names.DirPath.tThe function library_dp returns the DirPath.t of the current compiling library (or default_library)
val split_modpath : Names.ModPath.t -> Names.DirPath.t * Names.Id.t listExtract the library part of a name even if in a section
val library_part : Names.GlobRef.t -> Names.DirPath.tCompatibility layer