ROSE 0.11.145.192
Public Types | Public Member Functions | Static Public Attributes | List of all members
Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT > Struct Template Reference

Description

template<typename ParentNodeT, typename PreFuncT, typename PostFuncT>
struct Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >

Definition at line 45 of file Traits/Traversal.h.

Public Types

template<typename F , typename N >
using enable_nop = std::enable_if_t< do_nothing< F, N > >
 
template<typename F , typename N >
using enable_call = std::enable_if_t<!do_nothing< F, N > &&!F::iterable >
 
template<typename F , typename N >
using enable_iterate = std::enable_if_t<!do_nothing< F, N > &&F::iterable >
 

Public Member Functions

template<typename FieldT , typename ChildNodeT , enable_nop< FieldT, ChildNodeT > * = nullptr>
void operator() (ChildNodeT *node, PreFuncT &pre, PostFuncT &post) const
 
template<typename FieldT , typename ChildNodeT , enable_call< FieldT, ChildNodeT > * = nullptr>
void operator() (ChildNodeT *node, PreFuncT &pre, PostFuncT &post) const
 
template<typename FieldT , typename ChildNodeT , enable_iterate< FieldT, ChildNodeT > * = nullptr>
void operator() (ChildNodeT *node, PreFuncT &pre, PostFuncT &post) const
 

Static Public Attributes

template<typename ChildNodeT >
static constexpr bool is_match = std::is_same<ParentNodeT, ChildNodeT>::value
 
template<typename F , typename N >
static constexpr bool do_nothing = !is_match<N> || !F::traverse
 

Member Typedef Documentation

◆ enable_nop

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename F , typename N >
using Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::enable_nop = std::enable_if_t<do_nothing<F, N> >

Definition at line 53 of file Traits/Traversal.h.

◆ enable_call

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename F , typename N >
using Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::enable_call = std::enable_if_t<!do_nothing<F, N> && !F::iterable>

Definition at line 56 of file Traits/Traversal.h.

◆ enable_iterate

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename F , typename N >
using Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::enable_iterate = std::enable_if_t<!do_nothing<F, N> && F::iterable>

Definition at line 59 of file Traits/Traversal.h.

Member Function Documentation

◆ operator()() [1/3]

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename FieldT , typename ChildNodeT , enable_nop< FieldT, ChildNodeT > * = nullptr>
void Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::operator() ( ChildNodeT *  node,
PreFuncT &  pre,
PostFuncT &  post 
) const
inline

Definition at line 62 of file Traits/Traversal.h.

◆ operator()() [2/3]

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename FieldT , typename ChildNodeT , enable_call< FieldT, ChildNodeT > * = nullptr>
void Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::operator() ( ChildNodeT *  node,
PreFuncT &  pre,
PostFuncT &  post 
) const
inline

Definition at line 65 of file Traits/Traversal.h.

◆ operator()() [3/3]

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename FieldT , typename ChildNodeT , enable_iterate< FieldT, ChildNodeT > * = nullptr>
void Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::operator() ( ChildNodeT *  node,
PreFuncT &  pre,
PostFuncT &  post 
) const
inline

Definition at line 74 of file Traits/Traversal.h.

Member Data Documentation

◆ is_match

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename ChildNodeT >
constexpr bool Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::is_match = std::is_same<ParentNodeT, ChildNodeT>::value
staticconstexpr

Definition at line 47 of file Traits/Traversal.h.

◆ do_nothing

template<typename ParentNodeT , typename PreFuncT , typename PostFuncT >
template<typename F , typename N >
constexpr bool Rose::Traits::traversal_details::FieldTreeTraversal< ParentNodeT, PreFuncT, PostFuncT >::do_nothing = !is_match<N> || !F::traverse
staticconstexpr

Definition at line 50 of file Traits/Traversal.h.


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