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) \ 62using Eigen::Matrix##SizeSuffix##TypeSuffix; \ 63using Eigen::Vector##SizeSuffix##TypeSuffix; \ 64using Eigen::RowVector##SizeSuffix##TypeSuffix; 65 66#define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(TypeSuffix) \ 67EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \ 68EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \ 69EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \ 70EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \ 71 72#define EIGEN_USING_MATRIX_TYPEDEFS \ 73EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(i) \ 74EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(f) \ 75EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(d) \ 76EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cf) \ 77EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cd) 78 79#define USING_PART_OF_NAMESPACE_EIGEN \ 80EIGEN_USING_MATRIX_TYPEDEFS \ 81using Eigen::Matrix; \ 82using Eigen::MatrixBase; \ 83using Eigen::ei_random; \ 84using Eigen::ei_real; \ 85using Eigen::ei_imag; \ 86using Eigen::ei_conj; \ 87using Eigen::ei_abs; \ 88using Eigen::ei_abs2; \ 89using Eigen::ei_sqrt; \ 90using Eigen::ei_exp; \ 91using Eigen::ei_log; \ 92using Eigen::ei_sin; \ 93using Eigen::ei_cos; 94 95#endif // EIGEN2SUPPORT_H 96