Advanced Multi-Physics (AMP)
On-Line Documentation
Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
AMP::Mesh::MultiIterator Class Referencefinal

A class used to combine multiple iterators. More...

#include <MultiIterator.h>

Inheritance diagram for AMP::Mesh::MultiIterator:
Inheritance graph
[legend]

Public Types

using difference_type = ptrdiff_t
 
using iterator_category = std::random_access_iterator_tag
 
using MeshIteratorPtr = std::unique_ptr< MeshIteratorBase >
 
using pointer = const AMP::Mesh::MeshElement *
 
using reference = const AMP::Mesh::MeshElement &
 
enum class  Type : uint8_t { Forward = 1 , Bidirectional = 2 , RandomAccess = 3 }
 Enum for the type of iterator supported. More...
 
using value_type = AMP::Mesh::MeshElement
 

Public Member Functions

MeshIterator begin () const override
 Return an iterator to the begining.
 
std::string className () const override
 Return the class name.
 
std::unique_ptr< MeshIteratorBaseclone () const override
 Clone the iterator.
 
size_t empty () const
 Return the number of elements in the iterator.
 
MeshIteratorEnd end () const
 Return an iterator to the end (use tombstone class)
 
uint64_t getID () const
 Return a unique hash id.
 
 MultiIterator ()
 Empty MultiIterator constructor.
 
 MultiIterator (const MultiIterator &)=delete
 Copy constructor.
 
 MultiIterator (int64_t fid, AMP::IO::RestartManager *manager)
 
 MultiIterator (MultiIterator &&)
 Move constructor.
 
 MultiIterator (std::vector< MeshIterator > iterators, size_t pos=0)
 Default MultiIterator constructor.
 
 MultiIterator (std::vector< MeshIteratorBase * > &&iterators, size_t pos=0)
 
bool operator!= (const MeshIteratorBase &rhs) const override
 Check if two iterators are not equal.
 
virtual bool operator!= (const MeshIteratorBase &rhs) const=0
 Check if two iterators are not equal.
 
bool operator!= (MeshIteratorEnd) const
 Check if two iterators are not equal.
 
const MeshElementoperator* () const
 Dereference the iterator.
 
MeshIteratorBaseoperator++ () override
 
MeshIteratorBaseoperator+= (int N) override
 
MeshIteratorBaseoperator-- () override
 
const MeshElementoperator-> () const
 Dereference the iterator.
 
MultiIteratoroperator= (const MultiIterator &)=delete
 Assignment operator.
 
MultiIteratoroperator= (MultiIterator &&)
 Move operator.
 
bool operator== (const MeshIteratorBase &rhs) const override
 Check if two iterators are equal.
 
virtual bool operator== (const MeshIteratorBase &rhs) const=0
 Check if two iterators are equal.
 
bool operator== (MeshIteratorEnd) const
 Check if two iterators are equal.
 
size_t pos () const
 Return the current position (from the beginning) in the iterator.
 
void registerChildObjects (AMP::IO::RestartManager *manager) const override
 
void setPos (size_t) override
 Set the position in the iterator.
 
size_t size () const
 Return the number of elements in the iterator.
 
Type type () const
 Return the iterator type.
 
void writeRestart (int64_t fid) const override
 
virtual ~MultiIterator ()
 Deconstructor.
 

Protected Attributes

const MeshElementd_element = nullptr
 Pointer to the current element.
 
size_t d_iteratorNum = 0
 
std::vector< MeshIteratorBase * > d_iterators
 
Type d_iteratorType = Type::RandomAccess
 Type of iterator.
 
size_t d_localPos = 0
 
size_t d_pos = 0
 Position of the iterator.
 
size_t d_size = 0
 Size of the iterator.
 
uint32_t d_typeHash = 0
 Unique hash for the type.
 

Friends

class MultiMesh
 

Detailed Description

A class used to combine multiple iterators.

This class provides routines for iterating over a mesh. More specifically, this class combines multiple iterators into one. This is primarily needed for MultiMesh, but may be used for other applicaitons.

Definition at line 22 of file MultiIterator.h.

Member Typedef Documentation

◆ difference_type

using AMP::Mesh::MeshIteratorBase::difference_type = ptrdiff_t
inherited

Definition at line 45 of file MeshIterator.h.

◆ iterator_category

