4
4
// Copyright (C) 2006-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
5
5
// Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
7
// Eigen is free software; you can redistribute it and/or
8
// modify it under the terms of the GNU Lesser General Public
9
// License as published by the Free Software Foundation; either
10
// version 3 of the License, or (at your option) any later version.
12
// Alternatively, you can redistribute it and/or
13
// modify it under the terms of the GNU General Public License as
14
// published by the Free Software Foundation; either version 2 of
15
// the License, or (at your option) any later version.
17
// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
18
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
20
// GNU General Public License for more details.
22
// You should have received a copy of the GNU Lesser General Public
23
// License and a copy of the GNU General Public License along with
24
// Eigen. If not, see <http://www.gnu.org/licenses/>.
7
// This Source Code Form is subject to the terms of the Mozilla
8
// Public License v. 2.0. If a copy of the MPL was not distributed
9
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
26
11
#ifndef EIGEN_MATRIX_H
27
12
#define EIGEN_MATRIX_H
30
17
* \ingroup Core_Module
154
141
typedef typename Base::PlainObject PlainObject;
156
enum { NeedsToAlign = (!(Options&DontAlign))
157
&& SizeAtCompileTime!=Dynamic && ((static_cast<int>(sizeof(Scalar))*SizeAtCompileTime)%16)==0 };
158
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
160
143
using Base::base;
161
144
using Base::coeffRef;
416
399
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
417
400
#undef EIGEN_MAKE_TYPEDEFS
419
#undef EIGEN_MAKE_TYPEDEFS_LARGE
421
#define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, SizeSuffix) \
422
using Eigen::Matrix##SizeSuffix##TypeSuffix; \
423
using Eigen::Vector##SizeSuffix##TypeSuffix; \
424
using Eigen::RowVector##SizeSuffix##TypeSuffix;
426
#define EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(TypeSuffix) \
427
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 2) \
428
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 3) \
429
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, 4) \
430
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE_AND_SIZE(TypeSuffix, X) \
432
#define EIGEN_USING_MATRIX_TYPEDEFS \
433
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(i) \
434
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(f) \
435
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(d) \
436
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cf) \
437
EIGEN_USING_MATRIX_TYPEDEFS_FOR_TYPE(cd)
401
#undef EIGEN_MAKE_FIXED_TYPEDEFS
403
} // end namespace Eigen
439
405
#endif // EIGEN_MATRIX_H