Frama-C API - Make
Parameters
module _ : sig ... endSignature
include Printer_api.S_pp
Printer for C constructs
val pp_location : Stdlib.Format.formatter -> Cil_types.location -> unitval pp_constant : Stdlib.Format.formatter -> Cil_types.constant -> unitval pp_storage : Stdlib.Format.formatter -> Cil_types.storage -> unitval pp_ikind : Stdlib.Format.formatter -> Cil_types.ikind -> unitval pp_fkind : Stdlib.Format.formatter -> Cil_types.fkind -> unitval pp_typ : Stdlib.Format.formatter -> Cil_types.typ -> unitval pp_exp : Stdlib.Format.formatter -> Cil_types.exp -> unitval pp_vdecl : Stdlib.Format.formatter -> Cil_types.varinfo -> unitval pp_varinfo : Stdlib.Format.formatter -> Cil_types.varinfo -> unitval pp_lhost : Stdlib.Format.formatter -> Cil_types.lhost -> unitval pp_lval : Stdlib.Format.formatter -> Cil_types.lval -> unitval pp_field : Stdlib.Format.formatter -> Cil_types.fieldinfo -> unitval pp_offset : Stdlib.Format.formatter -> Cil_types.offset -> unitval pp_str_literal : Stdlib.Format.formatter -> Cil_types.str_literal -> unitval pp_init : Stdlib.Format.formatter -> Cil_types.init -> unitval pp_init_or_str : Stdlib.Format.formatter -> Cil_types.init_or_str -> unitval pp_binop : Stdlib.Format.formatter -> Cil_types.binop -> unitval pp_unop : Stdlib.Format.formatter -> Cil_types.unop -> unitval pp_attribute : Stdlib.Format.formatter -> Cil_types.attribute -> unitval pp_attrparam : Stdlib.Format.formatter -> Cil_types.attrparam -> unitval pp_attributes : Stdlib.Format.formatter -> Cil_types.attributes -> unitval pp_instr : Stdlib.Format.formatter -> Cil_types.instr -> unitval pp_label : Stdlib.Format.formatter -> Cil_types.label -> unitval pp_stmt : Stdlib.Format.formatter -> Cil_types.stmt -> unitval pp_block : Stdlib.Format.formatter -> Cil_types.block -> unitval pp_global : Stdlib.Format.formatter -> Cil_types.global -> unitval pp_file : Stdlib.Format.formatter -> Cil_types.file -> unitval pp_compinfo : Stdlib.Format.formatter -> Cil_types.compinfo -> unitval pp_logic_type_info : Stdlib.Format.formatter -> Cil_types.logic_type_info -> unitval pp_logic_ctor_info : Stdlib.Format.formatter -> Cil_types.logic_ctor_info -> unitval pp_initinfo : Stdlib.Format.formatter -> Cil_types.initinfo -> unitval pp_logic_info : Stdlib.Format.formatter -> Cil_types.logic_info -> unitval pp_logic_constant : Stdlib.Format.formatter -> Cil_types.logic_constant -> unitval pp_fundec : Stdlib.Format.formatter -> Cil_types.fundec -> unitPrinter for ACSL constructs
val pp_relation : Stdlib.Format.formatter -> Cil_types.relation -> unitval pp_model_info : Stdlib.Format.formatter -> Cil_types.model_info -> unitval pp_term_lval : Stdlib.Format.formatter -> Cil_types.term_lval -> unitval pp_term_lhost : Stdlib.Format.formatter -> Cil_types.term_lhost -> unitval pp_logic_var : Stdlib.Format.formatter -> Cil_types.logic_var -> unitval pp_logic_type : Stdlib.Format.formatter -> Cil_types.logic_type -> unitval pp_identified_term : Stdlib.Format.formatter -> Cil_types.identified_term -> unitval pp_term : Stdlib.Format.formatter -> Cil_types.term -> unitval pp_model_field : Stdlib.Format.formatter -> Cil_types.model_info -> unitval pp_term_offset : Stdlib.Format.formatter -> Cil_types.term_offset -> unitval pp_logic_builtin_label : Stdlib.Format.formatter -> Cil_types.logic_builtin_label -> unitval pp_logic_label : Stdlib.Format.formatter -> Cil_types.logic_label -> unitval pp_builtin_logic_info : Stdlib.Format.formatter -> Cil_types.builtin_logic_info -> unitval pp_extended : Stdlib.Format.formatter -> Cil_types.acsl_extension -> unitval pp_short_extended : Stdlib.Format.formatter -> Cil_types.acsl_extension -> unitval pp_predicate_node : Stdlib.Format.formatter -> Cil_types.predicate_node -> unitval pp_predicate : Stdlib.Format.formatter -> Cil_types.predicate -> unitval pp_toplevel_predicate : Stdlib.Format.formatter -> Cil_types.toplevel_predicate -> unitval pp_identified_predicate : Stdlib.Format.formatter -> Cil_types.identified_predicate -> unitval pp_code_annotation : Stdlib.Format.formatter -> Cil_types.code_annotation -> unitval pp_funspec : Stdlib.Format.formatter -> Cil_types.funspec -> unitval pp_behavior : Stdlib.Format.formatter -> Cil_types.funbehavior -> unitval pp_global_annotation : Stdlib.Format.formatter -> Cil_types.global_annotation -> unitval pp_decreases : Stdlib.Format.formatter -> Cil_types.variant -> unitval pp_variant : Stdlib.Format.formatter -> Cil_types.variant -> unitval pp_from : Stdlib.Format.formatter -> Cil_types.from -> unitval pp_assigns : Stdlib.Format.formatter -> Cil_types.assigns -> unitval pp_allocation : Stdlib.Format.formatter -> Cil_types.allocation -> unitval pp_loop_from : Stdlib.Format.formatter -> Cil_types.from -> unitval pp_loop_assigns : Stdlib.Format.formatter -> Cil_types.assigns -> unitval pp_loop_allocation : Stdlib.Format.formatter -> Cil_types.allocation -> unitval pp_post_cond : Stdlib.Format.formatter -> (Cil_types.termination_kind * Cil_types.identified_predicate) -> unitGeneral form of printers
val pp_full_assigns : string -> Stdlib.Format.formatter -> Cil_types.assigns -> unitfirst parameter is the introducing keyword (e.g. loop_assigns or assigns).
Extensible printer
class extensible_printer : unit -> Frama_c_kernel.Printer_api.extensible_printer_typeExtend this class if you want to obtain a custom pretty-printer.
module type PrinterClass = sig ... endAuxiliary module type for a pretty-printer
module type PrinterExtension = functor (_ : PrinterClass) -> PrinterClassSignature for extending an existing pretty-printer. OCaml forbids inheriting from a class received as argument, so we use a functor instead.
val update_printer : (module PrinterExtension) -> unitRegister a pretty-printer extension. The pretty-printer passed as argument X in the functor PrinterExtension is the current pretty-printer, which you should inherit from.
This is how this function should be used:
module PrinterClassDeferred (X: Printer.PrinterClass) = struct
class printer : Printer.extensible_printer = object(self)
inherit X.printer as super
(* Override the standard methods *)
end
end
let () = Printer.update_printer
(module PrinterClassDeferred: Printer.PrinterExtension)val current_printer : unit -> (module PrinterClass)Returns the current pretty-printer, with all the extensions added using update_printer.
val set_printer : (module PrinterClass) -> unitSet the current pretty-printer, typically to a printer previously obtained through current_printer. This can be useful to cancel a modification performed through update_printer.
