module type T_RemoveInfo =Signature of a module that decides which element of a function have to be visible or notsig
..end
type
t_proj
type
t_fct
val fct_info : t_proj ->
Db_types.kernel_function -> t_fct list
val fct_name : Cil_types.varinfo -> t_fct -> string
varinfo.vname
.
It is the responsibility of the user to given different names to different
function.val param_visible : t_fct -> int -> bool
val body_visible : t_fct -> bool
val loc_var_visible : t_fct -> Cil_types.varinfo -> bool
val inst_visible : t_fct -> Cil_types.stmt -> bool
val label_visible : t_fct -> Cil_types.stmt -> Cil_types.label -> bool
val annotation_visible : t_fct ->
Cil_types.stmt -> before:bool -> Cil_types.code_annotation -> bool
val fun_precond_visible : t_fct -> Cil_types.predicate -> bool
val fun_postcond_visible : t_fct -> Cil_types.predicate -> bool
val fun_variant_visible : t_fct -> Cil_types.term -> bool
val fun_assign_visible : t_fct ->
Cil_types.identified_term Cil_types.assigns -> bool
val called_info : t_proj * t_fct ->
Cil_types.stmt ->
(Db_types.kernel_function * t_fct) option
called_info
will be called only if the call statement is visible.
If it returns None
, the source call will be visible,
else it will use the returned t_fct
to know if the return value and the
arguments are visible.
The input t_fct
parameter is the one of the caller function.
val res_call_visible : t_fct -> Cil_types.stmt -> bool
val result_visible : Db_types.kernel_function -> t_fct -> bool
void
.
Notice that if this function returns true
the function will have the same
return type than the original function. So, if it was already void
, it
makes no difference if this function returns true or false.
inst_visible fct_info (Kernel_function.find_return kf)
.res_call_visible
must return false
if result_visible
returns false on the called function.