11#ifndef CUBBYFLOW_ARRAY_BASE_IMPL_HPP
12#define CUBBYFLOW_ARRAY_BASE_IMPL_HPP
16template <
typename T,
size_t N,
typename D>
22template <
typename T,
size_t N,
typename D>
23template <
typename...
Args>
26 static_assert(
sizeof...(args) ==
N - 1,
"Invalid number of indices.");
28 return i + m_size[0] * IndexInternal(1,
args...);
31template <
typename T,
size_t N,
typename D>
35 return IndexInternal(
idx, std::make_index_sequence<N>{});
38template <
typename T,
size_t N,
typename D>
44template <
typename T,
size_t N,
typename D>
50template <
typename T,
size_t N,
typename D>
56template <
typename T,
size_t N,
typename D>
63template <
typename T,
size_t N,
typename D>
70template <
typename T,
size_t N,
typename D>
77template <
typename T,
size_t N,
typename D>
83template <
typename T,
size_t N,
typename D>
89template <
typename T,
size_t N,
typename D>
95template <
typename T,
size_t N,
typename D>
101template <
typename T,
size_t N,
typename D>
107template <
typename T,
size_t N,
typename D>
113template <
typename T,
size_t N,
typename D>
119template <
typename T,
size_t N,
typename D>
125template <
typename T,
size_t N,
typename D>
131template <
typename T,
size_t N,
typename D>
137template <
typename T,
size_t N,
typename D>
143template <
typename T,
size_t N,
typename D>
149template <
typename T,
size_t N,
typename D>
150template <
typename...
Args>
156template <
typename T,
size_t N,
typename D>
157template <
typename...
Args>
160 return m_ptr[Index(i,
args...)];
163template <
typename T,
size_t N,
typename D>
169template <
typename T,
size_t N,
typename D>
175template <
typename T,
size_t N,
typename D>
181template <
typename T,
size_t N,
typename D>
187template <
typename T,
size_t N,
typename D>
188template <
typename...
Args>
191 return At(i,
args...);
194template <
typename T,
size_t N,
typename D>
195template <
typename...
Args>
198 return At(i,
args...);
201template <
typename T,
size_t N,
typename D>
207template <
typename T,
size_t N,
typename D>
213template <
typename T,
size_t N,
typename D>
219template <
typename T,
size_t N,
typename D>
225template <
typename T,
size_t N,
typename D>
228 *
this = std::move(
other);
231template <
typename T,
size_t N,
typename D>
239template <
typename T,
size_t N,
typename D>
248template <
typename T,
size_t N,
typename D>
249template <
typename...
Args>
255template <
typename T,
size_t N,
typename D>
262template <
typename T,
size_t N,
typename D>
268template <
typename T,
size_t N,
typename D>
271 std::swap(m_ptr,
other.m_ptr);
272 std::swap(m_size,
other.m_size);
275template <
typename T,
size_t N,
typename D>
276template <
typename...
Args>
279 return i + m_size[d] * IndexInternal(d + 1,
args...);
282template <
typename T,
size_t N,
typename D>
283size_t ArrayBase<T, N, D>::IndexInternal(
size_t,
size_t i)
const
288template <
typename T,
size_t N,
typename D>
289template <
size_t...
I>
291 std::index_sequence<I...>)
const
293 return Index(
idx[
I]...);
Definition ArrayBase.hpp:20
Pointer data()
Definition ArrayBase-Impl.hpp:39
bool IsEmpty() const
Definition ArrayBase-Impl.hpp:78
ArrayBase()
Definition ArrayBase-Impl.hpp:214
void ClearPtrAndSize()
Definition ArrayBase-Impl.hpp:263
Reference operator[](size_t i)
Definition ArrayBase-Impl.hpp:176
Iterator begin()
Definition ArrayBase-Impl.hpp:90
void SetPtrAndSize(Pointer ptr, size_t ni, Args... args)
Definition ArrayBase-Impl.hpp:250
Reference operator()(size_t i, Args... args)
size_t Length() const
Definition ArrayBase-Impl.hpp:84
Iterator rend()
Definition ArrayBase-Impl.hpp:126
void SwapPtrAndSize(ArrayBase &other)
Definition ArrayBase-Impl.hpp:269
Iterator end()
Definition ArrayBase-Impl.hpp:102
const Vector< size_t, N > & Size() const
Definition ArrayBase-Impl.hpp:51
Reference At(size_t i)
Definition ArrayBase-Impl.hpp:138
size_t Index(size_t i) const
Definition ArrayBase-Impl.hpp:17
Iterator rbegin()
Definition ArrayBase-Impl.hpp:114
ArrayBase & operator=(const ArrayBase &other)
Definition ArrayBase-Impl.hpp:232
ValueType Length() const
Definition MatrixExpression-Impl.hpp:278
Iterator begin()
Definition Matrix-Impl.hpp:272
Pointer data()
Definition Matrix-Impl.hpp:298
Iterator end()
Definition Matrix-Impl.hpp:285
Definition pybind11Utils.hpp:21
Matrix< T, Rows, 1 > Vector
Definition Matrix.hpp:738