1#ifndef included_AMP_MeshElementVector
2#define included_AMP_MeshElementVector
4#include "AMP/utils/UtilityMacros.h"
6#include <initializer_list>
15class MeshElementVectorIterator;
89 inline bool empty()
const {
return ptr ?
ptr->empty() :
true; }
90 inline size_t size()
const {
return ptr->size(); }
96 std::unique_ptr<MeshElementVectorBase>
ptr;
A base class for a vector of MeshElements.
bool empty() const
Is the vector empty.
MeshElementVectorBase()=default
virtual ~MeshElementVectorBase()=default
Destructor.
virtual const MeshElement & operator[](size_t) const =0
Access the desired element.
size_t size() const
Return the number of elements.
MeshElementVectorBase(const MeshElementVectorBase &)=delete
Copy constructor.
A class used to iterate over a set of mesh elements.
std::random_access_iterator_tag iterator_category
bool operator==(const Iterator &rhs) const
size_t d_pos
Dereference the iterator.
bool operator!=(const Iterator &rhs) const
Check if two iterators are equal.
MeshElementVectorIterator Iterator
ptrdiff_t difference_type
const MeshElementVectorBase * d_data
Iterator begin() const
Check if two iterators are not equal.
Iterator & operator+=(int N)
Decrement.
Iterator & operator++()
Destructor.
Iterator & operator--()
Increment.
size_t size() const
Return an iterator to the begining.
const MeshElement & operator*() const
Return the size of the iterator.
virtual ~MeshElementVectorIterator()=default
Default constructor.
Iterator end() const
Return an iterator to the begining.
MeshElementVectorIterator(const MeshElementVectorBase *ptr, size_t pos=0)
A pointer class to wrap a MeshElementVector.
MeshElementVectorPtr(MeshElementVectorPtr &&)=default
MeshElementVectorPtr & operator=(MeshElementVectorPtr &&)=default
MeshElementVectorPtr(std::unique_ptr< MeshElementVectorBase > p)
bool empty() const
Is the vector empty.
MeshElementVectorPtr(std::unique_ptr< MeshElementVector< T > > p)
const MeshElement & operator[](size_t i) const
MeshElementVectorPtr(const MeshElementVectorPtr &)=delete
MeshElementVectorPtr & operator=(const MeshElementVectorPtr &)=delete
size_t size() const
Return the number of elements.
MeshElementVectorIterator begin() const
std::unique_ptr< MeshElementVectorBase > ptr
MeshElementVectorIterator end() const
A base class for a vector of MeshElements.
MeshElementVector(const TYPE &x)
TYPE & operator[](size_t i)
MeshElementVector(size_t N)
MeshElementVector()=default
virtual ~MeshElementVector()
MeshElementVector(const MeshElementVector &)=delete
const MeshElement & operator[](size_t i) const override
Access the desired element.
#define AMP_DEBUG_ASSERT(EXP)
Assert error (debug only)