Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::Array< T, N > Class Template Reference

A simplistic array type with a fixed size and type.

#include <Array.hpp>

Public Types

Type aliases
using value_type = T
 The type of the entries.

Public Member Functions

Accessors
constexpr T & operator[] (size_t idx)
 Element access operator.
constexpr const T & operator[] (size_t idx) const
constexpr int size () const
 Get our size.
constexpr Kokkos::Array< T, N > & data ()
 Get a pointer to our data.
constexpr const Kokkos::Array< T, N > & data () const
 Get a pointer to our data.

Public Attributes

Internal data
Kokkos::Array< T, Ndata_
 Our data.

Constructors and destructor

template<typename... Args>
&& N
 Constructor to initialize all elements explicitly. Requires the number of arguments to be N and the type of each to be T.
constexpr Array ()=default
 Default constructor. Elements are uninitialized.
constexpr Array (const Array< T, N > &)=default
 Default copy constructor.
constexpr Array (Array< T, N > &&)=default
 Default move constructor.
constexpr Array< T, N > & operator= (const Array< T, N > &)=default
 Default copy assignment operator.
constexpr Array< T, N > & operator= (Array< T, N > &&)=default
 Default move assignment operator.

Member Typedef Documentation

◆ value_type

template<typename T, size_t N>
using mundy::Array< T, N >::value_type = T

Constructor & Destructor Documentation

◆ Array() [1/3]

template<typename T, size_t N>
mundy::Array< T, N >::Array ( )
constexprdefault

◆ Array() [2/3]

template<typename T, size_t N>
mundy::Array< T, N >::Array ( const Array< T, N > & )
constexprdefault

◆ Array() [3/3]

template<typename T, size_t N>
mundy::Array< T, N >::Array ( Array< T, N > && )
constexprdefault

Member Function Documentation

◆ operator=() [1/2]

template<typename T, size_t N>
Array< T, N > & mundy::Array< T, N >::operator= ( const Array< T, N > & )
constexprdefault

◆ operator=() [2/2]

template<typename T, size_t N>
Array< T, N > & mundy::Array< T, N >::operator= ( Array< T, N > && )
constexprdefault

◆ operator[]() [1/2]

template<typename T, size_t N>
T & mundy::Array< T, N >::operator[] ( size_t idx)
inlineconstexpr
Parameters
[in]idxThe index of the element.

◆ operator[]() [2/2]

template<typename T, size_t N>
const T & mundy::Array< T, N >::operator[] ( size_t idx) const
inlineconstexpr

◆ size()

template<typename T, size_t N>
int mundy::Array< T, N >::size ( ) const
inlineconstexpr

◆ data() [1/2]

template<typename T, size_t N>
Kokkos::Array< T, N > & mundy::Array< T, N >::data ( )
inlineconstexpr

◆ data() [2/2]

template<typename T, size_t N>
const Kokkos::Array< T, N > & mundy::Array< T, N >::data ( ) const
inlineconstexpr

Member Data Documentation

◆ data_

template<typename T, size_t N>
Kokkos::Array<T, N> mundy::Array< T, N >::data_

◆ N

template<typename T, size_t N>
template<typename... Args>
&& mundy::Array< T, N >::N
Initial value:
= 1) &&
(std::is_same_v<std::remove_cv_t<std::remove_reference_t<Args>>, T> && ...)
constexpr explicit Array(Args&&... args)
: data_{std::forward<Args>(args)...} {
}
constexpr Array(const std::initializer_list<T>& list) {
if (list.size() == N) {
size_t i = 0;
for (auto it = list.begin(); it != list.end(); ++it) {
data_[i] = *it;
++i;
}
} else if (list.size() == 1) {
impl::fill_impl(std::make_index_sequence<N>{}, *this, *list.begin());
} else {
MUNDY_THROW_ASSERT(false, std::invalid_argument, "Array: Initializer list must have either 1 or N elements.");
}
}
constexpr Array(const T& value) : Array(value, std::make_index_sequence<N>{}) {
}
constexpr ~Array() = default
A simplistic array type with a fixed size and type.
Definition Array.hpp:44
constexpr Array()=default
Default constructor. Elements are uninitialized.
&& N
Constructor to initialize all elements explicitly. Requires the number of arguments to be N and the t...
Definition Array.hpp:70
Kokkos::Array< T, N > data_
Our data.
Definition Array.hpp:50
#define MUNDY_THROW_ASSERT(assertion_to_test, exception_to_throw, message_to_print)
Throw an exception if the given assertion is false.
Definition throw_assert.hpp:223