using AMP::Mesh::MeshIteratorBase::iterator_category = std::random_access_iterator_tag
inherited

Definition at line 43 of file MeshIterator.h.

◆ MeshIteratorPtr

Definition at line 25 of file MultiIterator.h.

◆ pointer

Definition at line 46 of file MeshIterator.h.

◆ reference

Definition at line 47 of file MeshIterator.h.

◆ value_type

Definition at line 44 of file MeshIterator.h.

Member Enumeration Documentation

◆ Type

enum class AMP::Mesh::MeshIteratorBase::Type : uint8_t
stronginherited

Enum for the type of iterator supported.

Enumerator
Forward 
Bidirectional 
RandomAccess 

Definition at line 52 of file MeshIterator.h.

Constructor & Destructor Documentation

◆ MultiIterator() [1/6]

AMP::Mesh::MultiIterator::MultiIterator ( )

Empty MultiIterator constructor.

◆ MultiIterator() [2/6]

AMP::Mesh::MultiIterator::MultiIterator ( std::vector< MeshIterator iterators,
size_t  pos = 0 
)
explicit

Default MultiIterator constructor.

◆ ~MultiIterator()

virtual AMP::Mesh::MultiIterator::~MultiIterator ( )
virtual

Deconstructor.

◆ MultiIterator() [3/6]

AMP::Mesh::MultiIterator::MultiIterator ( MultiIterator &&  )

Move constructor.

◆ MultiIterator() [4/6]

AMP::Mesh::MultiIterator::MultiIterator ( const MultiIterator )
delete

Copy constructor.

◆ MultiIterator() [5/6]

AMP::Mesh::MultiIterator::MultiIterator ( int64_t  fid,
AMP::IO::RestartManager manager 
)

◆ MultiIterator() [6/6]

AMP::Mesh::MultiIterator::MultiIterator ( std::vector< MeshIteratorBase * > &&  iterators,
size_t  pos = 0 
)
explicit

Member Function Documentation

◆ begin()

MeshIterator AMP::Mesh::MultiIterator::begin ( ) const
overridevirtual

Return an iterator to the begining.

Implements AMP::Mesh::MeshIteratorBase.

◆ className()

std::string AMP::Mesh::MultiIterator::className ( ) const
inlineoverridevirtual

Return the class name.

Implements AMP::Mesh::MeshIteratorBase.

Definition at line 51 of file MultiIterator.h.

◆ clone()

std::unique_ptr< MeshIteratorBase > AMP::Mesh::MultiIterator::clone ( ) const
overridevirtual

Clone the iterator.

Implements AMP::Mesh::MeshIteratorBase.

◆ empty()

size_t AMP::Mesh::MeshIteratorBase::empty ( ) const
inlineinherited

Return the number of elements in the iterator.

Definition at line 63 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_size.

◆ end()

MeshIteratorEnd AMP::Mesh::MeshIteratorBase::end ( ) const
inlineinherited

Return an iterator to the end (use tombstone class)

Definition at line 78 of file MeshIterator.h.

◆ getID()

uint64_t AMP::Mesh::MeshIteratorBase::getID ( ) const
inlineinherited

Return a unique hash id.

Definition at line 60 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_typeHash.

◆ operator!=() [1/3]

bool AMP::Mesh::MultiIterator::operator!= ( const MeshIteratorBase rhs) const
overridevirtual

Check if two iterators are not equal.

Implements AMP::Mesh::MeshIteratorBase.

◆ operator!=() [2/3]

virtual bool AMP::Mesh::MeshIteratorBase::operator!= ( const MeshIteratorBase rhs) const
virtual

Check if two iterators are not equal.

Implements AMP::Mesh::MeshIteratorBase.

◆ operator!=() [3/3]

bool AMP::Mesh::MeshIteratorBase::operator!= ( MeshIteratorEnd  ) const
inline

Check if two iterators are not equal.

Definition at line 84 of file MeshIterator.h.

◆ operator*()

const MeshElement & AMP::Mesh::MeshIteratorBase::operator* ( ) const
inlineinherited

Dereference the iterator.

Definition at line 75 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_element.

◆ operator++()

MeshIteratorBase & AMP::Mesh::MultiIterator::operator++ ( )
overridevirtual

◆ operator+=()

