Module Lib.Name

Library names.

Library names are dot separated segments of uncapitalized OCaml compilation unit names. Replacing the dots by the platform directory separator yields the directory of the library relative to the OCAMLPATH. Here are examples of library names and corresponding library directories for the following OCAMLPATH:

OCAMLPATH=/home/bactrian/opam/lib:/usr/lib/ocaml

Library name       Library directory
----------------------------------------------------------------
ptime.clock.jsoo   /home/bactrian/opam/lib/ptime/clock/jsoo
re.emacs           /home/bactrian/opam/lib/re/emacs
ocamlgraph         /usr/lib/ocaml/ocamlgraph
ocaml.unix         /usr/lib/ocaml/ocaml/unix
N/A (shadowed)     /usr/lib/ocaml/re/emacs

For legacy reasons library names also correspond to ocamlfind package names.

Library names

type t

The type for library names looked up in OCAMLPATH. For legacy reasons this may also correspond to an ocamlfind package name.

val v : string -> t

v s is a library for n. Raises Invalid_argument if s is not a valid library name.

val first : t -> string

first n is n's first name, that is the rightmost one.

val last : t -> string

last n is n's last name, that is the leftmost one.

val undot : rep:B00_std.Char.t -> t -> string

undot ~rep n is n with . replaced by rep.

val to_archive_name : t -> string

to_archive_name n is undot ~rep:'_' n.

val of_string : string -> (t, string) result

of_string s is a library name from n.

val to_string : t -> string

to_string n is n as a string.

val to_fpath : t -> B00_std.Fpath.t

to_fpath n is n with dots replaced by B00_std.Fpath.dir_sep_char.

val equal : t -> t -> bool

equal n0 n1 is true iff n0 and n1 are the same library name.

val compare : t -> t -> int

compare n0 n1 is a total order on library names compatible with equal.

val pp : t B00_std.Fmt.t

pp formats a library name.

module Set : Set.S with type elt = t

Library name sets.

module Map : Map.S with type key = t

Library name maps.