Module SlicingMacros

module SlicingMacros: sig .. end
Slicing module public macros that should be used to avoid using the type concrete definition from other modules.

This .mli exists mainly to facilitate 'make -j'. A lot of the get_ functions below should be inlined, as there is no good reason to treat those types as semi-private



Options


val str_level_option : SlicingInternals.level_option -> string
val translate_num_to_slicing_level : int -> SlicingInternals.level_option
val get_default_level_option : bool -> SlicingInternals.level_option

Getting fct_info and others



getting svar


val fi_svar : SlicingInternals.fct_info -> Cil_types.varinfo
val ff_svar : SlicingInternals.fct_slice -> Cil_types.varinfo

getting fct_info


val get_kf_fi : SlicingInternals.project -> Kernel_function.t -> SlicingInternals.fct_info
Get the fct_info if it exists or build a new fct_info.
val fold_fi : ('a -> SlicingInternals.fct_info -> 'a) ->
'a -> SlicingInternals.project -> 'a
val get_ff_id : SlicingInternals.fct_slice -> int

getting num id



getting names


val fi_name : SlicingInternals.fct_info -> string
val ff_name : SlicingInternals.fct_slice -> string
get the name of the function corresponding to that slice.
val f_name : SlicingInternals.fct_id -> string
val ff_src_name : SlicingInternals.fct_slice -> string

getting kernel_function


val get_fi_kf : SlicingInternals.fct_info -> Cil_types.kernel_function
val get_ff_kf : SlicingInternals.fct_slice -> Cil_types.kernel_function
val get_pdg_kf : PdgTypes.Pdg.t -> Kernel_function.t

getting PDG


val get_fi_pdg : SlicingInternals.fct_info -> Db.Pdg.t
val get_ff_pdg : SlicingInternals.fct_slice -> Db.Pdg.t

getting the slicing level


val ff_slicing_level : SlicingInternals.fct_slice -> SlicingInternals.level_option
val change_fi_slicing_level : SlicingInternals.fct_info -> SlicingInternals.level_option -> unit
val change_slicing_level : SlicingInternals.project -> Kernel_function.t -> int -> unit
Raises SlicingTypes.WrongSlicingLevel if n is not valid.

functions and slices


val fi_slices : SlicingInternals.fct_info -> SlicingInternals.fct_slice list

Comparisons


val equal_fi : SlicingInternals.fct_info -> SlicingInternals.fct_info -> bool
val equal_ff : SlicingInternals.fct_slice -> SlicingInternals.fct_slice -> bool

Calls


val same_call : Cil_types.stmt -> Cil_types.stmt -> bool
val same_ff_call : SlicingInternals.fct_slice * Cil_types.stmt ->
SlicingInternals.fct_slice * Cil_types.stmt -> bool
val is_call_stmt : Cil_types.stmt -> bool
val get_called_kf : Cil_types.stmt -> Kernel_function.Hptset.elt
val is_variadic : Kernel_function.t -> bool
val get_fi_call : SlicingInternals.project ->
Cil_types.stmt -> SlicingInternals.fct_info option
get the fct_info of the called function, if we know it
val is_src_fun_called : SlicingInternals.project -> Kernel_function.t -> bool
val is_src_fun_visible : SlicingInternals.project -> Kernel_function.t -> bool
val fi_has_persistent_selection : SlicingInternals.fct_info -> bool
val has_persistent_selection : SlicingInternals.project -> Kernel_function.t -> bool