clang  19.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. More...
 
ExplodedNodegenerateSink (const ProgramPoint &PP, ProgramStateRef State, ExplodedNode *Pred)
 Generates a sink in the ExplodedGraph. More...
 
const ExplodedNodeSetgetResults ()
 
iterator begin ()
 Iterators through the results frontier. More...
 
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. More...
 
bool hasNoSinksInFrontier ()
 
virtual void finalizeResults ()
 Allow subclasses to finalize results before result_begin() is executed. More...
 
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. More...
 
bool HasGeneratedNodes = false
 
ExplodedNodeSetFrontier
 The frontier set - a set of nodes which need to be propagated after the builder dies. More...
 

Detailed Description

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

Definition at line 434 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 444 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 454 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 465 of file CoreEngine.h.

◆ isFeasible()

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

Definition at line 476 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: