15#ifndef dealii_tria_iterator_h
16#define dealii_tria_iterator_h
34template <
int dim,
int spacedim>
37template <
int,
int,
int>
219template <
typename Accessor>
259 template <
typename OtherAccessor>
271 const typename AccessorType::AccessorData *local_data =
nullptr);
282 template <
typename OtherAccessor>
293 Accessor::space_dimension> &tria_accessor,
294 const typename Accessor::AccessorData *local_data);
300 template <
typename OtherAccessor>
307 template <
typename OtherAccessor>
370 template <
typename OtherAccessor = Accessor>
371 std::enable_if_t<std::is_convertible_v<OtherAccessor, Accessor>,
bool>
470 template <
typename StreamType>
472 print(StreamType &out)
const;
502 <<
"You tried to dereference a cell iterator for which this "
503 <<
"is not possible. More information on this iterator: "
504 <<
"level=" << arg1.level() <<
", index=" << arg1.index()
517 <<
"You tried to dereference an iterator for which this "
518 <<
"is not possible. More information on this iterator: "
519 <<
"index=" << arg1.index() <<
", state="
550 template <
typename SomeAccessor>
552 template <
typename SomeAccessor>
554 template <
typename SomeAccessor>
566template <
typename Accessor>
605 const typename Accessor::AccessorData *local_data =
nullptr);
611 template <
typename OtherAccessor>
623 template <
typename OtherAccessor>
633 Accessor::space_dimension> &tria_accessor,
634 const typename Accessor::AccessorData *local_data);
641 template <
typename OtherAccessor>
648 template <
typename OtherAccessor>
668 template <
class OtherAccessor>
677 template <
class OtherAccessor>
747template <
typename Accessor>
797 const typename Accessor::AccessorData *local_data =
nullptr);
808 template <
typename OtherAccessor>
819 Accessor::space_dimension> &tria_accessor,
820 const typename Accessor::AccessorData *local_data);
833 template <
typename OtherAccessor>
860 template <
class OtherAccessor>
869 template <
class OtherAccessor>
878 template <
class OtherAccessor>
941template <
typename Accessor>
948template <
typename Accessor>
949template <
typename OtherAccessor>
956template <
typename Accessor>
957template <
typename OtherAccessor>
960 : accessor(i.accessor)
965template <
typename Accessor>
966template <
typename OtherAccessor>
969 : accessor(i.accessor)
974template <
typename Accessor>
975template <
typename OtherAccessor>
978 : accessor(i.accessor)
983template <
typename Accessor>
987 Assert(Accessor::structure_dimension != Accessor::dimension ||
989 ExcDereferenceInvalidCell(accessor));
990 Assert(Accessor::structure_dimension == Accessor::dimension ||
992 ExcDereferenceInvalidObject(accessor));
999template <
typename Accessor>
1000inline const Accessor &
1008template <
typename Accessor>
1009inline const Accessor *
1017template <
typename Accessor>
1026template <
typename Accessor>
1030 return accessor.state();
1035template <
typename Accessor>
1041 ExcDereferenceInvalidObject(accessor));
1043 ExcDereferenceInvalidObject(other.
accessor));
1045 Assert(&accessor.get_triangulation() == &other.
accessor.get_triangulation(),
1046 ExcInvalidComparison());
1054 return ((**
this) < (*other));
1059template <
typename Accessor>
1064 return (other < *
this);
1069template <
typename Accessor>
1081template <
typename Accessor>
1093template <
typename Accessor>
1094template <
typename StreamType>
1098 if (Accessor::structure_dimension == Accessor::dimension)
1099 out << accessor.level() <<
'.' << accessor.index();
1101 out << accessor.index();
1106template <
typename Accessor>
1115template <
typename Accessor>
1116template <
typename OtherAccessor>
1124template <
typename Accessor>
1125template <
typename OtherAccessor>
1133template <
typename Accessor>
1134template <
typename OtherAccessor>
1152template <
typename Accessor>
1153template <
typename OtherAccessor>
1170template <
typename Accessor>
1171template <
typename OtherAccessor>
1179template <
typename Accessor>
1180template <
typename OtherAccessor>
1206template <
typename Accessor>
1207inline std::ostream &
1207inline std::ostream & {
…}
1221template <
typename Accessor>
1222inline std::ostream &
1222inline std::ostream & {
…}
1236template <
typename Accessor>
1237inline std::ostream &
1237inline std::ostream & {
…}
1250template <
typename Accessor>
1252 : accessor(nullptr, -2, -2, nullptr)
1256template <
typename Accessor>
1259 : accessor(i.accessor)
1264template <
typename Accessor>
1269 const typename Accessor::AccessorData *local_data)
1274template <
typename Accessor>
1277 Accessor::dimension,
1278 Accessor::space_dimension> &tria_accessor,
1279 const typename Accessor::AccessorData *local_data)
1280 : accessor(nullptr, -2, -2, local_data)
1282 accessor.copy_from(tria_accessor);
1286template <
typename Accessor>
1297template <
typename Accessor>
1298template <
typename OtherAccessor>
1299inline std::enable_if_t<std::is_convertible_v<OtherAccessor, Accessor>,
bool>
1307template <
typename Accessor>
1312 return !(*
this == other);
1316template <
typename Accessor>
1327template <
typename Accessor>
1341template <
typename Accessor>
1347template <
typename Accessor>
1353template <
typename Accessor>
1366 Assert(this->accessor.used(), ExcAssignmentOfUnusedObject());
1371template <
typename Accessor>
1376 const typename Accessor::AccessorData *local_data)
1388 Assert(this->accessor.used(), ExcAssignmentOfUnusedObject());
1393template <
typename Accessor>
1396 Accessor::dimension,
1397 Accessor::space_dimension> &tria_accessor,
1398 const typename Accessor::AccessorData *local_data)
1410 Assert(this->accessor.used(), ExcAssignmentOfUnusedObject());
1415template <
typename Accessor>
1419 this->accessor.copy_from(i.
accessor);
1424template <
typename Accessor>
1425template <
typename OtherAccessor>
1429 this->accessor.copy_from(i.
accessor);
1434template <
typename Accessor>
1438 this->accessor.copy_from(i.
accessor);
1448 Assert(this->accessor.used(), ExcAssignmentOfUnusedObject());
1454template <
typename Accessor>
1455template <
typename OtherAccessor>
1459 this->accessor.copy_from(i.
accessor);
1469 Assert(this->accessor.used(), ExcAssignmentOfUnusedObject());
1475template <
typename Accessor>
1481 if (this->accessor.used() ==
true)
1487template <
typename Accessor>
1498template <
typename Accessor>
1504 if (this->accessor.used() ==
true)
1510template <
typename Accessor>
1524template <
typename Accessor>
1530template <
typename Accessor>
1537template <
typename Accessor>
1551 Assert(this->accessor.has_children() ==
false,
1552 ExcAssignmentOfInactiveObject());
1557template <
typename Accessor>
1571 Assert(this->accessor.has_children() ==
false,
1572 ExcAssignmentOfInactiveObject());
1577template <
typename Accessor>
1582 const typename Accessor::AccessorData *local_data)
1594 Assert(this->accessor.has_children() ==
false,
1595 ExcAssignmentOfInactiveObject());
1600template <
typename Accessor>
1603 Accessor::dimension,
1604 Accessor::space_dimension> &tria_accessor,
1605 const typename Accessor::AccessorData *local_data)
1617 Assert(this->accessor.has_children() ==
false,
1618 ExcAssignmentOfInactiveObject());
1623template <
typename Accessor>
1627 this->accessor.copy_from(i.
accessor);
1632template <
typename Accessor>
1633template <
class OtherAccessor>
1638 this->accessor.copy_from(i.
accessor);
1643template <
typename Accessor>
1647 this->accessor.copy_from(i.
accessor);
1657 Assert(this->accessor.used() && this->accessor.has_children() ==
false,
1658 ExcAssignmentOfInactiveObject());
1664template <
typename Accessor>
1665template <
class OtherAccessor>
1669 this->accessor.copy_from(i.
accessor);
1679 Assert(this->accessor.used() && this->accessor.has_children() ==
false,
1680 ExcAssignmentOfInactiveObject());
1686template <
typename Accessor>
1687template <
class OtherAccessor>
1691 this->accessor.copy_from(i.
accessor);
1701 Assert(this->accessor.has_children() ==
false,
1702 ExcAssignmentOfInactiveObject());
1708template <
typename Accessor>
1712 this->accessor.copy_from(i.
accessor);
1722 Assert(this->accessor.has_children() ==
false,
1723 ExcAssignmentOfInactiveObject());
1729template <
typename Accessor>
1735 if (this->accessor.has_children() ==
false)
1741template <
typename Accessor>
1752template <
typename Accessor>
1758 if (this->accessor.has_children() ==
false)
1764template <
typename Accessor>
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
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
constexpr bool running_in_debug_mode()
#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.
SynchronousIterators< Iterators > & operator--(SynchronousIterators< Iterators > &a)
SynchronousIterators< Iterators > & operator++(SynchronousIterators< Iterators > &a)
std::ostream & operator<<(std::ostream &out, const TriaRawIterator< Accessor > &i)