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>
383 template <
typename OtherAccessor = Accessor>
384 typename std::enable_if<std::is_convertible<OtherAccessor, Accessor>::value,
484 template <
class StreamType>
486 print(StreamType &out)
const;
516 <<
"You tried to dereference a cell iterator for which this "
517 <<
"is not possible. More information on this iterator: "
518 <<
"level=" << arg1.level() <<
", index=" << arg1.index()
531 <<
"You tried to dereference an iterator for which this "
532 <<
"is not possible. More information on this iterator: "
533 <<
"index=" << arg1.index() <<
", state="
564 template <
typename SomeAccessor>
566 template <
typename SomeAccessor>
568 template <
typename SomeAccessor>
580template <
typename Accessor>
619 const typename Accessor::AccessorData *local_data =
nullptr);
625 template <
typename OtherAccessor>
637 template <
typename OtherAccessor>
647 Accessor::space_dimension> &tria_accessor,
648 const typename Accessor::AccessorData * local_data);
655 template <
typename OtherAccessor>
662 template <
typename OtherAccessor>
682 template <
class OtherAccessor>
691 template <
class OtherAccessor>
761template <
typename Accessor>
811 const typename Accessor::AccessorData *local_data =
nullptr);
822 template <
typename OtherAccessor>
833 Accessor::space_dimension> &tria_accessor,
834 const typename Accessor::AccessorData * local_data);
847 template <
typename OtherAccessor>
874 template <
class OtherAccessor>
883 template <
class OtherAccessor>
892 template <
class OtherAccessor>
955template <
typename Accessor>
962template <
typename Accessor>
963template <
typename OtherAccessor>
970template <
typename Accessor>
971template <
typename OtherAccessor>
974 : accessor(i.accessor)
979template <
typename Accessor>
980template <
typename OtherAccessor>
983 : accessor(i.accessor)
988template <
typename Accessor>
989template <
typename OtherAccessor>
992 : accessor(i.accessor)
997template <
typename Accessor>
998inline const Accessor &
1001 Assert(Accessor::structure_dimension != Accessor::dimension ||
1003 ExcDereferenceInvalidCell(accessor));
1004 Assert(Accessor::structure_dimension == Accessor::dimension ||
1006 ExcDereferenceInvalidObject(accessor));
1013template <
typename Accessor>
1017 Assert(Accessor::structure_dimension != Accessor::dimension ||
1019 ExcDereferenceInvalidCell(accessor));
1020 Assert(Accessor::structure_dimension == Accessor::dimension ||
1022 ExcDereferenceInvalidObject(accessor));
1029template <
typename Accessor>
1030inline const Accessor &
1038template <
typename Accessor>
1039inline const Accessor *
1047template <
typename Accessor>
1056template <
typename Accessor>
1060 return accessor.state();
1065template <
typename Accessor>
1071 ExcDereferenceInvalidObject(accessor));
1073 ExcDereferenceInvalidObject(other.
accessor));
1075 Assert(&accessor.get_triangulation() == &other.
accessor.get_triangulation(),
1076 ExcInvalidComparison());
1084 return ((**
this) < (*other));
1089template <
typename Accessor>
1094 return (other < *
this);
1099template <
typename Accessor>
1111template <
typename Accessor>
1123template <
typename Accessor>
1124template <
class StreamType>
1128 if (Accessor::structure_dimension == Accessor::dimension)
1129 out << accessor.level() <<
'.' << accessor.index();
1131 out << accessor.index();
1136template <
typename Accessor>
1145template <
typename Accessor>
1146template <
typename OtherAccessor>
1154template <
typename Accessor>
1155template <
typename OtherAccessor>
1163template <
typename Accessor>
1164template <
typename OtherAccessor>
1181template <
typename Accessor>
1182template <
typename OtherAccessor>
1198template <
typename Accessor>
1199template <
typename OtherAccessor>
1207template <
typename Accessor>
1208template <
typename OtherAccessor>
1233template <
typename Accessor>
1234inline std::ostream &
1248template <
typename Accessor>
1249inline std::ostream &
1263template <
typename Accessor>
1264inline std::ostream &
1277# 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)
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)
std::enable_if< std::is_floating_point< T >::value &&std::is_floating_point< U >::value, typenameProductType< std::complex< T >, std::complex< U > >::type >::type operator*(const std::complex< T > &left, const std::complex< U > &right)
#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 & 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)