package ocaml-base-compiler
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=adc07a3995362403f3cb11085a86354de08e5a7f9eb3c09be7bbcc38a3a26744
    
    
  doc/ocamlcommon/Cmt_format/index.html
Module Cmt_format
cmt and cmti files format.
The layout of a cmt file is as follows: <cmt> := {<cmi>} <cmt magic> {cmt infos} {<source info>} where <cmi> is the cmi file format: <cmi> := <cmi magic> <cmi info>. More precisely, the optional <cmi> part must be present if and only if the file is:
- a cmti, or
- a cmt, for a ml file which has no corresponding mli (hence no corresponding cmti).
Thus, we provide a common reading function for cmi and cmt(i) files which returns an option for each of the three parts: cmi info, cmt info, source info.
type binary_annots = - | Packed of Types.signature * string list
- | Implementation of Typedtree.structure
- | Interface of Typedtree.signature
- | Partial_implementation of binary_part array
- | Partial_interface of binary_part array
and binary_part = - | Partial_structure of Typedtree.structure
- | Partial_structure_item of Typedtree.structure_item
- | Partial_expression of Typedtree.expression
- | Partial_pattern : 'k Typedtree.pattern_category * 'k Typedtree.general_pattern -> binary_part
- | Partial_class_expr of Typedtree.class_expr
- | Partial_signature of Typedtree.signature
- | Partial_signature_item of Typedtree.signature_item
- | Partial_module_type of Typedtree.module_type
type cmt_infos = {- cmt_modname : Misc.modname;
- cmt_annots : binary_annots;
- cmt_value_dependencies : (Types.value_description * Types.value_description) list;
- cmt_comments : (string * Location.t) list;
- cmt_args : string array;
- cmt_sourcefile : string option;
- cmt_builddir : string;
- cmt_loadpath : string list;
- cmt_source_digest : string option;
- cmt_initial_env : Env.t;
- cmt_imports : Misc.crcs;
- cmt_interface_digest : Digest.t option;
- cmt_use_summaries : bool;
}exception Error of errorval read : string -> Cmi_format.cmi_infos option * cmt_infos optionread filename opens filename, and extract both the cmi_infos, if it exists, and the cmt_infos, if it exists. Thus, it can be used with .cmi, .cmt and .cmti files.
.cmti files always contain a cmi_infos at the beginning. .cmt files only contain a cmi_infos at the beginning if there is no associated .cmti file.
val read_cmt : string -> cmt_infosval read_cmi : string -> Cmi_format.cmi_infosval save_cmt : 
  string ->
  string ->
  binary_annots ->
  string option ->
  Env.t ->
  Cmi_format.cmi_infos option ->
  unitsave_cmt filename modname binary_annots sourcefile initial_env cmi writes a cmt(i) file.
val read_magic_number : in_channel -> stringval add_saved_type : binary_part -> unitval get_saved_types : unit -> binary_part listval set_saved_types : binary_part list -> unitval record_value_dependency : 
  Types.value_description ->
  Types.value_description ->
  unit