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

BottomUp 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< BottomUpTraverserGeneric >
 
using iterator = TraverserIterator< BottomUpTraverserGeneric, NodeType >
 

Public Member Functions

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

Private Member Functions

bool isInputActivated (const Input &input) const
 
void markAsVisited (NodeType &node)
 
void onNodeCreate (NodeType *node)
 
void onNodeDestroy (NodeType *node)
 
void onInputCreate (Input *input)
 
void onInputChange (Input *input, Output *oldOrigin, Output *newOrigin)
 
void onInputDestroy (Input *input)
 

Private Attributes

TraversalTracker< NodeTypetracker_
 
ObserverType observer_
 

Friends

class ForwardingObserver< BottomUpTraverserGeneric >
 

Detailed Description

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

BottomUp Traverser.

The bottom up traverser visits all nodes in a region, starting at the nodes that have no users besides graph results, i.e. from the bottommost nodes to the nodes at the top. Nodes created during traversal are never visited.

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

Definition at line 247 of file traverser.hpp.

Member Typedef Documentation

◆ iterator

Definition at line 253 of file traverser.hpp.

◆ NodeType

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

Definition at line 250 of file traverser.hpp.

◆ ObserverType

Definition at line 252 of file traverser.hpp.

◆ RegionType

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

Definition at line 251 of file traverser.hpp.

Constructor & Destructor Documentation

◆ ~BottomUpTraverserGeneric()

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

◆ BottomUpTraverserGeneric()

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

Definition at line 256 of file traverser.cpp.

Member Function Documentation

◆ begin()

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

Definition at line 265 of file traverser.hpp.

◆ end()

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

Definition at line 271 of file traverser.hpp.

◆ isInputActivated()

template<bool IsConst>
bool jlm::rvsdg::detail::BottomUpTraverserGeneric< IsConst >::isInputActivated ( const Input input) const
private

Definition at line 275 of file traverser.cpp.

◆ markAsVisited()

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

Definition at line 288 of file traverser.cpp.

◆ next()

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

Definition at line 302 of file traverser.cpp.

◆ onInputChange()

template<bool IsConst>
void jlm::rvsdg::detail::BottomUpTraverserGeneric< IsConst >::onInputChange ( Input input,
Output oldOrigin,
Output newOrigin 
)
private

Definition at line 362 of file traverser.cpp.

◆ onInputCreate()

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

Definition at line 344 of file traverser.cpp.

◆ onInputDestroy()

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

Definition at line 397 of file traverser.cpp.

◆ onNodeCreate()

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

Definition at line 314 of file traverser.cpp.

◆ onNodeDestroy()

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

Definition at line 322 of file traverser.cpp.

Friends And Related Function Documentation

◆ ForwardingObserver< BottomUpTraverserGeneric >

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

Definition at line 235 of file traverser.hpp.

Member Data Documentation

◆ observer_

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

Definition at line 299 of file traverser.hpp.

◆ tracker_

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

Definition at line 298 of file traverser.hpp.


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