MeshIteratorBase & AMP::Mesh::MultiIterator::operator+= ( int  N)
overridevirtual

◆ operator--()

MeshIteratorBase & AMP::Mesh::MultiIterator::operator-- ( )
overridevirtual

◆ operator->()

const MeshElement * AMP::Mesh::MeshIteratorBase::operator-> ( ) const
inlineinherited

Dereference the iterator.

Definition at line 72 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_element.

◆ operator=() [1/2]

MultiIterator & AMP::Mesh::MultiIterator::operator= ( const MultiIterator )
delete

Assignment operator.

◆ operator=() [2/2]

MultiIterator & AMP::Mesh::MultiIterator::operator= ( MultiIterator &&  )

Move operator.

◆ operator==() [1/3]

bool AMP::Mesh::MultiIterator::operator== ( const MeshIteratorBase rhs) const
overridevirtual

Check if two iterators are equal.

Implements AMP::Mesh::MeshIteratorBase.

◆ operator==() [2/3]

virtual bool AMP::Mesh::MeshIteratorBase::operator== ( const MeshIteratorBase rhs) const
virtual

Check if two iterators are equal.

Implements AMP::Mesh::MeshIteratorBase.

◆ operator==() [3/3]

bool AMP::Mesh::MeshIteratorBase::operator== ( MeshIteratorEnd  ) const
inline

Check if two iterators are equal.

Definition at line 81 of file MeshIterator.h.

◆ pos()

size_t AMP::Mesh::MeshIteratorBase::pos ( ) const
inlineinherited

Return the current position (from the beginning) in the iterator.

Definition at line 69 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_pos.

◆ registerChildObjects()

void AMP::Mesh::MultiIterator::registerChildObjects ( AMP::IO::RestartManager manager) const
overridevirtual

◆ setPos()

void AMP::Mesh::MultiIterator::setPos ( size_t  )
overridevirtual

Set the position in the iterator.

Implements AMP::Mesh::MeshIteratorBase.

◆ size()

size_t AMP::Mesh::MeshIteratorBase::size ( ) const
inlineinherited

Return the number of elements in the iterator.

Definition at line 66 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_size.

◆ type()

Type AMP::Mesh::MeshIteratorBase::type ( ) const
inlineinherited

Return the iterator type.

Definition at line 57 of file MeshIterator.h.

References AMP::Mesh::MeshIteratorBase::d_iteratorType.

◆ writeRestart()

void AMP::Mesh::MultiIterator::writeRestart ( int64_t  fid) const
overridevirtual

Friends And Related Symbol Documentation

◆ MultiMesh

friend class MultiMesh
friend

Definition at line 92 of file MultiIterator.h.

Member Data Documentation

◆ d_element

const MeshElement* AMP::Mesh::MeshIteratorBase::d_element = nullptr
protectedinherited

Pointer to the current element.

Definition at line 137 of file MeshIterator.h.

Referenced by AMP::Mesh::MeshIteratorBase::operator*(), and AMP::Mesh::MeshIteratorBase::operator->().

◆ d_iteratorNum

size_t AMP::Mesh::MultiIterator::d_iteratorNum = 0
protected

Definition at line 98 of file MultiIterator.h.

◆ d_iterators

std::vector<MeshIteratorBase *> AMP::Mesh::MultiIterator::d_iterators
protected

Definition at line 99 of file MultiIterator.h.

◆ d_iteratorType

Type AMP::Mesh::MeshIteratorBase::d_iteratorType = Type::RandomAccess
protectedinherited

Type of iterator.

Definition at line 133 of file MeshIterator.h.

Referenced by AMP::Mesh::MeshIteratorBase::type().

◆ d_localPos

size_t AMP::Mesh::MultiIterator::d_localPos = 0
protected

Definition at line 97 of file MultiIterator.h.

◆ d_pos

size_t AMP::Mesh::MeshIteratorBase::d_pos = 0
protectedinherited

◆ d_size

size_t AMP::Mesh::MeshIteratorBase::d_size = 0
protectedinherited

◆ d_typeHash

uint32_t AMP::Mesh::MeshIteratorBase::d_typeHash = 0
protectedinherited

Unique hash for the type.

Definition at line 134 of file MeshIterator.h.

Referenced by AMP::Mesh::MeshIteratorBase::getID().


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



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:43.
Comments on this page