15#ifndef dealii_tria_iterator_h
16#define dealii_tria_iterator_h
33template <
int dim,
int spacedim>
36template <
int,
int,
int>
225template <
typename Accessor>
265 template <
typename OtherAccessor>
277 const typename AccessorType::AccessorData *local_data =
nullptr);
288 template <
typename OtherAccessor>
299 Accessor::space_dimension> &tria_accessor,
300 const typename Accessor::AccessorData *local_data);
306 template <
typename OtherAccessor>
313 template <
typename OtherAccessor>
376 template <
typename OtherAccessor = Accessor>
377 std::enable_if_t<std::is_convertible_v<OtherAccessor, Accessor>,
bool>
476 template <
typename StreamType>
478 print(StreamType &out)
const;
508 <<
"You tried to dereference a cell iterator for which this "
509 <<
"is not possible. More information on this iterator: "
510 <<
"level=" << arg1.level() <<
", index=" << arg1.index()
523 <<
"You tried to dereference an iterator for which this "
524 <<
"is not possible. More information on this iterator: "
525 <<
"index=" << arg1.index() <<
", state="
556 template <
typename SomeAccessor>
558 template <
typename SomeAccessor>
560 template <
typename SomeAccessor>
572template <
typename Accessor>
611 const typename Accessor::AccessorData *local_data =
nullptr);
617 template <
typename OtherAccessor>
629 template <
typename OtherAccessor>
639 Accessor::space_dimension> &tria_accessor,
640 const typename Accessor::AccessorData *local_data);
647 template <
typename OtherAccessor>
654 template <
typename OtherAccessor>
674 template <
class OtherAccessor>
683 template <
class OtherAccessor>
753template <
typename Accessor>
803 const typename Accessor::AccessorData *local_data =
nullptr);
814 template <
typename OtherAccessor>
825 Accessor::space_dimension> &tria_accessor,
826 const typename Accessor::AccessorData *local_data);
839 template <
typename OtherAccessor>
866 template <
class OtherAccessor>
875 template <
class OtherAccessor>
884 template <
class OtherAccessor>
947template <
typename Accessor>
954template <
typename Accessor>
955template <
typename OtherAccessor>
962template <
typename Accessor>
963template <
typename OtherAccessor>
966 : accessor(i.accessor)
971template <
typename Accessor>
972template <
typename OtherAccessor>
975 : accessor(i.accessor)
980template <
typename Accessor>
981template <
typename OtherAccessor>
984 : accessor(i.accessor)
989template <
typename Accessor>
993 Assert(Accessor::structure_dimension != Accessor::dimension ||
995 ExcDereferenceInvalidCell(accessor));
996 Assert(Accessor::structure_dimension == Accessor::dimension ||
998 ExcDereferenceInvalidObject(accessor));
1005template <
typename Accessor>
1006inline const Accessor &
1014template <
typename Accessor>
1015inline const Accessor *
1023template <
typename Accessor>
1032template <
typename Accessor>
1036 return accessor.state();
1041template <
typename Accessor>
1047 ExcDereferenceInvalidObject(accessor));
1049 ExcDereferenceInvalidObject(other.
accessor));
1051 Assert(&accessor.get_triangulation() == &other.
accessor.get_triangulation(),
1052 ExcInvalidComparison());
1060 return ((**
this) < (*other));
1065template <
typename Accessor>
1070 return (other < *
this);
1075template <
typename Accessor>
1087template <
typename Accessor>
1099template <
typename Accessor>
1100template <
typename StreamType>
1104 if (Accessor::structure_dimension == Accessor::dimension)
1105 out << accessor.level() <<
'.' << accessor.index();
1107 out << accessor.index();
1112template <
typename Accessor>
1121template <
typename Accessor>
1122template <
typename OtherAccessor>
1130template <
typename Accessor>
1131template <
typename OtherAccessor>
1139template <
typename Accessor>
1140template <
typename OtherAccessor>
1157template <
typename Accessor>
1158template <
typename OtherAccessor>
1174template <
typename Accessor>
1175template <
typename OtherAccessor>
1183template <
typename Accessor>
1184template <
typename OtherAccessor>
1209template <
typename Accessor>
1210inline std::ostream &
1224template <
typename Accessor>
1225inline std::ostream &
1239template <
typename Accessor>
1240inline std::ostream &
1253# include "tria_iterator.templates.h"
TriaActiveIterator< Accessor > & operator=(const TriaIterator< OtherAccessor > &)
TriaActiveIterator(const TriaActiveIterator< Accessor > &)
typename TriaIterator< Accessor >::reference reference
TriaActiveIterator< Accessor > & operator=(const TriaRawIterator< Accessor > &)
TriaActiveIterator< Accessor > operator--(int)
TriaActiveIterator(const TriaRawIterator< Accessor > &)
TriaActiveIterator< Accessor > & operator=(const TriaActiveIterator< Accessor > &)
typename TriaIterator< Accessor >::difference_type difference_type
typename TriaIterator< Accessor >::pointer pointer
TriaActiveIterator< Accessor > & operator=(const TriaActiveIterator< OtherAccessor > &)
TriaActiveIterator< Accessor > & operator--()
TriaActiveIterator(const TriaAccessorBase< Accessor::structure_dimension, Accessor::dimension, Accessor::space_dimension > &tria_accessor, const typename Accessor::AccessorData *local_data)
TriaActiveIterator< Accessor > & operator=(const TriaIterator< Accessor > &)
TriaActiveIterator(const Triangulation< Accessor::dimension, Accessor::space_dimension > *parent, const int level, const int index, const typename Accessor::AccessorData *local_data=nullptr)
TriaActiveIterator< Accessor > & operator++()
TriaActiveIterator< Accessor > & operator=(const TriaRawIterator< OtherAccessor > &)
typename TriaIterator< Accessor >::iterator_category iterator_category
TriaActiveIterator< Accessor > operator++(int)
typename TriaIterator< Accessor >::value_type value_type
TriaActiveIterator(const TriaIterator< Accessor > &)
typename TriaRawIterator< Accessor >::pointer pointer
TriaIterator(const TriaIterator< Accessor > &)
TriaIterator< Accessor > & operator++()
TriaIterator< Accessor > operator--(int)
TriaIterator< Accessor > & operator=(const TriaRawIterator< OtherAccessor > &)
typename TriaRawIterator< Accessor >::value_type value_type
typename TriaRawIterator< Accessor >::iterator_category iterator_category
TriaIterator< Accessor > operator++(int)
TriaIterator< Accessor > & operator=(const TriaIterator< Accessor > &)
typename TriaRawIterator< Accessor >::difference_type difference_type
TriaIterator< Accessor > & operator=(const TriaRawIterator< Accessor > &)
TriaIterator(const TriaAccessorBase< Accessor::structure_dimension, Accessor::dimension, Accessor::space_dimension > &tria_accessor, const typename Accessor::AccessorData *local_data)
typename TriaRawIterator< Accessor >::reference reference
TriaIterator< Accessor > & operator--()
TriaIterator(const Triangulation< Accessor::dimension, Accessor::space_dimension > *parent, const int level, const int index, const typename Accessor::AccessorData *local_data=nullptr)
TriaIterator< Accessor > & operator=(const TriaIterator< OtherAccessor > &)
TriaIterator(const TriaRawIterator< Accessor > &)
const Accessor * operator->() const
TriaRawIterator & operator=(const TriaRawIterator &)
bool operator>(const TriaRawIterator &) const
std::size_t memory_consumption() const
TriaRawIterator(const Triangulation< Accessor::dimension, Accessor::space_dimension > *parent, const int level, const int index, const typename AccessorType::AccessorData *local_data=nullptr)
TriaRawIterator(const TriaAccessorBase< Accessor::structure_dimension, Accessor::dimension, Accessor::space_dimension > &tria_accessor, const typename Accessor::AccessorData *local_data)
bool operator<(const TriaRawIterator &) const
TriaRawIterator(const TriaRawIterator &)
IteratorState::IteratorStates state() const
Accessor operator*() const
std::enable_if_t< std::is_convertible_v< OtherAccessor, Accessor >, bool > operator==(const TriaRawIterator< OtherAccessor > &) const
void print(StreamType &out) const
friend class TriaRawIterator
bool operator!=(const TriaRawIterator &) const
TriaRawIterator operator++(int)
std::bidirectional_iterator_tag iterator_category
TriaRawIterator & operator++()
const Accessor & access_any() const
TriaRawIterator & operator--()
TriaRawIterator operator--(int)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_CXX20_REQUIRES(condition)
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcAssignmentOfUnusedObject()
#define DeclException0(Exception0)
static ::ExceptionBase & ExcAssignmentOfInactiveObject()
#define Assert(cond, exc)
static ::ExceptionBase & ExcAdvanceInvalidObject()
static ::ExceptionBase & ExcInvalidComparison()
#define DeclException1(Exception1, type1, outsequence)
static ::ExceptionBase & ExcDereferenceInvalidObject(Accessor arg1)
static ::ExceptionBase & ExcDereferenceInvalidCell(Accessor arg1)
@ past_the_end
Iterator reached end of container.
@ valid
Iterator points to a valid object.
@ invalid
Iterator is invalid, probably due to an error.
std::ostream & operator<<(std::ostream &out, const TriaRawIterator< Accessor > &i)