Module Cobj.Index

Compilation object indexes.

Indexes

type cobj = t

See Cobj.t.

type t

The type for compilation object indexes.

val empty : t

The type for empty indexes.

val of_cobjs : ?init:t -> cobj list -> t

of_cobjs ~init cobjs is an index made of init (defaults to empty) and cobjs.

val cobjs : t -> cobj list

to_cobjs i are the compilation objects of i.

val cobjs_by_name : t -> cobj list Omod.Private.String.Map.t

cobjs_by_name i are the module names of i and the compilation objects they map to.

val cobjs_by_digest : t -> cobj list Digest.Map.t

cobjs_by_digest i are the interface digests of i and the compilation objects they map to.

val cobjs_by_pkg_name : t -> cobj list Omod.Private.String.Map.t

cobjs_by_pkg_name i are the package names of i and the compilation objects they map to.

val cobjs_for_mod_name : string -> t -> cobj list

cobjs_for_mod_name n i are the compilation objects of i whose module name matches n.

val cobjs_for_iface_digest : Digest.t -> t -> cobj list

cobjs_for_iface_digest d i are the compilation objects of i whose interface digest matches d.

val cobjs_for_pkg_name : string -> t -> cobj list

cobjs_for_pkg_name n i are the compilation objects of i whose package name matches n.

val cobjs_for_dep : dep -> t -> cobj list

cobjs_for_iface_digest dep i are the compilation objects of i which satisfy dependency dep.

val cobjs_for_dep_res : variants:Omod.Private.String.Set.t -> sat:(cobj -> bool) -> kind:kind -> dep -> t -> cobj list

cobjs_for_dep_res ~variants ~sat ~kind dep i resolves dep in i to a sat satisfying compilation object of kind kind with the following twists:

  • If no kind can be found but a Cmi exists the latter is returned, assuming an mli-only module.
  • If an object is available both as a standalone compilation object and in an archive, only resolutions that mention the archive are returned.
  • If an object is available in multiple variants and variants is not String.Set.empty then variants that do not belong to variants are dropped.