87 typedef std::map <GrammarBase::Symbol, CFLEdge::CFLEdgeSetTy>
CFLEdgeDataTy;
106 assert(inEdge->
getDstID() == this->getId());
108 bool added2 =
inCFLEdges[s].insert(inEdge).second;
110 return added1 && added2;
120 assert(outEdge->
getSrcID() == this->getId());
122 bool added2 =
outCFLEdges[s].insert(outEdge).second;
124 return added1 && added2;
GEdgeKind getEdgeKindWithMask() const
CFLEdge(CFLNode *s, CFLNode *d, GEdgeFlag k=0)
~CFLEdge() override=default
GenericNode< CFLNode, CFLEdge >::GEdgeSetTy CFLEdgeSetTy
GEdgeKind getEdgeKind() const
GEdgeKind getEdgeAttri() const
GenericNode< CFLNode, CFLEdge >::GEdgeSetTy CFLEdgeSet
virtual void addCFLNode(NodeID id, CFLNode *node)
Kind getStartKind() const
~CFLGraph() override=default
virtual const CFLEdge * addCFLEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)
void dump(const std::string &filename)
virtual const CFLEdge * hasEdge(CFLNode *src, CFLNode *dst, CFLEdge::GEdgeFlag label)
const CFLEdgeSet & getCFLEdges() const
const CFLEdge::CFLEdgeSetTy & getOutEdgeWithTy(GrammarBase::Symbol s)
bool addIngoingEdge(CFLEdge *inEdge)
bool addOutEdgeWithKind(CFLEdge *outEdge, GrammarBase::Symbol s)
bool addInEdgeWithKind(CFLEdge *inEdge, GrammarBase::Symbol s)
static bool classof(const CFLNode *)
Methods for support type inquiry through isa, cast, and dyn_cast:
const CFLEdge::CFLEdgeSetTy & getInEdgeWithTy(GrammarBase::Symbol s)
CFLEdgeDataTy outCFLEdges
bool removeCFLInEdge(CFLEdge *inEdge)
bool addOutgoingEdge(CFLEdge *OutEdge)
bool removeCFLOutEdge(CFLEdge *outEdge)
~CFLNode() override=default
static bool classof(const GenericICFGNodeTy *node)
std::map< GrammarBase::Symbol, CFLEdge::CFLEdgeSetTy > CFLEdgeDataTy
Different Kind(label) associated edges set.
static bool classof(const SVFBaseNode *node)
CFLNode(NodeID i=0, GNodeK k=CFLNodeKd)
GEdgeKind getEdgeKindWithoutMask() const
static constexpr u64_t EdgeKindMask
NodeID getSrcID() const
get methods of the components
static constexpr unsigned char EdgeKindMaskBits
We use the lower 8 bits to denote edge kind.
u32_t removeOutgoingEdge(EdgeType *edge)
bool addIncomingEdge(EdgeType *inEdge)
Add incoming and outgoing edges.
u32_t removeIncomingEdge(EdgeType *edge)
bool addOutgoingEdge(EdgeType *outEdge)
GNodeK getNodeKind() const
Get node kind.
GenericEdge< CFLNode > GenericCFLEdgeTy
GenericNode< CFLNode, CFLEdge > GenericCFLNodeTy
GenericGraph< CFLNode, CFLEdge > GenericCFLGraphTy
Edge-labeled graph for CFL Reachability analysis.