Advanced Multi-Physics (AMP)
On-Line Documentation
MultiIterator.h
Go to the documentation of this file.
1#ifndef included_AMP_MultiIterator
2#define included_AMP_MultiIterator
3
4#include "AMP/mesh/MeshIterator.h"
5
6#include <memory>
7
8
9namespace AMP::Mesh {
10
11
12class MultiMesh;
13
14
22class MultiIterator final : public MeshIteratorBase
23{
24public:
25 using MeshIteratorPtr = std::unique_ptr<MeshIteratorBase>;
26
27
28public:
31
33 explicit MultiIterator( std::vector<MeshIterator> iterators, size_t pos = 0 );
34
36 virtual ~MultiIterator();
37
40
42 MultiIterator( const MultiIterator & ) = delete;
43
46
49
51 std::string className() const override { return "MultiIterator"; }
52
54 void setPos( size_t ) override;
55
56 // Increment
58
59 // Decrement
61
62 // Arithmetic operator+=
63 MeshIteratorBase &operator+=( int N ) override;
64
66 bool operator==( const MeshIteratorBase &rhs ) const override;
67
69 bool operator!=( const MeshIteratorBase &rhs ) const override;
70
72 MeshIterator begin() const override;
73
75 std::unique_ptr<MeshIteratorBase> clone() const override;
76
77 using MeshIteratorBase::operator==;
78 using MeshIteratorBase::operator!=;
79
80
81public: // Write/read restart data
82 void registerChildObjects( AMP::IO::RestartManager *manager ) const override;
83 void writeRestart( int64_t fid ) const override;
84 MultiIterator( int64_t fid, AMP::IO::RestartManager *manager );
85
86
87public: // Advanced interfaces (use with caution)
88 explicit MultiIterator( std::vector<MeshIteratorBase *> &&iterators, size_t pos = 0 );
89
90
91protected:
92 friend class MultiMesh;
93
94
95protected:
96 // Data members
97 size_t d_localPos = 0;
98 size_t d_iteratorNum = 0;
99 std::vector<MeshIteratorBase *> d_iterators;
100};
101
102
103} // namespace AMP::Mesh
104
105#endif
Class to manage reading/writing restart data.
A base class used to iterate over elements in a Mesh.
size_t pos() const
Return the current position (from the beginning) in the iterator.
A class used to iterate over elements in a Mesh.
A class used to combine multiple iterators.
MeshIteratorBase & operator--() override
MultiIterator(const MultiIterator &)=delete
Copy constructor.
std::unique_ptr< MeshIteratorBase > MeshIteratorPtr
MultiIterator & operator=(const MultiIterator &)=delete
Assignment operator.
bool operator==(const MeshIteratorBase &rhs) const override
Check if two iterators are equal.
void setPos(size_t) override
Set the position in the iterator.
MultiIterator(MultiIterator &&)
Move constructor.
MultiIterator(std::vector< MeshIteratorBase * > &&iterators, size_t pos=0)
void registerChildObjects(AMP::IO::RestartManager *manager) const override
bool operator!=(const MeshIteratorBase &rhs) const override
Check if two iterators are not equal.
MultiIterator(std::vector< MeshIterator > iterators, size_t pos=0)
Default MultiIterator constructor.
std::vector< MeshIteratorBase * > d_iterators
MeshIteratorBase & operator+=(int N) override
virtual ~MultiIterator()
Deconstructor.
std::unique_ptr< MeshIteratorBase > clone() const override
Clone the iterator.
MeshIteratorBase & operator++() override
MultiIterator()
Empty MultiIterator constructor.
std::string className() const override
Return the class name.
MultiIterator(int64_t fid, AMP::IO::RestartManager *manager)
MeshIterator begin() const override
Return an iterator to the begining.
MultiIterator & operator=(MultiIterator &&)
Move operator.
void writeRestart(int64_t fid) const override
A concrete mesh class for a multi-mesh.
Definition MultiMesh.h:27



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:40.
Comments on this page