module type T_RemoveInfo =Signature of a module that decides which element of a function have to be visible or notsig
..end
exception EraseAssigns
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.from -> bool
EraseAssigns
to indicate that the corresponding assigns clause
should be erased entirely (i.e. assigns everything. If it were to
just return false to all elements, this would result in assigns \nothingval fun_deps_visible : t_fct -> Cil_types.identified_term -> 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.