16#ifndef dealii_tria_iterator_h
17#define dealii_tria_iterator_h
34template <
int dim,
int spacedim>
37template <
int,
int,
int>
226template <
typename Accessor>
266 template <
typename OtherAccessor>
278 const typename AccessorType::AccessorData *local_data =
nullptr);
289 template <
typename OtherAccessor>
300 Accessor::space_dimension> &tria_accessor,
301 const typename Accessor::AccessorData * local_data);
307 template <
typename OtherAccessor>
314 template <
typename OtherAccessor>
381 template <
typename OtherAccessor = Accessor>
382 std::enable_if_t<std::is_convertible<OtherAccessor, Accessor>::value,
bool>
481 template <
class StreamType>
483 print(StreamType &out)
const;
513 <<
"You tried to dereference a cell iterator for which this "
514 <<
"is not possible. More information on this iterator: "
515 <<
"level=" << arg1.level() <<
", index=" << arg1.index()
528 <<
"You tried to dereference an iterator for which this "
529 <<
"is not possible. More information on this iterator: "
530 <<
"index=" << arg1.index() <<
", state="
561 template <
typename SomeAccessor>
563 template <
typename SomeAccessor>
565 template <
typename SomeAccessor>
577template <
typename Accessor>
616 const typename Accessor::AccessorData *local_data =
nullptr);
622 template <
typename OtherAccessor>
634 template <
typename OtherAccessor>
644 Accessor::space_dimension> &tria_accessor,
645 const typename Accessor::AccessorData * local_data);
652 template <
typename OtherAccessor>
659 template <
typename OtherAccessor>
679 template <
class OtherAccessor>
688 template <
class OtherAccessor>
758template <
typename Accessor>
808 const typename Accessor::AccessorData *local_data =
nullptr);
819 template <
typename OtherAccessor>
830 Accessor::space_dimension> &tria_accessor,
831 const typename Accessor::AccessorData * local_data);
844 template <
typename OtherAccessor>
871 template <
class OtherAccessor>
880 template <
class OtherAccessor>
889 template <
class OtherAccessor>
952template <
typename Accessor>
959template <
typename Accessor>
960template <
typename OtherAccessor>
967template <
typename Accessor>
968template <
typename OtherAccessor>
971 : accessor(i.accessor)
976template <
typename Accessor>
977template <
typename OtherAccessor>
980 : accessor(i.accessor)
985template <
typename Accessor>
986template <
typename OtherAccessor>
989 : accessor(i.accessor)
994template <
typename Accessor>
995inline const Accessor &
998 Assert(Accessor::structure_dimension != Accessor::dimension ||
1000 ExcDereferenceInvalidCell(accessor));
1001 Assert(Accessor::structure_dimension == Accessor::dimension ||
1003 ExcDereferenceInvalidObject(accessor));
1010template <
typename Accessor>
1014 Assert(Accessor::structure_dimension != Accessor::dimension ||
1016 ExcDereferenceInvalidCell(accessor));
1017 Assert(Accessor::structure_dimension == Accessor::dimension ||
1019 ExcDereferenceInvalidObject(accessor));
1026template <
typename Accessor>
1027inline const Accessor &
1035template <
typename Accessor>
1036inline const Accessor *
1044template <
typename Accessor>
1053template <
typename Accessor>
1057 return accessor.state();
1062template <
typename Accessor>
1068 ExcDereferenceInvalidObject(accessor));
1070 ExcDereferenceInvalidObject(other.
accessor));
1072 Assert(&accessor.get_triangulation() == &other.
accessor.get_triangulation(),
1073 ExcInvalidComparison());
1081 return ((**
this) < (*other));
1086template <
typename Accessor>
1091 return (other < *
this);
1096template <
typename Accessor>
1108template <
typename Accessor>
1120template <
typename Accessor>
1121template <
class StreamType>
1125 if (Accessor::structure_dimension == Accessor::dimension)
1126 out << accessor.level() <<
'.' << accessor.index();
1128 out << accessor.index();
1133template <
typename Accessor>
1142template <
typename Accessor>
1143template <
typename OtherAccessor>
1151template <
typename Accessor>
1152template <
typename OtherAccessor>
1160template <
typename Accessor>
1161template <
typename OtherAccessor>
1178template <
typename Accessor>
1179template <
typename OtherAccessor>
1195template <
typename Accessor>
1196template <
typename OtherAccessor>
1204template <
typename Accessor>
1205template <
typename OtherAccessor>
1230template <
typename Accessor>
1231inline std::ostream &
1245template <
typename Accessor>
1246inline std::ostream &
1260template <
typename Accessor>
1261inline std::ostream &
1274# 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)
typename TriaRawIterator< Accessor >::iterator_category iterator_category
TriaIterator< Accessor > & operator=(const TriaRawIterator< OtherAccessor > &)
typename TriaRawIterator< Accessor >::value_type value_type
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
const Accessor & operator*() 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
std::enable_if_t< std::is_convertible< OtherAccessor, Accessor >::value, bool > operator==(const TriaRawIterator< OtherAccessor > &) const
TriaRawIterator(const TriaRawIterator &)
IteratorState::IteratorStates state() 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)
std::enable_if_t< std::is_floating_point< T >::value &&std::is_floating_point< U >::value, typename ProductType< std::complex< T >, std::complex< U > >::type > operator*(const std::complex< T > &left, const std::complex< U > &right)
#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)