Frama-C:
Plug-ins:
Libraries:

Frama-C API - Package

type plugin =
  1. | Kernel
  2. | Plugin of string
type ident = private {
  1. plugin : plugin;
  2. package : string list;
  3. name : string;
}
type jtype =
  1. | Jany
  2. | Jnull
  3. | Jboolean
  4. | Jnumber
  5. | Jstring
  6. | Jalpha
    (*

    string primarily compared without case

    *)
  7. | Jtag of string
    (*

    single constant string

    *)
  8. | Jkey of string
    (*

    kind of a string used for indexing

    *)
  9. | Jindex of string
    (*

    kind of an integer used for indexing

    *)
  10. | Joption of jtype
  11. | Jdict of jtype
    (*

    dictionaries

    *)
  12. | Jarray of jtype
    (*

    order matters

    *)
  13. | Jtuple of jtype list
  14. | Junion of jtype list
  15. | Jrecord of (string * jtype) list
  16. | Jenum of ident * string list
    (*

    type and tags

    *)
  17. | Jdata of ident * jtype
    (*

    type and definition

    *)
  18. | Jself
    (*

    for (simply) recursive types

    *)
type fieldInfo = {
  1. fd_name : string;
  2. fd_type : jtype;
  3. fd_descr : Frama_c_kernel.Markdown.text;
}
type tagInfo = {
  1. tg_name : string;
  2. tg_label : Frama_c_kernel.Markdown.text;
  3. tg_descr : Frama_c_kernel.Markdown.text;
}
type paramInfo =
  1. | P_value of jtype
  2. | P_named of fieldInfo list
type requestInfo = {
  1. rq_kind : [ `GET | `SET | `EXEC ];
  2. rq_input : paramInfo;
  3. rq_output : paramInfo;
  4. rq_signals : string list;
}
type arrayInfo = {
  1. arr_key : string;
  2. arr_kind : jtype;
  3. arr_rows : jtype;
}
type declKindInfo =
  1. | D_signal
  2. | D_type of jtype
  3. | D_enum of tagInfo list
  4. | D_record of fieldInfo list
  5. | D_request of requestInfo
  6. | D_value of jtype
  7. | D_state of jtype
  8. | D_array of arrayInfo
  9. | D_decoder of ident * jtype
  10. | D_order of ident * jtype
  11. | D_default of ident * jtype
type declInfo = {
  1. d_ident : ident;
  2. d_descr : Frama_c_kernel.Markdown.text;
  3. d_kind : declKindInfo;
}
type packageInfo = {
  1. p_plugin : plugin;
  2. p_package : string list;
  3. p_title : string;
  4. p_descr : Frama_c_kernel.Markdown.text;
  5. p_readme : string option;
  6. p_content : declInfo list;
}
val pp_plugin : Stdlib.Format.formatter -> plugin -> unit
val pp_pkgname : Stdlib.Format.formatter -> packageInfo -> unit
val pp_ident : Stdlib.Format.formatter -> ident -> unit
val pp_jtype : Stdlib.Format.formatter -> jtype -> unit
val derived : ?prefix:string -> ?suffix:string -> ident -> ident
module Derived : sig ... end
module IdMap : Stdlib.Map.S with type key = ident
module Scope : sig ... end
val isRecursive : jtype -> bool
val visit_jtype : (ident -> unit) -> jtype -> unit
val visit_field : (ident -> unit) -> fieldInfo -> unit
val visit_param : (ident -> unit) -> paramInfo -> unit
val visit_request : (ident -> unit) -> requestInfo -> unit
val visit_dkind : (ident -> unit) -> declKindInfo -> unit
val visit_decl : (ident -> unit) -> declInfo -> unit
val visit_package_decl : (ident -> unit) -> packageInfo -> unit
val visit_package_used : (ident -> unit) -> packageInfo -> unit
type package
val package : ?plugin:string -> ?name:string -> title:string -> ?descr:Frama_c_kernel.Markdown.text -> ?readme:string -> unit -> package
val declare : package:package -> name:string -> ?descr:Frama_c_kernel.Markdown.text -> declKindInfo -> unit

Register the declaration in the Server API. This is only way to obtain identifiers. This ensures identifiers are declared before being used.

val declare_id : package:package -> name:string -> ?descr:Frama_c_kernel.Markdown.text -> declKindInfo -> ident

Same as declare but returns the associated identifier.

val update : package:package -> name:string -> declKindInfo -> unit

Replace the declaration for the given name in the package.

val iter : (packageInfo -> unit) -> unit
val resolve : ?keywords:string list -> packageInfo -> string IdMap.t

Assigns non-classing names for each identifier.

val field : fieldInfo -> string * jtype
val name_of_pkg : ?sep:string -> plugin -> string list -> string
val name_of_pkginfo : ?sep:string -> packageInfo -> string
val name_of_package : ?sep:string -> package -> string
val name_of_ident : ?sep:string -> ident -> string
val litteral : string -> Frama_c_kernel.Markdown.text

Quoted string

val md_tags : ?title:string -> tagInfo list -> Frama_c_kernel.Markdown.table
val md_fields : ?title:string -> pp -> fieldInfo list -> Frama_c_kernel.Markdown.table