let print_crit fmt crit =
match crit with
| T.CrFct fct_crit ->
let fct = fct_crit.T.cf_fct in
let name = SlicingMacros.f_name fct in
Format.fprintf fmt "[%s = " name;
let _ = match fct_crit.T.cf_info with
| T.CcUserMark info -> print_f_crit fmt info
| T.CcMissingInputs (call, _input_marks, more_inputs)
-> Format.fprintf fmt "missing_inputs for call %d (%s)"
call.Cil_types.sid
(if more_inputs then "more_inputs" else "marks only")
| T.CcMissingOutputs (call, _output_marks, more_outputs)
-> Format.fprintf fmt "missing_outputs for call %d (%s)"
call.Cil_types.sid
(if more_outputs then "more_outputs" else "marks only")
| T.CcChooseCall call
-> Format.fprintf fmt "choose_call for call %d" call.Cil_types.sid
| T.CcChangeCall (call,f)
-> let fname = match f with
| T.CallSlice ff -> SlicingMacros.ff_name ff
| T.CallSrc (Some fi) -> ("(src:"^( SlicingMacros.fi_name fi)^")")
| T.CallSrc None -> "(src)"
in Format.fprintf fmt "change_call for call %d -> %s"
call.Cil_types.sid fname
| T.CcPropagate nl ->
Format.fprintf fmt "propagate %a"
print_sel_marks_list nl
| T.CcExamineCalls _ -> Format.fprintf fmt "examine_calls"
in Format.fprintf fmt "]"
| T.CrAppli (T.CaCall fi) ->
let name = SlicingMacros.fi_name fi in
Format.fprintf fmt "[Appli : calls to %s]" name
| _ ->
Extlib.not_yet_implemented "Printing this slicing criterion "