slang-netlist  0.9.0
Loading...
Searching...
No Matches
slang::netlist::NetlistNode Class Reference

#include <NetlistNode.hpp>

Inheritance diagram for slang::netlist::NetlistNode:
slang::netlist::Node< NetlistNode, NetlistEdge > slang::netlist::Assignment slang::netlist::Case slang::netlist::Conditional slang::netlist::Constant slang::netlist::Merge slang::netlist::Port slang::netlist::State slang::netlist::Variable

Public Member Functions

 NetlistNode (NodeKind kind)
 ~NetlistNode () override=default
template<typename T>
auto as () -> T &
template<typename T>
auto as () const -> const T &
virtual auto getHierarchicalPath () const -> std::optional< std::string_view >
virtual auto getBounds () const -> std::optional< DriverBitRange >
virtual auto getLocation () const -> std::optional< TextLocation >
Public Member Functions inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
 Node ()=default
virtual ~Node ()=default
auto operator= (const Node &) -> Node &=delete
auto begin () const -> const_iterator
auto end () const -> const_iterator
auto inBegin () -> in_iterator
auto inEnd () -> in_iterator
auto findEdgeFrom (const NetlistNode &sourceNode) -> in_iterator
 Return an iterator to the edge connecting the source node.
auto findEdgeTo (const NetlistNode &targetNode) -> iterator
 Return an iterator to the edge connecting the target node.
auto addEdge (NetlistNode &targetNode) -> NetlistEdge &
auto addNewEdge (NetlistNode &targetNode) -> NetlistEdge &
auto removeEdge (NetlistNode &targetNode) -> bool
void clearAllEdges ()
 Remove all edges to/from this node.
auto getEdgesTo (const NetlistNode &targetNode, std::vector< NetlistEdge * > &result) -> bool
auto getInEdges () const -> const InEdgeListType &
 Return the list of outgoing edges from this node.
auto getOutEdges () const -> const OutEdgeListType &
auto inDegree () const -> size_t
 Return the total number of edges incoming to this node.
auto outDegree () const -> size_t
 Return the total number of edges outgoing from this node.

Public Attributes

size_t ID
NodeKind kind

Friends

class NetlistBuilder

Additional Inherited Members

Public Types inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
using OutEdgePtrType
using OutEdgeListType
using InEdgeListType
using iterator
using const_iterator
using in_iterator
using const_in_iterator
using edge_descriptor
Protected Types inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
using OutEdgeIndex
Protected Member Functions inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
auto isEqualTo (const NetlistNode &node) const -> bool
auto getDerived () -> NetlistNode &
Protected Attributes inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
std::mutex edgeMutex
InEdgeListType inEdges
OutEdgeListType outEdges
std::unique_ptr< OutEdgeIndexoutEdgeIndex
Static Protected Attributes inherited from slang::netlist::Node< NetlistNode, NetlistEdge >
static constexpr size_t outEdgeIndexThreshold

Detailed Description

Represent a node in the netlist, corresponding to a variable or an operation.

Constructor & Destructor Documentation

◆ NetlistNode()

slang::netlist::NetlistNode::NetlistNode ( NodeKind kind)
inline

◆ ~NetlistNode()

slang::netlist::NetlistNode::~NetlistNode ( )
overridedefault

Member Function Documentation

◆ as() [1/2]

template<typename T>
auto slang::netlist::NetlistNode::as ( ) -> T &
inline

◆ as() [2/2]

template<typename T>
auto slang::netlist::NetlistNode::as ( ) const -> const T &
inline

◆ getBounds()

virtual auto slang::netlist::NetlistNode::getBounds ( ) const -> std::optional< DriverBitRange >
inlinevirtual

◆ getHierarchicalPath()

virtual auto slang::netlist::NetlistNode::getHierarchicalPath ( ) const -> std::optional< std::string_view >
inlinevirtual

◆ getLocation()

virtual auto slang::netlist::NetlistNode::getLocation ( ) const -> std::optional< TextLocation >
inlinevirtual

◆ NetlistBuilder

friend class NetlistBuilder
friend

Member Data Documentation

◆ ID

size_t slang::netlist::NetlistNode::ID

◆ kind

NodeKind slang::netlist::NetlistNode::kind

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