Skip to content

Commit 9aa210f

Browse files
committed
core: reduce the memory overload when compiling
1 parent 0f8685c commit 9aa210f

10 files changed

+130
-172
lines changed

CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ SET(${PROJECT_NAME}_SOURCES
141141
${${PROJECT_NAME}_DECOMPOSITIONS_SOURCES}
142142
src/exception.cpp
143143
src/eigenpy.cpp
144+
src/matrix-float.cpp
145+
src/matrix-complex-float.cpp
146+
src/matrix-complex-double.cpp
147+
src/matrix-double.cpp
148+
src/matrix-long-double.cpp
149+
src/matrix-complex-long-double.cpp
150+
src/matrix-int.cpp
151+
src/matrix-long.cpp
144152
src/angle-axis.cpp
145153
src/quaternion.cpp
146154
src/geometry-conversion.cpp

src/eigenpy.cpp

Lines changed: 18 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,6 @@
66
#include "eigenpy/eigenpy.hpp"
77
#include <stdlib.h>
88

9-
namespace Eigen
10-
{
11-
#define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
12-
/** \ingroup matrixtypedefs */ \
13-
typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \
14-
/** \ingroup matrixtypedefs */ \
15-
typedef Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \
16-
/** \ingroup matrixtypedefs */ \
17-
typedef Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;
18-
19-
#define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
20-
/** \ingroup matrixtypedefs */ \
21-
typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix; \
22-
/** \ingroup matrixtypedefs */ \
23-
typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix;
24-
25-
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
26-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
27-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
28-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
29-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
30-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
31-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
32-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
33-
34-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(long double, ld)
35-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<long double>, cld)
36-
37-
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
38-
#undef EIGEN_MAKE_TYPEDEFS
39-
#undef EIGEN_MAKE_FIXED_TYPEDEFS
40-
}
419

4210
namespace eigenpy
4311
{
@@ -47,6 +15,16 @@ namespace eigenpy
4715
srand(seed_value);
4816
}
4917

18+
void exposeMatrixInt();
19+
void exposeMatrixLong();
20+
void exposeMatrixFloat();
21+
void exposeMatrixDouble();
22+
void exposeMatrixLongDouble();
23+
24+
void exposeMatrixComplexFloat();
25+
void exposeMatrixComplexDouble();
26+
void exposeMatrixComplexLongDouble();
27+
5028
/* Enable Eigen-Numpy serialization for a set of standard MatrixBase instances. */
5129
void enableEigenPy()
5230
{
@@ -70,147 +48,15 @@ namespace eigenpy
7048
bp::def("seed",&seed,bp::arg("seed_value"),
7149
"Initialize the pseudo-random number generator with the argument seed_value.");
7250

73-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2ld);
74-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2d);
75-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2f);
76-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2i);
77-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cf);
78-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cd);
79-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cld);
80-
81-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xld);
82-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xd);
83-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xf);
84-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xi);
85-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcf);
86-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcd);
87-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcld);
88-
89-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3ld);
90-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3d);
91-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3f);
92-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3i);
93-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cf);
94-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cd);
95-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cld);
96-
97-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xd);
98-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xf);
99-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xi);
100-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcf);
101-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcd);
102-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcld);
103-
104-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4ld);
105-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4d);
106-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4f);
107-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4i);
108-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cf);
109-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cd);
110-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cld);
111-
112-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xld);
113-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xd);
114-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xf);
115-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xi);
116-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcf);
117-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcd);
118-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcld);
119-
120-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2ld);
121-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2d);
122-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2f);
123-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2i);
124-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cf);
125-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cd);
126-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cld);
127-
128-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3ld);
129-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3d);
130-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3f);
131-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3i);
132-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cf);
133-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cd);
134-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cld);
135-
136-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4ld);
137-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4d);
138-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4f);
139-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4i);
140-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cf);
141-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cd);
142-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cld);
143-
144-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXld);
145-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXd);
146-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXf);
147-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXi);
148-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcf);
149-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcd);
150-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcld);
151-
152-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2ld);
153-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2d);
154-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2f);
155-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2i);
156-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cf);
157-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cd);
158-
159-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3ld);
160-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3d);
161-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3f);
162-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3i);
163-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cf);
164-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cd);
165-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cld);
166-
167-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4ld);
168-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4d);
169-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4f);
170-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4i);
171-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cf);
172-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cd);
173-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cld);
174-
175-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXld);
176-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXd);
177-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXf);
178-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXi);
179-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcf);
180-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcd);
181-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcld);
182-
183-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2ld);
184-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2d);
185-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2f);
186-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2i);
187-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cf);
188-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cd);
189-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cld);
190-
191-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3ld);
192-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3d);
193-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3f);
194-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3i);
195-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cf);
196-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cd);
197-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cld);
198-
199-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4ld);
200-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4d);
201-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4f);
202-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4i);
203-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cf);
204-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cd);
205-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cld);
51+
exposeMatrixInt();
52+
exposeMatrixLong();
53+
exposeMatrixFloat();
54+
exposeMatrixDouble();
55+
exposeMatrixLongDouble();
20656

207-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXld);
208-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXd);
209-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXf);
210-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXi);
211-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcf);
212-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcd);
213-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcld);
57+
exposeMatrixComplexFloat();
58+
exposeMatrixComplexDouble();
59+
exposeMatrixComplexLongDouble();
21460
}
21561

21662
} // namespace eigenpy

src/matrix-complex-double.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixComplexDouble()
10+
{
11+
exposeType<std::complex<double> >();
12+
}
13+
}

src/matrix-complex-float.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixComplexFloat()
10+
{
11+
exposeType<std::complex<float> >();
12+
}
13+
}

src/matrix-complex-long-double.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixComplexLongDouble()
10+
{
11+
exposeType<std::complex<long double> >();
12+
}
13+
}

src/matrix-double.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixDouble()
10+
{
11+
exposeType<double>();
12+
}
13+
}

src/matrix-float.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixFloat()
10+
{
11+
exposeType<float>();
12+
}
13+
}

src/matrix-int.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixInt()
10+
{
11+
exposeType<int>();
12+
}
13+
}

src/matrix-long-double.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixLongDouble()
10+
{
11+
exposeType<long double>();
12+
}
13+
}

src/matrix-long.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixLong()
10+
{
11+
exposeType<long>();
12+
}
13+
}

0 commit comments

Comments
 (0)