12#ifndef MCRL2_CORE_TRAVERSER_H
13#define MCRL2_CORE_TRAVERSER_H
30template <
typename Derived>
33 template <
typename Expression>
37 template <
typename Expression>
44 static_cast<Derived&
>(*this).enter(x);
45 static_cast<Derived&
>(*this).leave(x);
49 template <
typename Container>
52 for (
typename Container::const_iterator i = container.begin(); i != container.end(); ++i)
54 static_cast<Derived*
>(
this)->
apply(*i);
61 static_cast<Derived&
>(*this).enter(x);
62 static_cast<Derived&
>(*this).leave(x);
67template <
template <
class>
class Traverser>
70 typedef Traverser<apply_traverser<Traverser> >
super;
77template <
template <
class>
class Traverser>
Term containing a string.
aterm representations of identifier strings.
apply_traverser< Traverser > make_apply_traverser()
A class that takes a linear process specification and checks all tau-summands of that LPS for conflue...
Traverser< apply_traverser< Traverser > > super
expression traverser that visits all sub expressions
void apply(const core::identifier_string &x)
void apply(Container const &container, typename atermpp::enable_if_container< Container >::type *=nullptr)
void enter(Expression const &)
void apply(const T &x, typename atermpp::disable_if_container< T >::type *=nullptr)
void leave(Expression const &)