EigenForwardDeclarations.h
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package RobotAPI::RobotUnit
17 * @author Raphael Grimm ( raphael dot grimm at kit dot edu )
18 * @date 2017
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22#pragma once
23
24namespace Eigen
25{
26 template <typename Scalar, int Rows, int Cols, int Options, int MaxRows, int MaxCols>
27 class Matrix;
28
29
30#define ax_eigen_fwd_make_matrix_and_vector(Type, TSuff, Size, SzSuff) \
31 typedef Matrix<Type, Size, Size, 0, Size, Size> Matrix##SzSuff##TSuff; \
32 typedef Matrix<Type, Size, 1, 0, Size, 1> Vector##SzSuff##TSuff;
33
34#define ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, Size) \
35 typedef Matrix<Type, Size, -1, 0, Size, -1> Matrix##Size##X##TypeSuffix; \
36 typedef Matrix<Type, -1, Size, 0, -1, Size> Matrix##X##Size##TypeSuffix;
37
38#define ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(Type, TypeSuffix) \
39 ax_eigen_fwd_make_matrix_and_vector( \
40 Type, TypeSuffix, 2, 2) ax_eigen_fwd_make_matrix_and_vector(Type, TypeSuffix, 3, 3) \
41 ax_eigen_fwd_make_matrix_and_vector( \
42 Type, TypeSuffix, 4, 4) ax_eigen_fwd_make_matrix_and_vector(Type, TypeSuffix, 5, 5) \
43 ax_eigen_fwd_make_matrix_and_vector(Type, TypeSuffix, 6, 6) \
44 ax_eigen_fwd_make_matrix_and_vector(Type, TypeSuffix, -1, X) \
45 ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, 2) \
46 ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, 3) \
47 ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, 4) \
48 ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, 5) \
49 ax_eigen_fwd_make_matrix_one_dynamic_dim(Type, TypeSuffix, 6)
50
54
55#undef ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES
56#undef ax_eigen_fwd_make_matrix_and_vector
57#undef ax_eigen_fwd_make_matrix_one_dynamic_dim
58
59 template <typename _Scalar, int _Options>
60 class Quaternion;
61 using Quaternionf = Quaternion<float, 0>;
62 using Quaterniond = Quaternion<double, 0>;
63} // namespace Eigen
#define ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(Type, TypeSuffix)
Quaternion< double, 0 > Quaterniond
Quaternion< float, 0 > Quaternionf
ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(int, i) ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(float