16 #ifndef OPENKALMAN_EIGEN_TRAITS_TENSORFIXEDSIZE_HPP 17 #define OPENKALMAN_EIGEN_TRAITS_TENSORFIXEDSIZE_HPP 22 template<
typename S,
typename Dims,
int options,
typename IndexType>
32 template<
typename Arg,
typename N>
35 if constexpr (values::fixed<N>)
38 return static_cast<std::size_t
>(arg.dimension(n));
48 #ifdef __cpp_lib_concepts 49 template<
typename Arg, std::convertible_to<IndexType>...I> requires (
sizeof...(I) == Dims::count)
51 template<
typename Arg,
typename...I, std::enable_if_t<(std::is_convertible_v<I, IndexType> and ...) and
52 (
sizeof...(I) == Dims::count),
int> = 0>
54 static constexpr decltype(
auto)
57 if constexpr ((Eigen::internal::traits<std::decay_t<Arg>>::Flags & Eigen::LvalueBit) != 0)
58 return std::forward<Arg>(arg).coeffRef(static_cast<IndexType>(i)...);
60 return std::forward<Arg>(arg).coeff(static_cast<IndexType>(i)...);
64 #ifdef __cpp_lib_concepts 65 template<
typename Arg, std::convertible_to<IndexType>...I> requires (
sizeof...(I) == Dims::count) and
66 ((Eigen::internal::traits<std::decay_t<Arg>>::Flags & Eigen::LvalueBit) != 0x0)
68 template<
typename Arg,
typename...I, std::enable_if_t<(std::is_convertible_v<I, IndexType> and ...) and
69 (
sizeof...(I) == Dims::count) and ((Eigen::internal::traits<std::decay_t<Arg>>::Flags & Eigen::LvalueBit) != 0x0),
int> = 0>
74 arg.coeffRef(static_cast<IndexType>(i)...) = s;
78 static constexpr
bool is_writable =
true;
80 template<
typename Arg>
81 static constexpr
auto *
const 82 raw_data(Arg& arg) {
return arg.data(); }
90 #endif //OPENKALMAN_EIGEN_TRAITS_TENSORFIXEDSIZE_HPP Definition: indexible_object_traits.hpp:36
Definition: basics.hpp:41
Row-major storage (C or C++ style): contiguous storage in which the right-most index has a stride of ...
typename scalar_type_of< T >::type scalar_type_of_t
helper template for scalar_type_of.
Definition: scalar_type_of.hpp:54
Definition: eigen-comma-initializers.hpp:20
Trait object providing get and set routines for Eigen tensors.
Definition: eigen-tensor-forward-declarations.hpp:114
constexpr bool value
T is numerical value or is reducible to a numerical value.
Definition: value.hpp:31
Column-major storage (Fortran, Matlab, or Eigen style): contiguous storage in which the left-most ext...
Layout
The layout format of a multidimensional array.
Definition: global-definitions.hpp:47
constexpr auto get_vector_space_descriptor(const T &t, const N &n)
Get the coordinates::pattern object for index N of indexible object T.
Definition: get_vector_space_descriptor.hpp:56