Module Procdesc.Node
node of the control flow graph
type destruction_kind=|DestrBreakStmt|DestrContinueStmt|DestrFields|DestrReturnStmt|DestrScope|DestrTemporariesCleanup|DestrVirtualBasetype stmt_nodekind=|AssertionFailure|BetweenJoinAndExit|BinaryConditionalStmtInit|BinaryOperatorStmt of string|Call of string|CallObjCNew|CaseStmt|ClassCastException|CompoundStmt|ConditionalStmtBranch|ConstructorInit|CXXDynamicCast|CXXNewExpr|CXXStdInitializerListExpr|CXXTemporaryMarkerSet|CXXTry|CXXTypeidExpr|DeclStmt|DefineBody|Destruction of destruction_kind|ExceptionHandler|ExceptionsSink|ExprWithCleanups|FinallyBranch|GCCAsmStmt|GenericSelectionExpr|IfStmtBranch|InitializeDynamicArrayLength|InitListExp|LoopBody|MessageCall of string|MethodBody|MonitorEnter|MonitorExit|ObjCCPPThrow|ObjCIndirectCopyRestoreExpr|OutOfBound|ReturnStmt|Scope of string|Skip of string|SwitchStmt|ThisNotNull|Throw|ThrowNPE|UnaryOperatorkind of statement node
type prune_node_kind=|PruneNodeKind_ExceptionHandler|PruneNodeKind_FalseBranch|PruneNodeKind_InBound|PruneNodeKind_IsInstance|PruneNodeKind_MethodBody|PruneNodeKind_NotNull|PruneNodeKind_TrueBranchtype nodekind=|Start_node|Exit_node|Stmt_node of stmt_nodekind|Join_node|Prune_node of bool * Sil.if_kind * prune_node_kind(true/false branch, if_kind, comment)
|Skip_node of stringkind of cfg node
val equal_nodekind : nodekind -> nodekind -> boolval exn_handler_kind : nodekindkind of Stmt_node for an exception handler.
val exn_sink_kind : nodekindkind of Stmt_node for an exceptions sink.
val throw_kind : nodekindkind of Stmt_node for a throw instruction.
val append_instrs : t -> Sil.instr list -> unitAppend the instructions to the list of instructions to execute
val d_instrs : highlight:Sil.instr option -> t -> unitDump instructions for the node, highlighting the given subinstruction if present
val dummy : Procname.t -> tCreate a dummy node
val get_description : IStdlib.Pp.env -> t -> stringReturn a description of the node
val get_distance_to_exit : t -> int optionGet the distance to the exit node, if it has been computed
val get_instrs : t -> Instrs.not_reversed_tGet the instructions to be executed
val get_last_loc : t -> IBase.Location.tGet the source location of the last instruction in the node
val find_in_node_or_preds : t -> f:(t -> Sil.instr -> 'a option) -> 'a optionFind in the given node or its predecessors
val get_loc : t -> IBase.Location.tGet the source location of the node
val get_siblings : t -> t IStdlib.IStd.Sequence.tGet siblings of the current node
val get_proc_name : t -> Procname.tGet the name of the procedure the node belongs to
val get_wto_index : t -> intval set_code_block_exit : t -> code_block_exit:t -> unitSet an exit node corresponding to a start node of a code block. Using this, when there is a code block, frontend can keep the correspondence between start/exit nodes of a code block.
val get_code_block_exit : t -> t optionGet an exit node corresponding to a start node of a code block.
val is_dangling : t -> boolReturns true if the node is dangling, i.e. no successors and predecessors
val hash : t -> intHash function for nodes
val pp : Stdlib.Format.formatter -> t -> unitPretty print the node
val pp_id : Stdlib.Format.formatter -> id -> unitPretty print a node id
val pp_stmt : Stdlib.Format.formatter -> stmt_nodekind -> unitval compute_key : t -> NodeKey.t