10 #ifndef EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H 11 #define EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H 13 #include <initializer_list> 16 #include "./InternalHeaderCheck.h" 27 template <
typename Derived,
int N>
29 typedef std::initializer_list<
typename Initializer<Derived, N - 1>::InitList> InitList;
32 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
33 const InitList& vals) {
35 for (
const auto& v : vals) {
36 (*indices)[traits<Derived>::NumDimensions - N] = i++;
42 template <
typename Derived>
44 typedef std::initializer_list<typename traits<Derived>::Scalar> InitList;
47 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>* indices,
48 const InitList& vals) {
51 for (
const auto& v : vals) {
52 (*indices)[traits<Derived>::NumDimensions - 1] = i++;
53 tensor.coeffRef(*indices) = v;
58 template <
typename Derived>
59 struct Initializer<Derived, 0> {
60 typedef typename traits<Derived>::Scalar InitList;
62 static void run(TensorEvaluator<Derived, DefaultDevice>& tensor,
63 Eigen::array<
typename traits<Derived>::Index, traits<Derived>::NumDimensions>*,
const InitList& v) {
64 tensor.coeffRef(0) = v;
68 template <
typename Derived,
int N>
69 void initialize_tensor(TensorEvaluator<Derived, DefaultDevice>& tensor,
70 const typename Initializer<Derived, traits<Derived>::NumDimensions>::InitList& vals) {
71 Eigen::array<typename traits<Derived>::Index, traits<Derived>::NumDimensions> indices;
72 Initializer<Derived, traits<Derived>::NumDimensions>::run(tensor, &indices, vals);
78 #endif // EIGEN_CXX11_TENSOR_TENSOR_INITIALIZER_H Namespace containing all symbols from the Eigen library.
The tensor evaluator class.
Definition: TensorEvaluator.h:30
Helper template to initialize Tensors from std::initializer_lists.
Definition: TensorInitializer.h:28