Added type "CFG::Edge" to encapsulate the notion of directed-edges

within source-level CFGs.

llvm-svn: 42098
This commit is contained in:
Ted Kremenek 2007-09-18 18:01:15 +00:00
parent 8cca8469de
commit 1d77d76837
1 changed files with 27 additions and 0 deletions

View File

@ -212,6 +212,33 @@ public:
CFGBlock* getIndirectGotoBlock() { return IndirectGotoBlock; }
const CFGBlock* getIndirectGotoBlock() const { return IndirectGotoBlock; }
// Edges
class Edge {
const CFGBlock* Src;
const CFGBlock* Dst;
public:
Edge(const CFGBlock* src, const CFGBlock* dst) : Src(src), Dst(dst) {}
Edge(const Edge& RHS) : Src(RHS.Src), Dst(RHS.Dst) {}
Edge& operator=(const Edge& RHS) {
Src = RHS.Src;
Dst = RHS.Dst;
return *this;
}
const CFGBlock* getSrc() const { return Src; }
const CFGBlock* getDst() const { return Dst; }
bool operator==(const Edge& RHS) const {
return Src == RHS.Src && Dst == RHS.Dst;
}
bool operator!=(const Edge& RHS) const {
return !(*this == RHS);
}
};
// Utility
CFGBlock* createBlock();