12#ifndef MCRL2_ATERMPP_DETAIL_ATERM_APPL_ITERATOR_H
13#define MCRL2_ATERMPP_DETAIL_ATERM_APPL_ITERATOR_H
21template <
typename Term>
26 template <
class Derived,
class Base >
28 typename std::enable_if<
29 std::is_base_of<aterm, Base>::value &&
30 std::is_base_of<aterm, Derived>::value
224 template <
class Derived,
class Base >
226 typename std::enable_if<
227 std::is_base_of<aterm, Base>::value &&
228 std::is_base_of<aterm, Derived>::value
231 static_assert(
sizeof(Derived) ==
sizeof(
_aterm*),
232 "term_appl_iterator only works on aterm classes to which no extra fields are added");
233 static_assert(
sizeof(Base) ==
sizeof(
_aterm*),
234 "term_appl_iterator only works on aterm classes to which no extra fields are added");
This is the class to which an aterm points.
term_appl_iterator operator++(int)
Postfix increment.
bool operator==(const term_appl_iterator &other) const
Equality of iterators.
bool operator<(const term_appl_iterator &other) const
Comparison of iterators.
term_appl_iterator(const term_appl_iterator &other)
The copy constructor.
bool operator>=(const term_appl_iterator &other) const
Comparison of iterators.
term_appl_iterator operator-(ptrdiff_t n) const
Decrease by a constant value.
term_appl_iterator & operator=(const term_appl_iterator &other)
The assignment operator.
term_appl_iterator & operator--()
Prefix decrement.
ptrdiff_t operator-(const term_appl_iterator &other) const
The negative distance from this to the other iterator.
std::random_access_iterator_tag iterator_category
ptrdiff_t difference_type
bool operator<=(const term_appl_iterator &other) const
Comparison of iterators.
term_appl_iterator & operator++()
Prefix increment.
term_appl_iterator & operator-=(difference_type n)
Decrease the iterator with n steps.
const Term & operator[](difference_type n) const
The dereference operator.
term_appl_iterator operator+(ptrdiff_t n) const
Increase by a constant value.
bool operator!=(const term_appl_iterator &other) const
Inequality of iterators.
term_appl_iterator operator--(int)
Post decrement an iterator.
const Term * operator->() const
Dereference the current iterator.
term_appl_iterator & operator+=(difference_type n)
Increase the iterator with n steps.
bool operator>(const term_appl_iterator &other) const
Comparison of iterators.
const Term & operator*() const
The dereference operator.
term_appl_iterator(const Term *t)
Constructor.
ptrdiff_t distance_to(const term_appl_iterator &other) const
Provide the distance to the other iterator.
term_appl_iterator< Derived > aterm_appl_iterator_cast(term_appl_iterator< Base > a, typename std::enable_if< std::is_base_of< aterm, Base >::value &&std::is_base_of< aterm, Derived >::value >::type *=nullptr)
This function can be used to translate an term_appl_iterator of one sort into another.
The main namespace for the aterm++ library.