#ifndef EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
#define EIGEN_CXX11_TENSOR_TENSOR_DIMENSIONS_H
#include "./InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <std::ptrdiff_t n, typename Dimension>
struct dget { … };
template <typename Index, std::ptrdiff_t NumIndices, std::ptrdiff_t n, bool RowMajor>
struct fixed_size_tensor_index_linearization_helper { … };
fixed_size_tensor_index_linearization_helper<Index, NumIndices, 0, RowMajor>;
template <typename Index, std::ptrdiff_t n>
struct fixed_size_tensor_index_extraction_helper { … };
fixed_size_tensor_index_extraction_helper<Index, 0>;
}
template <typename std::ptrdiff_t... Indices>
struct Sizes { … };
namespace internal {
template <typename std::ptrdiff_t... Indices>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_prod(const Sizes<Indices...>&) { … }
}
namespace internal {
template <typename Index, std::ptrdiff_t NumIndices, std::ptrdiff_t n, bool RowMajor>
struct tensor_index_linearization_helper { … };
tensor_index_linearization_helper<Index, NumIndices, 0, RowMajor>;
}
template <typename DenseIndex, int NumDims>
struct DSizes : array<DenseIndex, NumDims> { … };
template <typename IndexType, int NumDims>
std::ostream& operator<<(std::ostream& os, const DSizes<IndexType, NumDims>& dims) { … }
namespace internal {
template <typename Index, std::ptrdiff_t NumIndices, std::ptrdiff_t n, bool RowMajor>
struct tensor_vsize_index_linearization_helper { … };
tensor_vsize_index_linearization_helper<Index, NumIndices, 0, RowMajor>;
}
namespace internal {
array_size<const DSizes<DenseIndex, NumDims>>;
array_size<DSizes<DenseIndex, NumDims>>;
array_size<const Sizes<Indices...>>;
array_size<Sizes<Indices...>>;
template <std::ptrdiff_t n, typename std::ptrdiff_t... Indices>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<Indices...>&) { … }
template <std::ptrdiff_t n>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t array_get(const Sizes<>&) { … }
template <typename Dims1, typename Dims2, ptrdiff_t n, ptrdiff_t m>
struct sizes_match_below_dim { … };
sizes_match_below_dim<Dims1, Dims2, n, n>;
sizes_match_below_dim<Dims1, Dims2, 0, 0>;
}
template <typename Dims1, typename Dims2>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool dimensions_match(Dims1 dims1, Dims2 dims2) { … }
}
#endif