38using namespace SVFUtil;
127 edge->addDirectCallSite(cs);
148 for (
const auto&
item : *
this)
192 return "shape=Mrecord";
195 template<
class EdgeIter>
204 std::string
color =
"color=black";
208 template<
class EdgeIter>
void addDirectCallSite(const CallICFGNode *call)
Add direct callsite.
virtual const std::string toString() const
virtual const std::string toString() const
const SVFFunction * getFunction() const
Get function of this call node.
CallInstToCallGraphEdgesMap callinstToCallGraphEdgesMap
Map a call instruction to its corresponding call edges.
void addCallGraphNode(const SVFFunction *fun)
void addEdge(CallGraphEdge *edge)
Add call graph edge.
void destroy()
Clean up memory.
FunToCallGraphNodeMap funToCallGraphNodeMap
Call Graph node map.
void view()
View the graph from the debugger.
void dump(const std::string &filename)
Dump the graph.
CallGraphEdge * hasGraphEdge(CallGraphNode *src, CallGraphNode *dst, const CallICFGNode *callIcfgNode) const
Whether we have already created this call graph edge.
void addDirectCallGraphEdge(const CallICFGNode *call, const SVFFunction *callerFun, const SVFFunction *calleeFun)
Add direct call edges.
const CallGraphNode * getCallGraphNode(const std::string &name)
const SVFFunction * getCalledFunction() const
GEdgeKind getEdgeKindWithoutMask() const
NodeID getSrcID() const
get methods of the components
void addGNode(NodeID id, NodeType *node)
Add a Node.
bool hasIncomingEdge() const
Has incoming/outgoing edge set.
bool hasOutgoingEdge() const
GEdgeSetTy::iterator iterator
static void WriteGraphToFile(SVF::OutStream &O, const std::string &GraphName, const GraphType >, bool simple=false)
NodeID getId() const
Get ID.
const std::string & getName() const
bool isExtCall(const SVFFunction *fun)
std::ostream & outs()
Overwrite llvm::outs()
void ViewGraph(const GraphType &G, const std::string &name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)
llvm::IRBuilder IRBuilder
DOTGraphTraits(bool isSimple=false)
static std::string getNodeAttributes(CallGraphNode *node, CallGraph *)
static std::string getGraphName(CallGraph *)
Return name of the graph.
static std::string getNodeLabel(CallGraphNode *node, CallGraph *)
Return function name;.
static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)
static std::string getEdgeAttributes(CallGraphNode *, EdgeIter EI, CallGraph *)
NodeType::iterator ChildIteratorType