let mk_slice selection =
let n = string_of_int (1 + List.length (!Db.Slicing.Project.get_all ())) in
let project_name = (SlicingParameters.ProjectName.get ()) ^ n in
let project = !Db.Slicing.Project.mk_project project_name in
!Db.Slicing.Request.add_persistent_selection project selection ;
!Db.Slicing.Request.apply_all_internal project;
if SlicingParameters.Mode.Callers.get () then
!Db.Slicing.Slice.remove_uncalled project;
let sliced_project_name =
let postfix = SlicingParameters.ExportedProjectPostfix.get ()
in if postfix = "" then project_name else (project_name ^ " " ^ postfix)
in
let new_project =
!Db.Slicing.Project.extract sliced_project_name project
in
!Db.Slicing.Project.set_project (Some project);
new_project