let extract ~f_slice_names new_proj_name slicing_project =
SlicingParameters.feedback ~level:1
"exporting project to '%s'..." new_proj_name;
!Db.Slicing.Request.apply_all_internal slicing_project;
let module S = struct let get = f_slice_names end in
let module Visi = Visibility (S) in
let module Transform = Filter.F (Visi) in
let tmp_prj = Transform.build_cil_file new_proj_name slicing_project in
let new_prj = !Db.Sparecode.rm_unused_globals ~project:tmp_prj () in
Project.remove ~project:tmp_prj ();
let ctx = Parameters.get_selection_context () in
Project.copy ~selection:ctx new_prj;
SlicingParameters.feedback
~level:2 "done (exporting project to '%s')." new_proj_name;
new_prj