LLVM 22.0.0git
llvm::DGNode< NodeType, EdgeType > Class Template Reference

Represent a node in the directed graph. More...

#include "llvm/ADT/DirectedGraph.h"

Inheritance diagram for llvm::DGNode< NodeType, EdgeType >:
[legend]

Public Types

using EdgeListTy = SetVector<EdgeType *>
using iterator = typename EdgeListTy::iterator
using const_iterator = typename EdgeListTy::const_iterator

Public Member Functions

 DGNode (EdgeType &E)
 Create a node with a single outgoing edge E.
 DGNode ()=default
const_iterator begin () const
const_iterator end () const
iterator begin ()
iterator end ()
const EdgeType & front () const
EdgeType & front ()
const EdgeType & back () const
EdgeType & back ()
bool findEdgesTo (const NodeType &N, SmallVectorImpl< EdgeType * > &EL) const
 Collect in EL, all the edges from this node to N.
bool addEdge (EdgeType &E)
 Add the given edge E to this node, if it doesn't exist already.
void removeEdge (EdgeType &E)
 Remove the given edge E from this node, if it exists.
bool hasEdgeTo (const NodeType &N) const
 Test whether there is an edge that goes from this node to N.
const EdgeListTygetEdges () const
 Retrieve the outgoing edges for the node.
EdgeListTygetEdges ()
void clear ()
 Clear the outgoing edges.

Protected Member Functions

bool isEqualTo (const NodeType &N) const
NodeType & getDerived ()
const NodeType & getDerived () const
const_iterator findEdgeTo (const NodeType &N) const
 Find an edge to N.

Protected Attributes

EdgeListTy Edges

Friends

bool operator== (const NodeType &M, const NodeType &N)
 Static polymorphism: delegate implementation (via isEqualTo) to the derived class.
bool operator!= (const NodeType &M, const NodeType &N)

Detailed Description

template<class NodeType, class EdgeType>
class llvm::DGNode< NodeType, EdgeType >

Represent a node in the directed graph.

The node has a (possibly empty) list of outgoing edges.

Definition at line 73 of file DirectedGraph.h.

Member Typedef Documentation

◆ const_iterator

template<class NodeType, class EdgeType>
using llvm::DGNode< NodeType, EdgeType >::const_iterator = typename EdgeListTy::const_iterator

Definition at line 77 of file DirectedGraph.h.

◆ EdgeListTy

template<class NodeType, class EdgeType>
using llvm::DGNode< NodeType, EdgeType >::EdgeListTy = SetVector<EdgeType *>

Definition at line 75 of file DirectedGraph.h.

◆ iterator

template<class NodeType, class EdgeType>
using llvm::DGNode< NodeType, EdgeType >::iterator = typename EdgeListTy::iterator

Definition at line 76 of file DirectedGraph.h.

Constructor & Destructor Documentation

◆ DGNode() [1/2]

template<class NodeType, class EdgeType>
llvm::DGNode< NodeType, EdgeType >::DGNode ( EdgeType & E)
inlineexplicit

Create a node with a single outgoing edge E.

Definition at line 80 of file DirectedGraph.h.

◆ DGNode() [2/2]

template<class NodeType, class EdgeType>
llvm::DGNode< NodeType, EdgeType >::DGNode ( )
default

Member Function Documentation

◆ addEdge()

template<class NodeType, class EdgeType>
bool llvm::DGNode< NodeType, EdgeType >::addEdge ( EdgeType & E)
inline

Add the given edge E to this node, if it doesn't exist already.

Returns true if the edge is added and false otherwise.

Definition at line 115 of file DirectedGraph.h.

◆ back() [1/2]

template<class NodeType, class EdgeType>
EdgeType & llvm::DGNode< NodeType, EdgeType >::back ( )
inline

Definition at line 99 of file DirectedGraph.h.

◆ back() [2/2]

template<class NodeType, class EdgeType>
const EdgeType & llvm::DGNode< NodeType, EdgeType >::back ( ) const
inline

Definition at line 98 of file DirectedGraph.h.

◆ begin() [1/2]

template<class NodeType, class EdgeType>
iterator llvm::DGNode< NodeType, EdgeType >::begin ( )
inline

Definition at line 94 of file DirectedGraph.h.

◆ begin() [2/2]

template<class NodeType, class EdgeType>
const_iterator llvm::DGNode< NodeType, EdgeType >::begin ( ) const
inline

