Jlm
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst > Class Template Referencefinal

TopDown Traverser. More...

#include <traverser.hpp>

Public Types

using NodeType = std::conditional_t< IsConst, const Node, Node >
 
using RegionType = std::conditional_t< IsConst, const Region, Region >
 
using ObserverType = ForwardingObserver< TopDownTraverserGeneric >
 
using iterator = TraverserIterator< TopDownTraverserGeneric, NodeType >
 

Public Member Functions

 ~TopDownTraverserGeneric () noexcept
 
 TopDownTraverserGeneric (RegionType *region)
 
NodeTypenext ()
 
iterator begin ()
 
iterator end ()
 

Private Member Functions

bool isOutputActivated (const Output &output) const
 
void markAsVisited (NodeType &node)
 
void onNodeCreate (NodeType *node)
 
void onNodeDestroy (NodeType *node)
 
void onInputCreate (Input *input)
 
void onInputChange (Input *in, Output *old_origin, Output *new_origin)
 
void onInputDestroy (Input *input)
 

Private Attributes

TraversalTracker< NodeTypetracker_
 
ObserverType observer_
 
Node::Id nodeIdCutoff_
 

Friends

class ForwardingObserver< TopDownTraverserGeneric >
 

Detailed Description

template<bool IsConst>
class jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >

TopDown Traverser.

The top down traverser visits all nodes in a region, starting at the nodes that have no inputs besides graph arguments, i.e. from the topmost nodes to the nodes at the bottom. Nodes created during traversal are not visited.

An alternative to traversing all nodes using next() is the utilization of begin() and end().

Definition at line 181 of file traverser.hpp.

Member Typedef Documentation

◆ iterator

Definition at line 187 of file traverser.hpp.

◆ NodeType

template<bool IsConst>
using jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::NodeType = std::conditional_t<IsConst, const Node, Node>

Definition at line 184 of file traverser.hpp.

◆ ObserverType

Definition at line 186 of file traverser.hpp.

◆ RegionType

template<bool IsConst>
using jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::RegionType = std::conditional_t<IsConst, const Region, Region>

Definition at line 185 of file traverser.hpp.

Constructor & Destructor Documentation

◆ ~TopDownTraverserGeneric()

template<bool IsConst>
jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::~TopDownTraverserGeneric ( )
defaultnoexcept

◆ TopDownTraverserGeneric()

template<bool IsConst>
jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::TopDownTraverserGeneric ( RegionType region)
explicit

Definition at line 78 of file traverser.cpp.

Member Function Documentation

◆ begin()

template<bool IsConst>
iterator jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::begin ( )
inline

Definition at line 199 of file traverser.hpp.

◆ end()

template<bool IsConst>
iterator jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::end ( )
inline

Definition at line 205 of file traverser.hpp.

◆ isOutputActivated()

template<bool IsConst>
bool jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::isOutputActivated ( const Output output) const
private

Definition at line 101 of file traverser.cpp.

◆ markAsVisited()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::markAsVisited ( NodeType node)
private

Definition at line 114 of file traverser.cpp.

◆ next()

template<bool IsConst>
TopDownTraverserGeneric< IsConst >::NodeType * jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::next

Definition at line 131 of file traverser.cpp.

◆ onInputChange()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::onInputChange ( Input in,
Output old_origin,
Output new_origin 
)
private

Definition at line 202 of file traverser.cpp.

◆ onInputCreate()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::onInputCreate ( Input input)
private

Definition at line 184 of file traverser.cpp.

◆ onInputDestroy()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::onInputDestroy ( Input input)
private

Definition at line 233 of file traverser.cpp.

◆ onNodeCreate()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::onNodeCreate ( NodeType node)
private

Definition at line 151 of file traverser.cpp.

◆ onNodeDestroy()

template<bool IsConst>
void jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::onNodeDestroy ( NodeType node)
private

Definition at line 176 of file traverser.cpp.

Friends And Related Function Documentation

◆ ForwardingObserver< TopDownTraverserGeneric >

template<bool IsConst>
friend class ForwardingObserver< TopDownTraverserGeneric >
friend

Definition at line 169 of file traverser.hpp.

Member Data Documentation

◆ nodeIdCutoff_

template<bool IsConst>
Node::Id jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::nodeIdCutoff_
private

Definition at line 235 of file traverser.hpp.

◆ observer_

template<bool IsConst>
ObserverType jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::observer_
private

Definition at line 233 of file traverser.hpp.

◆ tracker_

template<bool IsConst>
TraversalTracker<NodeType> jlm::rvsdg::detail::TopDownTraverserGeneric< IsConst >::tracker_
private

Definition at line 232 of file traverser.hpp.


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