Static Value-Flow Analysis
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
SVF::DefaultDOTGraphTraits Struct Reference

#include <DOTGraphTraits.h>

Inheritance diagram for SVF::DefaultDOTGraphTraits:
SVF::DOTGraphTraits< SVFIR * > SVF::DOTGraphTraits< GraphType > SVF::DOTGraphTraits< SVF::PAG * > SVF::DOTGraphTraits< Ty > SVF::DOTGraphTraits< CFLGraph * > SVF::DOTGraphTraits< CHGraph * > SVF::DOTGraphTraits< IRGraph * > SVF::DOTGraphTraits< PTACallGraph * > SVF::DOTGraphTraits< TCT * >

Public Member Functions

 DefaultDOTGraphTraits (bool simple=false)
 
template<typename GraphType >
std::string getNodeLabel (const void *, const GraphType &)
 

Static Public Member Functions

template<typename GraphType >
static std::string getGraphName (const GraphType &)
 
template<typename GraphType >
static std::string getGraphProperties (const GraphType &)
 
static bool renderGraphFromBottomUp ()
 
template<typename GraphType >
static bool isNodeHidden (const void *, const GraphType &)
 
template<typename GraphType >
static std::string getNodeIdentifierLabel (const void *, const GraphType &)
 
template<typename GraphType >
static std::string getNodeDescription (const void *, const GraphType &)
 
template<typename GraphType >
static std::string getNodeAttributes (const void *, const GraphType &)
 
template<typename EdgeIter , typename GraphType >
static std::string getEdgeAttributes (const void *, EdgeIter, const GraphType &)
 
template<typename EdgeIter >
static std::string getEdgeSourceLabel (const void *, EdgeIter)
 
template<typename EdgeIter >
static bool edgeTargetsEdgeSource (const void *, EdgeIter)
 
template<typename EdgeIter >
static EdgeIter getEdgeTarget (const void *, EdgeIter I)
 
static bool hasEdgeDestLabels ()
 
static unsigned numEdgeDestLabels (const void *)
 
static std::string getEdgeDestLabel (const void *, unsigned)
 
template<typename GraphType , typename GraphWriter >
static void addCustomGraphFeatures (const GraphType &, GraphWriter &)
 

Protected Member Functions

bool isSimple ()
 

Private Attributes

bool IsSimple
 

Detailed Description

DefaultDOTGraphTraits - This class provides the default implementations of all of the DOTGraphTraits methods. If a specialization does not need to override all methods here it should inherit so that it can get the default implementations.

Definition at line 29 of file DOTGraphTraits.h.

Constructor & Destructor Documentation

◆ DefaultDOTGraphTraits()

SVF::DefaultDOTGraphTraits::DefaultDOTGraphTraits ( bool  simple = false)
inlineexplicit

Definition at line 41 of file DOTGraphTraits.h.

41 : IsSimple (simple) {}

Member Function Documentation

◆ addCustomGraphFeatures()

template<typename GraphType , typename GraphWriter >
static void SVF::DefaultDOTGraphTraits::addCustomGraphFeatures ( const GraphType &  ,
GraphWriter  
)
inlinestatic

addCustomGraphFeatures - If a graph is made up of more than just straight-forward nodes and edges, this is the place to put all of the custom stuff necessary. The GraphWriter object, instantiated with your GraphType is passed in as an argument. You may call arbitrary methods on it to add things to the output graph.

Definition at line 172 of file DOTGraphTraits.h.

172 {}

◆ edgeTargetsEdgeSource()

template<typename EdgeIter >
static bool SVF::DefaultDOTGraphTraits::edgeTargetsEdgeSource ( const void *  ,
EdgeIter   
)
inlinestatic

edgeTargetsEdgeSource - This method returns true if this outgoing edge should actually target another edge source, not a node. If this method is implemented, getEdgeTarget should be implemented.

Definition at line 130 of file DOTGraphTraits.h.

131  {
132  return false;
133  }

◆ getEdgeAttributes()

template<typename EdgeIter , typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getEdgeAttributes ( const void *  ,
EdgeIter  ,
const GraphType &   
)
inlinestatic

If you want to override the dot attributes printed for a particular edge, override this method.

Definition at line 112 of file DOTGraphTraits.h.

114  {
115  return "";
116  }

◆ getEdgeDestLabel()

static std::string SVF::DefaultDOTGraphTraits::getEdgeDestLabel ( const void *  ,
unsigned   
)
inlinestatic

getEdgeDestLabel - If hasEdgeDestLabels, this function returns the incoming edge label with the given index in the given node.

