eigenpy 3.12.0
Bindings between Numpy and Eigen using Boost.Python
Loading...
Searching...
No Matches
eigenpy.hpp
1/*
2 * Copyright 2014-2019, CNRS
3 * Copyright 2018-2024, INRIA
4 */
5
6#ifndef __eigenpy_eigenpy_hpp__
7#define __eigenpy_eigenpy_hpp__
8
9#include "eigenpy/fwd.hpp"
10#include "eigenpy/eigen-typedef.hpp"
11#include "eigenpy/expose.hpp"
12
14#include "eigenpy/std-unique-ptr.hpp"
15
16#define ENABLE_SPECIFIC_MATRIX_TYPE(TYPE) \
17 ::eigenpy::enableEigenPySpecific<TYPE>();
18
19namespace eigenpy {
20
21/* Enable Eigen-Numpy serialization for a set of standard MatrixBase instance.
22 */
23void EIGENPY_DLLAPI enableEigenPy();
24
25bool EIGENPY_DLLAPI withTensorSupport();
26
27/* Enable the Eigen--Numpy serialization for the templated MatType class.*/
28template <typename MatType>
29void enableEigenPySpecific();
30
31template <typename Scalar, int Options>
32EIGEN_DONT_INLINE void exposeType() {
33 EIGENPY_MAKE_TYPEDEFS_ALL_SIZES(Scalar, Options, s);
34
35 EIGENPY_UNUSED_TYPE(Vector1s);
36 EIGENPY_UNUSED_TYPE(RowVector1s);
37 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix1s);
38
39 ENABLE_SPECIFIC_MATRIX_TYPE(Vector2s);
40 ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2s);
41 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2s);
42 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xs);
43 ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2s);
44
45 ENABLE_SPECIFIC_MATRIX_TYPE(Vector3s);
46 ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3s);
47 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3s);
48 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xs);
49 ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3s);
50
51 ENABLE_SPECIFIC_MATRIX_TYPE(Vector4s);
52 ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4s);
53 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4s);
54 ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xs);
55 ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4s);
56
57 ENABLE_SPECIFIC_MATRIX_TYPE(VectorXs);
58 ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXs);
59 ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXs);
60
61 enableEigenPySpecific<SparseMatrixXs>();
62}
63
64template <typename Scalar>
65EIGEN_DONT_INLINE void exposeType() {
67
68#ifdef EIGENPY_WITH_TENSOR_SUPPORT
69 enableEigenPySpecific<Eigen::Tensor<Scalar, 1>>();
70 enableEigenPySpecific<Eigen::Tensor<Scalar, 2>>();
71 enableEigenPySpecific<Eigen::Tensor<Scalar, 3>>();
72#endif
73}
74
75} // namespace eigenpy
76
77#include "eigenpy/details.hpp"
78
79#endif // ifndef __eigenpy_eigenpy_hpp__
EIGEN_DONT_INLINE void exposeType()
Definition eigenpy.hpp:32