Module SlicingProject

module SlicingProject: sig .. end
Handle the project global object.


Building project


val mk_project : string -> T.project
API function : see Db.Slicing.Project.mk_project.
val get_name : T.project -> string

Managing the slices


val add_proj_actions : T.project -> T.criterion list -> unit
val create_slice : T.project -> Kernel_function.t -> SlicingInternals.fct_slice
Add a new slice for the function. It can be the case that it create actions if the function has some persistent selection, that make function calls to choose.
Raises SlicingTypes.NoPdg when the function has no PDG.
val remove_ff : SlicingInternals.project -> T.fct_slice -> unit
Delete ff_to_remove if it is not called.
Raises T.CantRemoveCalledFf if it is.
val call_src_and_remove_all_ff : SlicingInternals.project ->
T.fct_info -> SlicingInternals.criterion list
val remove_uncalled_slices : SlicingInternals.project -> unit
val merge_slices : T.project ->
T.fct_slice ->
T.fct_slice -> bool -> SlicingInternals.fct_slice
Build a new slice ff which contains the marks of ff1 and ff2 and generate everything that is needed to choose the calls in ff. If replace also generate requests call ff instead of ff1 and ff2.
val split_slice : T.project ->
T.fct_slice -> T.fct_slice list

Getting information


val get_slices : SlicingInternals.project ->
Kernel_function.t -> SlicingInternals.fct_slice list
val get_slice_callers : T.fct_slice -> T.fct_slice list

Adding requests


val add_filter : T.project -> T.criterion -> unit
val add_fct_src_filter : T.project ->
SlicingInternals.fct_info -> T.fct_user_crit -> unit
Add an action to the action list to filter the function fct_id with the given criterion. The filter gives a name to the result of the filter which is a new slice if the function to filter is the source one, or the given slice otherwise.
val add_fct_ff_filter : T.project ->
SlicingInternals.fct_slice -> T.fct_user_crit -> unit

Print


val print_project : Format.formatter -> SlicingInternals.project -> unit
val print_proj_worklist : Format.formatter -> T.project -> unit
val print_project_and_worklist : Format.formatter -> T.project -> unit
val pretty_slice : Format.formatter -> SlicingInternals.fct_slice -> unit

Managing (and applying) requests


val apply_fct_crit : SlicingInternals.fct_slice ->
SlicingInternals.fct_base_criterion -> SlicingInternals.criterion list
apply the given criterion and returns the list of new criterions to add to the project worklist.
val apply_appli_crit : SlicingInternals.project ->
T.appli_criterion -> SlicingInternals.criterion list
val add_persistant_marks : SlicingInternals.project ->
SlicingInternals.fct_info ->
SlicingInternals.fct_base_criterion ->
bool ->
bool -> SlicingInternals.criterion list -> SlicingInternals.criterion list
Add persistent the marks node_marks in fi and also add the marks to existing slices if any. If the propagation is ON, some actions are generated to propagate the persistent marks to the callers, and other actions are generated to make all the calls to fi visible. If there is no slice for fi we create a new one if it is the original request. It will be automatically created with the persistent marks. If it is a propagation, no need to create a new slice because it will be created when the call will be selected anyway.
val apply_fct_action : SlicingInternals.project ->
T.fct_criterion -> SlicingInternals.criterion list
val apply_action : SlicingInternals.project ->
T.criterion -> SlicingInternals.criterion list
apply filter and return a list of generated filters
val get_next_filter : T.project -> T.criterion
val apply_next_action : T.project -> unit
val is_request_empty : T.project -> bool
val apply_all_actions : T.project -> unit