Модуль Unit_info
module Unit_info: sig .. end
Этот модуль централизует обработку файлов компиляции и их метаданных.
Более важно, этот модуль предоставляет функции для получения имён модулей из строк или имён файлов.
Конвенция имён модулей и вычисления
type modname = string
type filename = string
type file_prefix = string
val modulize : string -> modname
modulize s приводит к верхнему регистру первую букву s.
val normalize : string -> string
normalize s приводит к нижнему регистру первую букву s.
val modname_from_source : filename -> modname
modname_from_source filename является modulize stem, где stem — это имя файла filename без всех расширений. Например, modname_from_source "/pa.th/x.ml.pp" равно "X".
Функция валидации имени модуля
val is_unit_name : modname -> bool
is_unit_name ~strict name истинно только если name может быть использовано как валидное имя модуля.
Метаданные для модуля компиляции
type t
Метаданные для модуля компиляции:
- имя модуля, связанное с модулем
- префикс имени файла (dirname + basename без всех расширений) для артефактов компиляции
- исходный файл входных данных Например, при вызове
ocamlopt dir/x.mli -o target/y.cmi, - исходный файл входных данных —
dir/x.mli - имя модуля —
Y - префикс —
target/y
val source_file : t -> filename
source_file u — это исходный файл u.
val prefix : t -> file_prefix
prefix u — это префикс имени файла модуля.
val modname : t -> modname
modname u или artifact_modname a — это имя модуля модуля или артефакта компиляции.
val check_unit_name : t -> unit
check_unit_name u выводит предупреждение, если полученное имя модуля modname u не должно использоваться как имя модуля, как указано в Unit_info.is_unit_name ~strict:true.
val make : ?check_modname:bool -> source_file:filename -> file_prefix -> t
make ~check ~source_file prefix связывает и source_file и имя модуля Unit_info.modname_from_source target_prefix с префиксом пути к файловой системе prefix.
Если check_modname=true, эта функция выводит предупреждение, если полученное имя модуля не является валидным согласно Unit_info.check_unit_name.
module Artifact: sig .. end
Артефакты сборки
Метаданные полученных артефактов сборки
val cmi : t -> Artifact.t
Эти функции извлекают определённые artifact метаданные из unit метаданных.
val cmo : t -> Artifact.t
val cmx : t -> Artifact.t
val obj : t -> Artifact.t
val cmt : t -> Artifact.t
val cmti : t -> Artifact.t
val annot : t -> Artifact.t
val companion_cmi : Artifact.t -> Artifact.t
Функции ниже изменяют тип артефакта, обновляя расширение его имени файла. Эти функции намеренно не покрывают все типы артефактов, потому что мы хотим отслеживать, какие артефакты предполагается связывать вместе.
val companion_obj : Artifact.t -> Artifact.t
val companion_cmt : Artifact.t -> Artifact.t
Мli и cmi, полученные из файлов реализации
При компиляции реализации модуля в присутствии файлов mli и cmi, следующие функции помогают обработать это.
val mli_from_source : t -> filename
mli_from_source u — это имя файла исходного интерфейса, связанное с модулем u. Фактическое расширение зависит от Config.interface_suffix.
val mli_from_artifact : Artifact.t -> filename
mli_from_artifact t — это имя файла исходного интерфейса, полученного из артефакта t. Этот вариант необходим при обработке артефактов, полученных из неизвестных исходных файлов (например, упакованных модулей).
val is_cmi : Artifact.t -> bool
Проверка, является ли артефакт cmi
val find_normalized_cmi : t -> Artifact.t
find_normalized_cmi u находит в пути загрузки файл, соответствующий имени модуля modname u.
-
Возбуждает
Not_foundесли такой cmi не существует
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/compilerlibref/Unit_info.html