LLVM 20.0.0git
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
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 >:
Inheritance graph
[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
 
 DGNode (const DGNode< NodeType, EdgeType > &N)
 
 DGNode (DGNode< NodeType, EdgeType > &&N)
 
DGNode< NodeType, EdgeType > & operator= (const DGNode< NodeType, EdgeType > &N)
 
DGNode< NodeType, EdgeType > & operator= (const DGNode< NodeType, EdgeType > &&N)
 
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/4]

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.

References E, llvm::DGNode< NodeType, EdgeType >::Edges, and llvm::SetVector< T, Vector, Set, N >::insert().

◆ DGNode() [2/4]

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

◆ DGNode() [3/4]

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

Definition at line 83 of file DirectedGraph.h.

◆ DGNode() [4/4]

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

Definition at line 84 of file DirectedGraph.h.

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 127 of file DirectedGraph.h.

References E, llvm::DGNode< NodeType, EdgeType >::Edges, and llvm::SetVector< T, Vector, Set, N >::insert().

◆ back() [1/2]

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

◆ back() [2/2]

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

◆ begin() [1/2]

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

◆ begin() [2/2]

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

◆ clear()

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

Clear the outgoing edges.

Definition at line 145 of file DirectedGraph.h.

References llvm::SetVector< T, Vector, Set, N >::clear(), and llvm::DGNode< NodeType, EdgeType >::Edges.

◆ end() [1/2]

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

◆ end() [2/2]

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

◆ 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 117 of file DirectedGraph.h.

References assert(), E, llvm::DGNode< NodeType, EdgeType >::Edges, llvm::SmallVectorBase< Size_T >::empty(), N, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ 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 159 of file DirectedGraph.h.

References E, llvm::DGNode< NodeType, EdgeType >::Edges, llvm::find_if(), and N.

Referenced by llvm::DGNode< NodeType, EdgeType >::hasEdgeTo().

◆ front() [1/2]

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

◆ front() [2/2]

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

◆ getDerived() [1/2]

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

Definition at line 152 of file DirectedGraph.h.

◆ getDerived() [2/2]

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

Definition at line 153 of file DirectedGraph.h.

◆ getEdges() [1/2]

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

Definition at line 139 of file DirectedGraph.h.

References llvm::DGNode< NodeType, EdgeType >::Edges.

◆ 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 138 of file DirectedGraph.h.

References llvm::DGNode< NodeType, EdgeType >::Edges.

◆ 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 133 of file DirectedGraph.h.

References llvm::DGNode< NodeType, EdgeType >::Edges, llvm::SetVector< T, Vector, Set, N >::end(), llvm::DGNode< NodeType, EdgeType >::findEdgeTo(), and N.

◆ isEqualTo()

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

Definition at line 149 of file DirectedGraph.h.

References N.

◆ operator=() [1/2]

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

Definition at line 90 of file DirectedGraph.h.

References llvm::DGNode< NodeType, EdgeType >::Edges, and N.

◆ operator=() [2/2]

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

Definition at line 86 of file DirectedGraph.h.

References llvm::DGNode< NodeType, EdgeType >::Edges, and N.

Referenced by llvm::DDGNode::operator=().

◆ 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 130 of file DirectedGraph.h.

References E, llvm::DGNode< NodeType, EdgeType >::Edges, and llvm::SetVector< T, Vector, Set, N >::remove().

Friends And Related Function Documentation

◆ operator!=

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

Definition at line 100 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 97 of file DirectedGraph.h.

Member Data Documentation

◆ Edges

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

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