46   template <
class BaseIterator>
    51     using value_type = 
typename BaseIterator::value_type::element_type;
    58       mooseAssert(val, 
"Null object");
    64       auto & val = BaseIterator::operator[](n);
    65       mooseAssert(val, 
"Null object");
    71   using iterator = DereferenceIterator<typename values_type::iterator>;
    72   using const_iterator = DereferenceIterator<typename values_type::const_iterator>;
    97   const T & 
operator[](
const std::size_t i)
 const   100     mooseAssert(
hasValue(i), 
"Null object");
   103   T & 
operator[](
const std::size_t i) { 
return const_cast<T &
>(std::as_const(*
this)[i]); }
   133     return const_cast<T *
>(std::as_const(*this).queryValue(i));
   144   void setPointer(
const std::size_t i, std::unique_ptr<T> && ptr)
   146     mooseAssert(
size() > i, 
"Invalid size");
   155     mooseAssert(ptr, 
"Null object");
   156     return *
_values.emplace_back(std::move(ptr));
   176     mooseAssert(
size() > i, 
"Invalid size");
   185     return const_cast<std::unique_ptr<T> &
>(std::as_const(*this).pointerValue(i));
   188   friend void storeHelper<>(std::ostream & stream, 
UniqueStorage<T> &, 
void *);
   189   friend void loadHelper<>(std::istream & stream, 
UniqueStorage<T> &, 
void *);
 KOKKOS_INLINE_FUNCTION Real3 operator*(const Real left, const Real3 right)
const std::unique_ptr< T > & pointerValue(const std::size_t i) const
Returns a read-only reference to the underlying unique pointer at index i. 
void loadHelper(std::istream &stream, UniqueStorage< T > &, void *)
UniqueStorage helper routine. 
std::unique_ptr< T > & pointerValue(const std::size_t i)
Returns a reference to the underlying unique pointer at index i. 
const_iterator end() const
DereferenceIterator(const BaseIterator &it)
void clear()
Clears the underlying vector. 
const_iterator begin() const
Storage container that stores a vector of unique pointers of T, but represents most of the public fac...
void setPointer(const std::size_t i, std::unique_ptr< T > &&ptr)
Sets the underlying unique_ptr at index i to ptr. 
iterator begin()
Begin and end iterators to the underlying data. 
void storeHelper(std::ostream &stream, UniqueStorage< T > &, void *)
UniqueStorage helper routine. 
void resize(const std::size_t size)
Resizes the underlying vector. 
typename std::vector< std::unique_ptr< RestartableDataValue > > values_type
T * queryValue(const std::size_t i)
const T * queryValue(const std::size_t i) const
DereferenceIterator< typename values_type::iterator > iterator
reference operator[](size_t n) const
const T & operator[](const std::size_t i) const
DereferenceIterator< typename values_type::const_iterator > const_iterator
typename BaseIterator::value_type::element_type value_type
Iterator that adds an additional dereference to BaseIterator. 
pointer operator->() const
UniqueStorage & operator=(const UniqueStorage &)=delete
T & operator[](const std::size_t i)
values_type _values
The underlying data. 
bool hasValue(const std::size_t i) const
reference operator*() const
T & addPointer(std::unique_ptr< T > &&ptr)
Adds the given object in ptr to the storage.