clang 20.0.0git
Public Member Functions | List of all members
clang::ento::BranchNodeBuilder Class Reference

BranchNodeBuilder is responsible for constructing the nodes corresponding to the two branches of the if statement - true and false. More...

#include "clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h"

Inheritance diagram for clang::ento::BranchNodeBuilder:
Inheritance graph
[legend]

Public Member Functions

 BranchNodeBuilder (ExplodedNode *SrcNode, ExplodedNodeSet &DstSet, const NodeBuilderContext &C, const CFGBlock *dstT, const CFGBlock *dstF)
 
 BranchNodeBuilder (const ExplodedNodeSet &SrcSet, ExplodedNodeSet &DstSet, const NodeBuilderContext &C, const CFGBlock *dstT, const CFGBlock *dstF)
 
ExplodedNodegenerateNode (ProgramStateRef State, bool branch, ExplodedNode *Pred)
 
const CFGBlockgetTargetBlock (bool branch) const
 
void markInfeasible (bool branch)
 
bool isFeasible (bool branch)
 
- Public Member Functions inherited from clang::ento::NodeBuilder
 NodeBuilder (ExplodedNode *SrcNode, ExplodedNodeSet &DstSet, const NodeBuilderContext &Ctx, bool F=true)
 
 NodeBuilder (const ExplodedNodeSet &SrcSet, ExplodedNodeSet &DstSet, const NodeBuilderContext &Ctx, bool F=true)
 
virtual ~NodeBuilder ()=default
 
ExplodedNodegenerateNode (const ProgramPoint &PP, ProgramStateRef State, ExplodedNode *Pred)
 Generates a node in the ExplodedGraph.
 
ExplodedNodegenerateSink (const ProgramPoint &PP, ProgramStateRef State, ExplodedNode *Pred)
 Generates a sink in the ExplodedGraph.
 
const ExplodedNodeSetgetResults ()
 
iterator begin ()
 Iterators through the results frontier.
 
iterator end ()
 
const NodeBuilderContextgetContext ()
 
bool hasGeneratedNodes ()
 
void takeNodes (const ExplodedNodeSet &S)
 
void takeNodes (ExplodedNode *N)
 
void addNodes (const ExplodedNodeSet &S)
 
void addNodes (ExplodedNode *N)
 

Additional Inherited Members

- Public Types inherited from clang::ento::NodeBuilder
using iterator = ExplodedNodeSet::iterator
 
- Protected Member Functions inherited from clang::ento::NodeBuilder
virtual bool checkResults ()
 Checks if the results are ready.
 
bool hasNoSinksInFrontier ()
 
virtual void finalizeResults ()
 Allow subclasses to finalize results before result_begin() is executed.
 
ExplodedNodegenerateNodeImpl (const ProgramPoint &PP, ProgramStateRef State, ExplodedNode *Pred, bool MarkAsSink=false)
 
- Protected Attributes inherited from clang::ento::NodeBuilder
const NodeBuilderContextC
 
bool Finalized
 Specifies if the builder results have been finalized.
 
bool HasGeneratedNodes = false
 
ExplodedNodeSetFrontier
 The frontier set - a set of nodes which need to be propagated after the builder dies.
 

Detailed Description

BranchNodeBuilder is responsible for constructing the nodes corresponding to the two branches of the if statement - true and false.

Definition at line 428 of file CoreEngine.h.

Constructor & Destructor Documentation

◆ BranchNodeBuilder() [1/2]

clang::ento::BranchNodeBuilder::BranchNodeBuilder ( ExplodedNode SrcNode,
ExplodedNodeSet DstSet,
const NodeBuilderContext C,
const CFGBlock dstT,
const CFGBlock dstF 
)
inline

Definition at line 438 of file CoreEngine.h.

References clang::ento::NodeBuilder::takeNodes().

◆ BranchNodeBuilder() [2/2]

clang::ento::BranchNodeBuilder::BranchNodeBuilder ( const ExplodedNodeSet SrcSet,
ExplodedNodeSet DstSet,
const NodeBuilderContext C,
const CFGBlock dstT,
const CFGBlock dstF 
)
inline

Definition at line 448 of file CoreEngine.h.

References clang::ento::NodeBuilder::takeNodes().

Member Function Documentation

◆ generateNode()

ExplodedNode * BranchNodeBuilder::generateNode ( ProgramStateRef  State,
bool  branch,
ExplodedNode Pred 
)

◆ getTargetBlock()

const CFGBlock * clang::ento::BranchNodeBuilder::getTargetBlock ( bool  branch) const
inline

Definition at line 459 of file CoreEngine.h.

◆ isFeasible()

bool clang::ento::BranchNodeBuilder::isFeasible ( bool  branch)
inline

Definition at line 470 of file CoreEngine.h.

Referenced by generateNode(), and clang::ento::ExprEngine::processBranch().

◆ markInfeasible()

void clang::ento::BranchNodeBuilder::markInfeasible ( bool  branch)
inline

The documentation for this class was generated from the following files: