libMesh
Public Types | Public Member Functions | Public Attributes | List of all members
libMesh::MeshBase::const_node_iterator Struct Reference

The definition of the const_node_iterator struct. More...

#include <mesh_base.h>

Inheritance diagram for libMesh::MeshBase::const_node_iterator:
[legend]

Public Types

using iterator_category = std::forward_iterator_tag
 
using value_type = Type
 
using difference_type = std::ptrdiff_t
 
using pointer = PointerType
 
using reference = ReferenceType
 
typedef variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType > Iterator
 Shortcut name for the fully-qualified typename. More...
 

Public Member Functions

template<typename PredType , typename IterType >
 const_node_iterator (const IterType &d, const IterType &e, const PredType &p)
 Templated forwarding ctor – forwards to appropriate variant_filter_iterator ctor. More...
 
 const_node_iterator (const MeshBase::node_iterator &rhs)
 The conversion-to-const ctor. More...
 
ReferenceType operator* () const
 unary op*() forwards on to Iter::op*() More...
 
PointerType operator-> () const
 op->() More...
 
Iteratoroperator++ ()
 op++() forwards on to Iter::op++() More...
 
const Iterator operator++ (int)
 postfix op++(), creates a temporary! More...
 
bool equal (const variant_filter_iterator &other) const
 Forwards to the equal() function defined for the IterBase pointer. More...
 
void swap (Iterator &lhs, Iterator &rhs)
 swap, used to implement op= More...
 

Public Attributes

std::unique_ptr< IterBasedata
 Ideally this private member data should have protected access. More...
 
std::unique_ptr< IterBaseend
 Also have a polymorphic pointer to the end object, this prevents iterating past the end. More...
 
std::unique_ptr< PredBasepred
 The predicate object. More...
 

Detailed Description

The definition of the const_node_iterator struct.

It is similar to the regular iterator above, but also provides an additional conversion-to-const ctor.

Definition at line 2172 of file mesh_base.h.

Member Typedef Documentation

◆ difference_type

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
using variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::difference_type = std::ptrdiff_t
inherited

Definition at line 57 of file variant_filter_iterator.h.

◆ Iterator

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
typedef variant_filter_iterator<Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType> variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::Iterator
inherited

Shortcut name for the fully-qualified typename.

Definition at line 65 of file variant_filter_iterator.h.

◆ iterator_category

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
using variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::iterator_category = std::forward_iterator_tag
inherited

Definition at line 55 of file variant_filter_iterator.h.

◆ pointer

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
using variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::pointer = PointerType
inherited

Definition at line 58 of file variant_filter_iterator.h.

◆ reference

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
using variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::reference = ReferenceType
inherited

Definition at line 59 of file variant_filter_iterator.h.

◆ value_type

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
using variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::value_type = Type
inherited

Definition at line 56 of file variant_filter_iterator.h.

Constructor & Destructor Documentation

◆ const_node_iterator() [1/2]

template<typename PredType , typename IterType >
libMesh::MeshBase::const_node_iterator::const_node_iterator ( const IterType &  d,
const IterType &  e,
const PredType &  p 
)
inline

Templated forwarding ctor – forwards to appropriate variant_filter_iterator ctor.

Definition at line 2179 of file mesh_base.h.

2181  :
2182  const_node_filter_iter(d,e,p) {}
variant_filter_iterator< MeshBase::Predicate, Node *const, Node *const &, Node *const * > const_node_filter_iter
Definition: mesh_base.h:2059

◆ const_node_iterator() [2/2]

libMesh::MeshBase::const_node_iterator::const_node_iterator ( const MeshBase::node_iterator rhs)
inline

The conversion-to-const ctor.

Takes a regular iterator and calls the appropriate variant_filter_iterator copy constructor.

Note
This one is not templated!

Definition at line 2190 of file mesh_base.h.

2190  :
2191  const_node_filter_iter(rhs) {}
variant_filter_iterator< MeshBase::Predicate, Node *const, Node *const &, Node *const * > const_node_filter_iter
Definition: mesh_base.h:2059

Member Function Documentation

◆ equal()

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
bool variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::equal ( const variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType > &  other) const
inlineinherited

Forwards to the equal() function defined for the IterBase pointer.

Definition at line 416 of file variant_filter_iterator.h.

417  {
418  return data->equal(other.data);
419  }
std::unique_ptr< IterBase > data
Ideally this private member data should have protected access.

◆ operator*()

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
ReferenceType variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::operator* ( ) const
inlineinherited

unary op*() forwards on to Iter::op*()

Definition at line 378 of file variant_filter_iterator.h.

379  {
380  return **data;
381  }
std::unique_ptr< IterBase > data
Ideally this private member data should have protected access.

◆ operator++() [1/2]

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
Iterator& variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::operator++ ( )
inlineinherited

op++() forwards on to Iter::op++()

Definition at line 394 of file variant_filter_iterator.h.

395  {
396  ++*data;
397  this->satisfy_predicate();
398  return *this;
399  }
void satisfy_predicate()
Advances the data pointer until it reaches the end or the predicate is satisfied. ...
std::unique_ptr< IterBase > data
Ideally this private member data should have protected access.

◆ operator++() [2/2]

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
const Iterator variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::operator++ ( int  )
inlineinherited

postfix op++(), creates a temporary!

Definition at line 404 of file variant_filter_iterator.h.

405  {
406  Iterator oldValue(*this); // standard is to return old value
407  ++*data;
408  this->satisfy_predicate();
409  return oldValue;
410  }
void satisfy_predicate()
Advances the data pointer until it reaches the end or the predicate is satisfied. ...
std::unique_ptr< IterBase > data
Ideally this private member data should have protected access.
variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType > Iterator
Shortcut name for the fully-qualified typename.

◆ operator->()

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
PointerType variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::operator-> ( ) const
inlineinherited

op->()

Definition at line 386 of file variant_filter_iterator.h.

387  {
388  return &**this;
389  }

◆ swap()

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
void variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::swap ( Iterator lhs,
Iterator rhs 
)
inlineinherited

swap, used to implement op=

Definition at line 424 of file variant_filter_iterator.h.

Referenced by variant_filter_iterator< Elem::Predicate, Elem *>::operator=().

425  {
426  // Swap the data pointers
427  std::swap (lhs.data, rhs.data);
428 
429  // Swap the end pointers
430  std::swap (lhs.end, rhs.end);
431 
432  // Also swap the predicate objects.
433  std::swap (lhs.pred, rhs.pred);
434  }

Member Data Documentation

◆ data

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
std::unique_ptr<IterBase> variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::data
inherited

Ideally this private member data should have protected access.

However, if we want a const_iterator to be constructable from an non-const one, templated versions of the same class (not related by inheritance) will need to know about these private members. Thus, they have public access.

Polymorphic pointer to the object. Don't confuse with the data pointer located in the Iter!

Definition at line 301 of file variant_filter_iterator.h.

Referenced by variant_filter_iterator< Elem::Predicate, Elem *>::equal(), variant_filter_iterator< Elem::Predicate, Elem *>::operator*(), variant_filter_iterator< Elem::Predicate, Elem *>::operator++(), variant_filter_iterator< Elem::Predicate, Elem *>::satisfy_predicate(), and variant_filter_iterator< Elem::Predicate, Elem *>::swap().

◆ end

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
std::unique_ptr<IterBase> variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::end
inherited

Also have a polymorphic pointer to the end object, this prevents iterating past the end.

Definition at line 307 of file variant_filter_iterator.h.

Referenced by variant_filter_iterator< Elem::Predicate, Elem *>::satisfy_predicate(), and variant_filter_iterator< Elem::Predicate, Elem *>::swap().

◆ pred

template<class Predicate, class Type, class ReferenceType = Type &, class PointerType = Type *, class ConstType = const Type, class ConstReferenceType = const Type &, class ConstPointerType = const Type *>
std::unique_ptr<PredBase> variant_filter_iterator< Predicate, Type, ReferenceType, PointerType, ConstType, ConstReferenceType, ConstPointerType >::pred
inherited

The predicate object.

Must have op() capable of operating on IterBase * pointers. Therefore it has to follow the same paradigm as IterBase.

Definition at line 314 of file variant_filter_iterator.h.

Referenced by variant_filter_iterator< Elem::Predicate, Elem *>::swap().


The documentation for this struct was generated from the following file: