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 
24 namespace 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
Eigen
Definition: Elements.h:36
armarx::VariantType::Quaternion
const VariantTypeId Quaternion
Definition: Pose.h:39
Eigen::ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES
ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(int, i) ax_eigen_fwd_make_matrix_and_vector_ALL_SIZES(float
armarx::Quaternion< float, 0 >
Eigen::Quaterniond
Quaternion< double, 0 > Quaterniond
Definition: EigenForwardDeclarations.h:62
Eigen::Matrix
Definition: EigenForwardDeclarations.h:27