Module ClangFrontend.Capture

val run_clang : ClangCommand.t -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a
val capture : ClangCommand.t -> unit

If the command is detected to correspond to a source file, translate it.

  1. Given a compilation command, attach our ASTExporter clang plugin to the command and run it.
  2. Our clang plugin emits the AST (Abstract Syntax Tree) as Biniou data that we deserialize. The AST format is described in Clang_ast_t (and its Biniou API is in Clang_ast_b).
  3. If enabled, invoke translation to Sil via CFrontend.
  4. If enabled, invoke linters callbacks from ASTLanguage (see below). More on linters here:
val al_callback_ref : (CFrontend_config.translation_unit_context -> ATDGenerated.Clang_ast_t.decl -> unit) IStdlib.IStd.ref

callback set by AL to avoid circular dependencies between clang/ and al/ without having to expose the clang-only types involved all the way to integration/