Spec-Zone.ru › OCaml

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API