pinocchio
2.4.0-dirty
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
eigen-macros.hpp
1
//
2
// Copyright (c) 2017-2018 CNRS
3
//
4
5
#ifndef __pinocchio_eigen_macros_hpp__
6
#define __pinocchio_eigen_macros_hpp__
7
8
#include "pinocchio/utils/eigen-fix.hpp"
9
11
#define PINOCCHIO_EIGEN_PLAIN_TYPE(D) Eigen::internal::plain_matrix_type< typename pinocchio::helper::argument_type<void(D)>::type >::type
12
14
#define PINOCCHIO_EIGEN_PLAIN_COLUMN_MAJOR_TYPE(D) pinocchio::helper::handle_return_type_without_typename<D,Eigen::internal::plain_matrix_type_column_major>::type
15
17
#define PINOCCHIO_EIGEN_PLAIN_ROW_MAJOR_TYPE(D) pinocchio::helper::handle_return_type_without_typename<D,Eigen::internal::fix::plain_matrix_type_row_major>::type
18
20
#define PINOCCHIO_EIGEN_REF_CONST_TYPE(D) Eigen::internal::ref_selector<D>::type
21
#if EIGEN_VERSION_AT_LEAST(3,2,90)
22
#define PINOCCHIO_EIGEN_REF_TYPE(D) Eigen::internal::ref_selector<D>::non_const_type
23
#else
24
#define PINOCCHIO_EIGEN_REF_TYPE(D) \
25
Eigen::internal::conditional< \
26
bool(Eigen::internal::traits<D>::Flags & Eigen::NestByRefBit), \
27
D &, \
28
D \
29
>::type
30
#endif
31
33
#if EIGEN_VERSION_AT_LEAST(3,3,0)
34
#define PINOCCHIO_EIGEN_DOT_PRODUCT_RETURN_TYPE(D1,D2) \
35
Eigen::ScalarBinaryOpTraits< typename Eigen::internal::traits< D1 >::Scalar, typename Eigen::internal::traits< D2 >::Scalar >::ReturnType
36
#else
37
#define PINOCCHIO_EIGEN_DOT_PRODUCT_RETURN_TYPE(D1,D2) \
38
Eigen::internal::scalar_product_traits<typename Eigen::internal::traits< D1 >::Scalar,typename Eigen::internal::traits< D2 >::Scalar>::ReturnType
39
#endif
40
42
#define PINOCCHIO_EIGEN_CONST_CAST(TYPE,OBJ) const_cast<TYPE &>(OBJ.derived())
43
45
#if defined(PINOCCHIO_WITH_CXX11_SUPPORT) && EIGEN_VERSION_AT_LEAST(3,2,90)
46
#define PINOCCHIO_WITH_EIGEN_TENSOR_MODULE
47
#endif
48
49
#endif // ifndef __pinocchio_eigen_macros_hpp__
src
eigen-macros.hpp
Generated by
1.8.11