37template <
typename _Element,
typename _Vectorizer>
55 std::vector<Element> m_elements;
118 template <typename Z = Vectorizer, typename = typename std::enable_if<std::is_same<Z, ScalarVectorizer>::value>::type>
133 template <
typename... Indices>
136 static_assert(
sizeof...(indices) ==
NumberOfAxes,
"The number of indices must match the number of axes.");
139 std::vector<size_t> indices_vector {
static_cast<size_t>(indices)...};
140 std::array<size_t, NumberOfAxes> indices_array {};
141 std::copy(indices_vector.begin(), indices_vector.end(), indices_array.begin());
144 const auto vector_index = this->
vectorizer().offset(indices_array);
145 return this->
elements()[vector_index];
154 template <
typename... Indices>
161 const std::vector<Element>&
elements()
const {
return this->m_elements; }
167 std::vector<Element>&
elements() {
return this->m_elements; }
189 template <
typename Z = Vectorizer>
192 return Eigen::Map<Eigen::Matrix<Element, Eigen::Dynamic, 1>> {this->
elements().data(),
static_cast<long>(this->
vectorizer().dimension(0))};
Definition: Matrix.hpp:47
Definition: StorageArray.hpp:38
StorageArray(const std::vector< Element > &elements, const Vectorizer &vectorizer)
Definition: StorageArray.hpp:72
std::vector< Element > & elements()
Definition: StorageArray.hpp:167
_Element Element
Definition: StorageArray.hpp:41
const std::vector< Element > & elements() const
Definition: StorageArray.hpp:161
Element & operator()(const Indices &... indices)
Definition: StorageArray.hpp:155
const Vectorizer & vectorizer() const
Definition: StorageArray.hpp:177
static constexpr auto NumberOfAxes
Definition: StorageArray.hpp:50
StorageArray(const Vectorizer &vectorizer)
Definition: StorageArray.hpp:92
StorageArray(const std::array< Element, N > &elements, const Vectorizer &vectorizer)
Definition: StorageArray.hpp:105
enable_if_t< std::is_same< Z, VectorVectorizer >::value, VectorX< Element > > asVector()
Definition: StorageArray.hpp:190
const Element & operator()(const Indices &... indices) const
Definition: StorageArray.hpp:134
_Vectorizer Vectorizer
Definition: StorageArray.hpp:44
StorageArray(const Element &element, const Vectorizer &vectorizer)
Definition: StorageArray.hpp:83
Definition: BaseOneElectronIntegralBuffer.hpp:25
typename std::enable_if< B, T >::type enable_if_t
Definition: type_traits.hpp:37