Frama-C:
Plug-ins:
Libraries:

Frama-C API - Pdg

exception Top

can be raised by most of the functions when called with a Top PDG. Top means that we were not able to compute the PDG for this function.

exception Bottom

exception raised when requiring the PDG of a function that is never called.

include Frama_c_kernel.Datatype.S
include Frama_c_kernel.Datatype.S_no_copy
val name : string

Unique name of the datatype.

Datatype descriptor.

Packed version of the descriptor.

val reprs : t list

List of representants of the descriptor.

val equal : t -> t -> bool
val compare : t -> t -> int

Comparison: same spec than Stdlib.compare.

val hash : t -> int

Hash function: same spec than Hashtbl.hash.

val pretty : Stdlib.Format.formatter -> t -> unit

Pretty print each value in an user-friendly way.

val mem_project : (Frama_c_kernel.Project_skeleton.t -> bool) -> t -> bool

mem_project f x must return true iff there is a value p of type Project.t in x such that f p returns true.

val copy : t -> t

Deep copy: no possible sharing between x and copy x.

  • parameter name

    of the function associated with that PDG

val is_top : t -> bool
val is_bottom : t -> bool
val iter_nodes : (Node.t -> unit) -> t -> unit
val fold_call_nodes : ('a -> Node.t -> 'a) -> 'a -> t -> Frama_c_kernel.Cil_types.stmt -> 'a
val iter_direct_dpds : t -> (Node.t -> unit) -> Node.t -> unit
val iter_direct_codpds : t -> (Node.t -> unit) -> Node.t -> unit
type dpd_info = Node.t * Frama_c_kernel.Locations.Zone.t option

a dependency to another node. The dependency can be restricted to a zone. (None means no restriction ie. total dependency)

val get_all_direct_dpds : t -> Node.t -> dpd_info list
val get_x_direct_dpds : Dpd.td -> t -> Node.t -> dpd_info list
val get_all_direct_codpds : t -> Node.t -> dpd_info list
val get_x_direct_codpds : Dpd.td -> t -> Node.t -> dpd_info list
val fold_direct_dpds : t -> ('a -> (Dpd.t * Frama_c_kernel.Locations.Zone.t option) -> Node.t -> 'a) -> 'a -> Node.t -> 'a
val fold_direct_codpds : t -> ('a -> (Dpd.t * Frama_c_kernel.Locations.Zone.t option) -> Node.t -> 'a) -> 'a -> Node.t -> 'a
val pretty_bw : ?bw:bool -> Stdlib.Format.formatter -> t -> unit
val pretty_graph : ?bw:bool -> Stdlib.Format.formatter -> G.t -> unit
type fi = (Node.t, unit) PdgIndex.FctIndex.t
val get_index : t -> fi
val build_dot : string -> t -> unit

build the PDG .dot file and put it in filename.

module Printer : sig ... end