Module Globals.Functions

module Functions: sig .. end

Functions. The AST should be computed before using this module (cf. Ast.compute).


val self : State.t

Getters

val get : Cil_types.varinfo -> Cil_types.kernel_function
val get_params : Cil_types.kernel_function -> Cil_types.varinfo list
val get_vi : Cil_types.kernel_function -> Cil_types.varinfo

Searching

val find_by_name : string -> Cil_types.kernel_function
val find_def_by_name : string -> Cil_types.kernel_function
val find_decl_by_name : string -> Cil_types.kernel_function

Iterators

val iter : (Cil_types.kernel_function -> unit) -> unit
val fold : (Cil_types.kernel_function -> 'a -> 'a) -> 'a -> 'a
val iter_on_fundecs : (Cil_types.fundec -> unit) -> unit

Setters

Functions of this section should not be called by casual users.

val add : Cil_types.cil_function -> unit

TODO: remove this function and replace all calls by:

val remove : Cil_types.varinfo -> unit

Removes the given varinfo, which must have already been removed from the AST. Warning: this is very dangerous.

val replace_by_declaration : Cil_types.funspec -> Cil_types.varinfo -> Cil_types.location -> unit

Note: if the varinfo is already registered and bound to a definition, the definition will be erased only if vdefined is false. Otherwise, you're trying to register a declaration for a varinfo that is supposed to be defined, which does not look very good.

val replace_by_definition : Cil_types.funspec -> Cil_types.fundec -> Cil_types.location -> unit

TODO: do not take a funspec as argument

val register : Cil_types.kernel_function -> unit