11#ifndef NDARRAY_eigen_h_INCLUDED
12#define NDARRAY_eigen_h_INCLUDED
21#if defined __GNUC__ && __GNUC__>=6
22 #pragma GCC diagnostic ignored "-Wignored-attributes"
23 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
33template <
typename T,
int N,
int C,
typename XprKind>
36template <
typename T,
int N,
int C>
38 typedef typename boost::remove_const<T>::type Scalar;
39 typedef Eigen::Matrix<
40 Scalar, Eigen::Dynamic, N == 1 ? 1 : Eigen::Dynamic,
41 Eigen::AutoAlign|(C >= 0 && N > 1 ? Eigen::RowMajor : Eigen::ColMajor)
45template <
typename T,
int N,
int C>
47 typedef typename boost::remove_const<T>::type Scalar;
49 Scalar, Eigen::Dynamic, N == 1 ? 1 : Eigen::Dynamic,
50 Eigen::AutoAlign|(C >= 0 && N > 1 ? Eigen::RowMajor : Eigen::ColMajor)
54template <typename T, int N, int C, typename XprKind, bool AddConst=boost::is_const<T>::value>
57template <
typename T,
int N,
int C,
typename XprKind>
62template <
typename T,
int N,
int C,
typename XprKind>
67template <
typename T,
int N,
int C,
typename XprKind>
71template <
typename T,
typename XprKind>
81 return Type(array.
getData(), array.template getSize<0>(),
82 Eigen::InnerStride<>(array.template getStride<0>()));
88template <
typename T,
typename XprKind>
97 return Type(array.
getData(), array.template getSize<0>());
103template <
typename T,
typename XprKind>
112 return Type(array.
getData(), array.template getSize<0>());
118template <
typename T,
typename XprKind>
124 Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>
128 return Type(array.
getData(), array.template getSize<0>(), array.template getSize<1>(),
129 Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>(
130 array.template getStride<0>(), array.template getStride<1>()
137template <
typename T,
typename XprKind>
147 return Type(array.
getData(), array.template getSize<0>(), array.template getSize<1>(),
148 Eigen::OuterStride<>(array.template getStride<0>()));
154template <
typename T,
typename XprKind>
163 return Type(array.
getData(), array.template getSize<0>(), array.template getSize<1>());
169template <
typename T,
typename XprKind>
179 return Type(array.
getData(), array.template getSize<0>(), array.template getSize<1>(),
180 Eigen::OuterStride<>(array.template getStride<1>()));
186template <
typename T,
typename XprKind>
195 return Type(array.
getData(), array.template getSize<0>(), array.template getSize<1>());
230template <
typename XprKind,
typename T,
int N,
int C>
236template <
typename XprKind,
typename T,
int N,
int C>
237typename detail::SelectEigenMap<T, N, C, XprKind>::Type
238asEigen(ArrayRef<T, N, C>
const & a) {
239 return detail::SelectEigenMap<T, N, C, XprKind>::apply(a);
242template <
typename T,
int N,
int C>
243typename detail::SelectEigenMap<T, N, C, Eigen::ArrayXpr>::Type
244asEigenArray(Array<T, N, C>
const & a) {
245 return asEigen<Eigen::ArrayXpr, T, N, C>(a);
248template <
typename T,
int N,
int C>
249typename detail::SelectEigenMap<T, N, C, Eigen::ArrayXpr>::Type
250asEigenArray(ArrayRef<T, N, C>
const & a) {
251 return asEigen<Eigen::ArrayXpr, T, N, C>(a);
254template <
typename T,
int N,
int C>
255typename detail::SelectEigenMap<T, N, C, Eigen::MatrixXpr>::Type
256asEigenMatrix(Array<T, N, C>
const & a) {
257 return asEigen<Eigen::MatrixXpr, T, N, C>(a);
260template <
typename T,
int N,
int C>
261typename detail::SelectEigenMap<T, N, C, Eigen::MatrixXpr>::Type
262asEigenMatrix(ArrayRef<T, N, C>
const & a) {
263 return asEigen<Eigen::MatrixXpr, T, N, C>(a);
Element * getData() const
Return a raw pointer to the first element of the array.
Definition ArrayBase.h:130
A multidimensional strided array.
Definition Array.h:35
detail::SelectEigenMap< T, N, C, XprKind >::Type asEigen(Array< T, N, C > const &a)
Definition eigen.h:232
Forward declarations for ndarray/eigen interface.
Main public header file for ndarray.