Definition at line 160 of file DOTGraphTraits.h.

161  {
162  return "";
163  }

◆ getEdgeSourceLabel()

template<typename EdgeIter >
static std::string SVF::DefaultDOTGraphTraits::getEdgeSourceLabel ( const void *  ,
EdgeIter   
)
inlinestatic

getEdgeSourceLabel - If you want to label the edge source itself, implement this method.

Definition at line 121 of file DOTGraphTraits.h.

122  {
123  return "";
124  }

◆ getEdgeTarget()

template<typename EdgeIter >
static EdgeIter SVF::DefaultDOTGraphTraits::getEdgeTarget ( const void *  ,
EdgeIter  I 
)
inlinestatic

getEdgeTarget - If edgeTargetsEdgeSource returns true, this method is called to determine which outgoing edge of Node is the target of this edge.

Definition at line 139 of file DOTGraphTraits.h.

140  {
141  return I;
142  }

◆ getGraphName()

template<typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getGraphName ( const GraphType &  )
inlinestatic

getGraphName - Return the label for the graph as a whole. Printed at the top of the graph.

Definition at line 47 of file DOTGraphTraits.h.

48  {
49  return "";
50  }

◆ getGraphProperties()

template<typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getGraphProperties ( const GraphType &  )
inlinestatic

getGraphProperties - Return any custom properties that should be included in the top level graph structure for dot.

Definition at line 56 of file DOTGraphTraits.h.

57  {
58  return "";
59  }

◆ getNodeAttributes()

template<typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getNodeAttributes ( const void *  ,
const GraphType &   
)
inlinestatic

If you want to specify custom node attributes, this is the place to do so

Definition at line 103 of file DOTGraphTraits.h.

105  {
106  return "";
107  }

◆ getNodeDescription()

template<typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getNodeDescription ( const void *  ,
const GraphType &   
)
inlinestatic

Definition at line 95 of file DOTGraphTraits.h.

96  {
97  return "";
98  }

◆ getNodeIdentifierLabel()

template<typename GraphType >
static std::string SVF::DefaultDOTGraphTraits::getNodeIdentifierLabel ( const void *  ,
const GraphType &   
)
inlinestatic

Definition at line 89 of file DOTGraphTraits.h.

90  {
91  return "";
92  }

◆ getNodeLabel()

template<typename GraphType >
std::string SVF::DefaultDOTGraphTraits::getNodeLabel ( const void *  ,
const GraphType &   
)
inline

getNodeLabel - Given a node and a pointer to the top level graph, return the label to print in the node.

Definition at line 80 of file DOTGraphTraits.h.

81  {
82  return "";
83  }

◆ hasEdgeDestLabels()

static bool SVF::DefaultDOTGraphTraits::hasEdgeDestLabels ( )
inlinestatic

hasEdgeDestLabels - If this function returns true, the graph is able to provide labels for edge destinations.

Definition at line 146 of file DOTGraphTraits.h.

147  {
148  return false;
149  }

◆ isNodeHidden()

template<typename GraphType >
static bool SVF::DefaultDOTGraphTraits::isNodeHidden ( const void *  ,
const GraphType &   
)
inlinestatic

isNodeHidden - If the function returns true, the given node is not displayed in the graph.

Definition at line 72 of file DOTGraphTraits.h.

73  {
74  return false;
75  }

◆ isSimple()

bool SVF::DefaultDOTGraphTraits::isSimple ( )
inlineprotected

Definition at line 35 of file DOTGraphTraits.h.

36  {
37  return IsSimple;
38  }

◆ numEdgeDestLabels()

static unsigned SVF::DefaultDOTGraphTraits::numEdgeDestLabels ( const void *  )
inlinestatic

numEdgeDestLabels - If hasEdgeDestLabels, this function returns the number of incoming edge labels the given node has.

Definition at line 153 of file DOTGraphTraits.h.

154  {
155  return 0;
156  }

◆ renderGraphFromBottomUp()

static bool SVF::DefaultDOTGraphTraits::renderGraphFromBottomUp ( )
inlinestatic

renderGraphFromBottomUp - If this function returns true, the graph is emitted bottom-up instead of top-down. This requires graphviz 2.0 to work though.

Definition at line 64 of file DOTGraphTraits.h.

65  {
66  return false;
67  }

Member Data Documentation

◆ IsSimple

bool SVF::DefaultDOTGraphTraits::IsSimple
private

Definition at line 32 of file DOTGraphTraits.h.


The documentation for this struct was generated from the following file: