Module Paths.Path

type t

type for paths

type session = int
val add_call : bool -> t -> IR.Procname.t -> t -> t

add a call with its sub-path, the boolean indicates whether the subtrace for the procedure should be included

val add_skipped_call : t -> IR.Procname.t -> string -> IBase.Location.t option -> t

add a call to a procname that's had to be skipped, along with the reason and the location of the procname when known

val contains_position : t -> IR.PredSymb.path_pos -> bool

check wether the path contains the given position

val create_loc_trace : t -> IR.PredSymb.path_pos option -> Absint.Errlog.loc_trace

Create the location trace of the path, up to the path position if specified

val curr_node : t -> IR.Procdesc.Node.t option

return the current node of the path

val extend : IR.Procdesc.Node.t -> IR.Typ.Name.t option -> session -> t -> t

extend a path with a new node reached from the given session, with an optional string for exceptions

val add_description : t -> string -> t
val fold_all_nodes_nocalls : (t, IR.Procdesc.Node.t, 'accum) IStdlib.IStd.Container.fold

fold over each node in the path, excluding calls, once

val iter_shortest_sequence : (int -> t -> int -> IR.Typ.Name.t option -> unit) -> IR.PredSymb.path_pos option -> t -> unit

iterate over the shortest sequence belonging to the path, restricting to those containing the given position if given. Do not iterate past the last occurrence of the given position. f level path session exn_opt is passed the current nesting level and path and previous session and possible exception exn_opt

val join : t -> t -> t

join two paths

val start : IR.Procdesc.Node.t -> t

create a new path with given start node