Definition at line 92 of file DirectedGraph.h.

◆ clear()

template<class NodeType, class EdgeType>
void llvm::DGNode< NodeType, EdgeType >::clear ( )
inline

Clear the outgoing edges.

Definition at line 133 of file DirectedGraph.h.

◆ end() [1/2]

template<class NodeType, class EdgeType>
iterator llvm::DGNode< NodeType, EdgeType >::end ( )
inline

Definition at line 95 of file DirectedGraph.h.

◆ end() [2/2]

template<class NodeType, class EdgeType>
const_iterator llvm::DGNode< NodeType, EdgeType >::end ( ) const
inline

Definition at line 93 of file DirectedGraph.h.

◆ findEdgesTo()

template<class NodeType, class EdgeType>
bool llvm::DGNode< NodeType, EdgeType >::findEdgesTo ( const NodeType & N,
SmallVectorImpl< EdgeType * > & EL ) const
inline

Collect in EL, all the edges from this node to N.

Return true if at least one edge was found, and false otherwise. Note that this implementation allows more than one edge to connect a given pair of nodes.

Definition at line 105 of file DirectedGraph.h.

◆ findEdgeTo()

template<class NodeType, class EdgeType>
const_iterator llvm::DGNode< NodeType, EdgeType >::findEdgeTo ( const NodeType & N) const
inlineprotected

Find an edge to N.

If more than one edge exists, this will return the first one in the list of edges.

Definition at line 147 of file DirectedGraph.h.

Referenced by llvm::DGNode< DDGNode, DDGEdge >::hasEdgeTo().

◆ front() [1/2]

template<class NodeType, class EdgeType>
EdgeType & llvm::DGNode< NodeType, EdgeType >::front ( )
inline

Definition at line 97 of file DirectedGraph.h.

◆ front() [2/2]

template<class NodeType, class EdgeType>
const EdgeType & llvm::DGNode< NodeType, EdgeType >::front ( ) const
inline

Definition at line 96 of file DirectedGraph.h.

◆ getDerived() [1/2]

template<class NodeType, class EdgeType>
NodeType & llvm::DGNode< NodeType, EdgeType >::getDerived ( )
inlineprotected

Definition at line 140 of file DirectedGraph.h.

◆ getDerived() [2/2]

template<class NodeType, class EdgeType>
const NodeType & llvm::DGNode< NodeType, EdgeType >::getDerived ( ) const
inlineprotected

Definition at line 141 of file DirectedGraph.h.

◆ getEdges() [1/2]

template<class NodeType, class EdgeType>
EdgeListTy & llvm::DGNode< NodeType, EdgeType >::getEdges ( )
inline

Definition at line 127 of file DirectedGraph.h.

◆ getEdges() [2/2]

template<class NodeType, class EdgeType>
const EdgeListTy & llvm::DGNode< NodeType, EdgeType >::getEdges ( ) const
inline

Retrieve the outgoing edges for the node.

Definition at line 126 of file DirectedGraph.h.

◆ hasEdgeTo()

template<class NodeType, class EdgeType>
bool llvm::DGNode< NodeType, EdgeType >::hasEdgeTo ( const NodeType & N) const
inline

Test whether there is an edge that goes from this node to N.

Definition at line 121 of file DirectedGraph.h.

◆ isEqualTo()

template<class NodeType, class EdgeType>
bool llvm::DGNode< NodeType, EdgeType >::isEqualTo ( const NodeType & N) const
inlineprotected

Definition at line 137 of file DirectedGraph.h.

◆ removeEdge()

template<class NodeType, class EdgeType>
void llvm::DGNode< NodeType, EdgeType >::removeEdge ( EdgeType & E)
inline

Remove the given edge E from this node, if it exists.

Definition at line 118 of file DirectedGraph.h.

◆ operator!=

template<class NodeType, class EdgeType>
bool operator!= ( const NodeType & M,
const NodeType & N )
friend

Definition at line 88 of file DirectedGraph.h.

◆ operator==

template<class NodeType, class EdgeType>
bool operator== ( const NodeType & M,
const NodeType & N )
friend

Static polymorphism: delegate implementation (via isEqualTo) to the derived class.

Definition at line 85 of file DirectedGraph.h.

Member Data Documentation

◆ Edges

template<class NodeType, class EdgeType>
EdgeListTy llvm::DGNode< NodeType, EdgeType >::Edges
protected

Definition at line 153 of file DirectedGraph.h.


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