16#ifndef dealii_tria_iterator_h
17# define dealii_tria_iterator_h
37template <
int dim,
int spacedim>
39template <
int,
int,
int>
228template <
typename Accessor>
268 template <
typename OtherAccessor>
280 const typename AccessorType::AccessorData *local_data =
nullptr);
291 template <
typename OtherAccessor>
302 Accessor::space_dimension> &tria_accessor,
303 const typename Accessor::AccessorData * local_data);
309 template <
typename OtherAccessor>
316 template <
typename OtherAccessor>
379 template <
typename OtherAccessor = Accessor>
380 typename std::enable_if<std::is_convertible<OtherAccessor, Accessor>::value,
480 template <
class StreamType>
482 print(StreamType &out)
const;
512 <<
"You tried to dereference a cell iterator for which this "
513 <<
"is not possible. More information on this iterator: "
514 <<
"level=" << arg1.level() <<
", index=" << arg1.index()
527 <<
"You tried to dereference an iterator for which this "
528 <<
"is not possible. More information on this iterator: "
529 <<
"index=" << arg1.index() <<
", state="
560 template <
typename SomeAccessor>
562 template <
typename SomeAccessor>
564 template <
typename SomeAccessor>
576template <
typename Accessor>
615 const typename Accessor::AccessorData *local_data =
nullptr);
621 template <
typename OtherAccessor>
633 template <
typename OtherAccessor>
643 Accessor::space_dimension> &tria_accessor,
644 const typename Accessor::AccessorData * local_data);
651 template <
typename OtherAccessor>
658 template <
typename OtherAccessor>
678 template <
class OtherAccessor>
687 template <
class OtherAccessor>
757template <
typename Accessor>
807 const typename Accessor::AccessorData *local_data =
nullptr);
818 template <
typename OtherAccessor>
829 Accessor::space_dimension> &tria_accessor,
830 const typename Accessor::AccessorData * local_data);
843 template <
typename OtherAccessor>
870 template <
class OtherAccessor>
879 template <
class OtherAccessor>
888 template <
class OtherAccessor>
951template <
typename Accessor>
958template <
typename Accessor>
959template <
typename OtherAccessor>
966template <
typename Accessor>
967template <
typename OtherAccessor>
970 : accessor(i.accessor)
975template <
typename Accessor>
976template <
typename OtherAccessor>
979 : accessor(i.accessor)
984template <
typename Accessor>
985template <
typename OtherAccessor>
988 : accessor(i.accessor)
993template <
typename Accessor>
996 Assert(Accessor::structure_dimension != Accessor::dimension ||
998 ExcDereferenceInvalidCell(accessor));
999 Assert(Accessor::structure_dimension == Accessor::dimension ||
1008template <
typename Accessor>
1011 Assert(Accessor::structure_dimension != Accessor::dimension ||
1013 ExcDereferenceInvalidCell(accessor));
1014 Assert(Accessor::structure_dimension == Accessor::dimension ||
1023template <
typename Accessor>
1024inline const Accessor &
1032template <
typename Accessor>
1040template <
typename Accessor>
1048template <
typename Accessor>
1052 return accessor.state();
1057template <
typename Accessor>
1067 Assert(&accessor.get_triangulation() == &other.
accessor.get_triangulation(),
1068 ExcInvalidComparison());
1076 return ((**
this) < (*other));
1081template <
typename Accessor>
1086 return (other < *
this);
1091template <
typename Accessor>
1103template <
typename Accessor>
1115template <
typename Accessor>
1116template <
class StreamType>
1120 if (Accessor::structure_dimension == Accessor::dimension)
1121 out << accessor.level() <<
"." << accessor.index();
1123 out << accessor.index();
1128template <
typename Accessor>
1137template <
typename Accessor>
1138template <
typename OtherAccessor>
1146template <
typename Accessor>
1147template <
typename OtherAccessor>
1155template <
typename Accessor>
1156template <
typename OtherAccessor>
1173template <
typename Accessor>
1174template <
typename OtherAccessor>
1190template <
typename Accessor>
1191template <
typename OtherAccessor>
1199template <
typename Accessor>
1200template <
typename OtherAccessor>
1225template <
typename Accessor>
1226inline std::ostream &
1240template <
typename Accessor>
1241inline std::ostream &
1255template <
typename Accessor>
1256inline std::ostream &
1269# include "tria_iterator.templates.h"
OutputOperator< VectorType > & operator<<(OutputOperator< VectorType > &out, unsigned int step)
Point< dim, typename ProductType< Number, typename EnableIfScalar< OtherNumber >::type >::type > operator*(const OtherNumber) const
TriaActiveIterator< Accessor > & operator=(const TriaIterator< OtherAccessor > &)
TriaActiveIterator(const TriaActiveIterator< Accessor > &)
TriaActiveIterator< Accessor > & operator=(const TriaRawIterator< Accessor > &)
TriaActiveIterator< Accessor > operator--(int)
TriaActiveIterator(const TriaRawIterator< Accessor > &)
TriaActiveIterator< Accessor > & operator=(const TriaActiveIterator< Accessor > &)
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 > &)
TriaActiveIterator< Accessor > operator++(int)
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)
std::enable_if< std::is_convertible< OtherAccessor, Accessor >::value, bool >::type operator==(const TriaRawIterator< OtherAccessor > &) const
bool operator<(const TriaRawIterator &) const
TriaRawIterator(const TriaRawIterator &)
IteratorState::IteratorStates state() const
void print(StreamType &out) const
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_NAMESPACE_CLOSE
static ::ExceptionBase & ExcAssignmentOfUnusedObject()
#define DeclException0(Exception0)
static ::ExceptionBase & ExcAssignmentOfInactiveObject()
#define Assert(cond, exc)
static ::ExceptionBase & ExcAdvanceInvalidObject()
friend class TriaRawIterator
static ::ExceptionBase & ExcDereferenceInvalidObject(AccessorType arg1)
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.