Rewrite file region handling for non-editor mode
[blender.git] / extern / Eigen3 / Eigen / Eigen2Support
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10 #ifndef EIGEN2SUPPORT_H
11 #define EIGEN2SUPPORT_H
12
13 #if (!defined(EIGEN2_SUPPORT)) || (!defined(EIGEN_CORE_H))
14 #error Eigen2 support must be enabled by defining EIGEN2_SUPPORT before including any Eigen header
15 #endif
16
17 #ifndef EIGEN_NO_EIGEN2_DEPRECATED_WARNING
18
19 #if defined(__GNUC__) || defined(__INTEL_COMPILER) || defined(__clang__)
20 #warning "Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3. (Define EIGEN_NO_EIGEN2_DEPRECATED_WARNING to disable this warning)"
21 #else
22 #pragma message ("Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3. (Define EIGEN_NO_EIGEN2_DEPRECATED_WARNING to disable this warning)")
23 #endif
24
25 #endif // EIGEN_NO_EIGEN2_DEPRECATED_WARNING
26
27 #include "src/Core/util/DisableStupidWarnings.h"
28
29 /** \ingroup Support_modules
30   * \defgroup Eigen2Support_Module Eigen2 support module
31   *
32   * \warning Eigen2 support is deprecated in Eigen 3.2.x and it will be removed in Eigen 3.3.
33   *
34   * This module provides a couple of deprecated functions improving the compatibility with Eigen2.
35   * 
36   * To use it, define EIGEN2_SUPPORT before including any Eigen header
37   * \code
38   * #define EIGEN2_SUPPORT
39   * \endcode
40   *
41   */
42
43 #include "src/Eigen2Support/Macros.h"
44 #include "src/Eigen2Support/Memory.h"
45 #include "src/Eigen2Support/Meta.h"
46 #include "src/Eigen2Support/Lazy.h"
47 #include "src/Eigen2Support/Cwise.h"
48 #include "src/Eigen2Support/CwiseOperators.h"
49 #include "src/Eigen2Support/TriangularSolver.h"
50 #include "src/Eigen2Support/Block.h"
51 #include "src/Eigen2Support/VectorBlock.h"
52 #include "src/Eigen2Support/Minor.h"
53 #include "src/Eigen2Support/MathFunctions.h"
54
55
56 #include "src/Core/util/ReenableStupidWarnings.h"
57
58 // Eigen2 used to include iostream
59 #include<iostream>
60
61 #define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
62 using Eigen::Matrix##SizeSuffix##TypeSuffix; \
63 using Eigen::Vector##SizeSuffix##TypeSuffix; \
64 using Eigen::RowVector##SizeSuffix##TypeSuffix;
65
66 #define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(TypeSuffix) \
67 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
68 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
69 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
70 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
71
72 #define EIGEN_USING_MATRIX_TYPEDEFS \
73 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(i) \
74 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(f) \
75 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(d) \
76 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cf) \
77 EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cd)
78
79 #define USING_PART_OF_NAMESPACE_EIGEN \
80 EIGEN_USING_MATRIX_TYPEDEFS \
81 using Eigen::Matrix; \
82 using Eigen::MatrixBase; \
83 using Eigen::ei_random; \
84 using Eigen::ei_real; \
85 using Eigen::ei_imag; \
86 using Eigen::ei_conj; \
87 using Eigen::ei_abs; \
88 using Eigen::ei_abs2; \
89 using Eigen::ei_sqrt; \
90 using Eigen::ei_exp; \
91 using Eigen::ei_log; \
92 using Eigen::ei_sin; \
93 using Eigen::ei_cos;
94
95 #endif // EIGEN2SUPPORT_H