diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:17:04 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:17:04 +0000 |
| commit | b915e9e0fc85ba6f398b3fab0db6a81a8913af94 (patch) | |
| tree | 98b8f811c7aff2547cab8642daf372d6c59502fb /include/llvm/Support/GraphWriter.h | |
| parent | 6421cca32f69ac849537a3cff78c352195e99f1b (diff) | |
Notes
Diffstat (limited to 'include/llvm/Support/GraphWriter.h')
| -rw-r--r-- | include/llvm/Support/GraphWriter.h | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h index 86985c569464..7555d5b31a8d 100644 --- a/include/llvm/Support/GraphWriter.h +++ b/include/llvm/Support/GraphWriter.h @@ -59,14 +59,19 @@ class GraphWriter { typedef DOTGraphTraits<GraphType> DOTTraits; typedef GraphTraits<GraphType> GTraits; - typedef typename GTraits::NodeType NodeType; + typedef typename GTraits::NodeRef NodeRef; typedef typename GTraits::nodes_iterator node_iterator; typedef typename GTraits::ChildIteratorType child_iterator; DOTTraits DTraits; + static_assert(std::is_pointer<NodeRef>::value, + "FIXME: Currently GraphWriter requires the NodeRef type to be " + "a pointer.\nThe pointer usage should be moved to " + "DOTGraphTraits, and removed from GraphWriter itself."); + // Writes the edge labels of the node to O and returns true if there are any // edge labels not equal to the empty string "". - bool getEdgeSourceLabels(raw_ostream &O, NodeType *Node) { + bool getEdgeSourceLabels(raw_ostream &O, NodeRef Node) { child_iterator EI = GTraits::child_begin(Node); child_iterator EE = GTraits::child_end(Node); bool hasEdgeSourceLabels = false; @@ -144,27 +149,11 @@ public: writeNode(*I); } - bool isNodeHidden(NodeType &Node) { - return isNodeHidden(&Node); - } - - bool isNodeHidden(NodeType *const *Node) { - return isNodeHidden(*Node); - } - - bool isNodeHidden(NodeType *Node) { + bool isNodeHidden(NodeRef Node) { return DTraits.isNodeHidden(Node); } - void writeNode(NodeType& Node) { - writeNode(&Node); - } - - void writeNode(NodeType *const *Node) { - writeNode(*Node); - } - - void writeNode(NodeType *Node) { + void writeNode(NodeRef Node) { std::string NodeAttributes = DTraits.getNodeAttributes(Node, G); O << "\tNode" << static_cast<const void*>(Node) << " [shape=record,"; @@ -237,8 +226,8 @@ public: writeEdge(Node, 64, EI); } - void writeEdge(NodeType *Node, unsigned edgeidx, child_iterator EI) { - if (NodeType *TargetNode = *EI) { + void writeEdge(NodeRef Node, unsigned edgeidx, child_iterator EI) { + if (NodeRef TargetNode = *EI) { int DestPort = -1; if (DTraits.edgeTargetsEdgeSource(Node, EI)) { child_iterator TargetIt = DTraits.getEdgeTarget(Node, EI); |
