TR-mbed 1.0
Loading...
Searching...
No Matches
Map.h
Go to the documentation of this file.
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
5// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
6//
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/.
10
11#ifndef EIGEN_MAP_H
12#define EIGEN_MAP_H
13
14namespace Eigen {
15
16namespace internal {
17template<typename PlainObjectType, int MapOptions, typename StrideType>
18struct traits<Map<PlainObjectType, MapOptions, StrideType> >
19 : public traits<PlainObjectType>
20{
22 enum {
23 PlainObjectTypeInnerSize = ((traits<PlainObjectType>::Flags&RowMajorBit)==RowMajorBit)
24 ? PlainObjectType::ColsAtCompileTime
25 : PlainObjectType::RowsAtCompileTime,
26
27 InnerStrideAtCompileTime = StrideType::InnerStrideAtCompileTime == 0
28 ? int(PlainObjectType::InnerStrideAtCompileTime)
29 : int(StrideType::InnerStrideAtCompileTime),
30 OuterStrideAtCompileTime = StrideType::OuterStrideAtCompileTime == 0
31 ? (InnerStrideAtCompileTime==Dynamic || PlainObjectTypeInnerSize==Dynamic
32 ? Dynamic
33 : int(InnerStrideAtCompileTime) * int(PlainObjectTypeInnerSize))
34 : int(StrideType::OuterStrideAtCompileTime),
36 Flags0 = TraitsBase::Flags & (~NestByRefBit),
37 Flags = is_lvalue<PlainObjectType>::value ? int(Flags0) : (int(Flags0) & ~LvalueBit)
38 };
39private:
40 enum { Options }; // Expressions don't have Options
41};
42}
43
94template<typename PlainObjectType, int MapOptions, typename StrideType> class Map
95 : public MapBase<Map<PlainObjectType, MapOptions, StrideType> >
96{
97 public:
98
101
102 typedef typename Base::PointerType PointerType;
105 inline PointerType cast_to_pointer_type(PointerArgType ptr) { return ptr; }
106
108 inline Index innerStride() const
109 {
110 return StrideType::InnerStrideAtCompileTime != 0 ? m_stride.inner() : 1;
111 }
112
114 inline Index outerStride() const
115 {
116 return StrideType::OuterStrideAtCompileTime != 0 ? m_stride.outer()
118 : IsVectorAtCompileTime ? (this->size() * innerStride())
119 : int(Flags)&RowMajorBit ? (this->cols() * innerStride())
120 : (this->rows() * innerStride());
121 }
122
129 explicit inline Map(PointerArgType dataPtr, const StrideType& stride = StrideType())
130 : Base(cast_to_pointer_type(dataPtr)), m_stride(stride)
131 {
132 PlainObjectType::Base::_check_template_params();
133 }
134
142 inline Map(PointerArgType dataPtr, Index size, const StrideType& stride = StrideType())
143 : Base(cast_to_pointer_type(dataPtr), size), m_stride(stride)
144 {
145 PlainObjectType::Base::_check_template_params();
146 }
147
156 inline Map(PointerArgType dataPtr, Index rows, Index cols, const StrideType& stride = StrideType())
157 : Base(cast_to_pointer_type(dataPtr), rows, cols), m_stride(stride)
158 {
159 PlainObjectType::Base::_check_template_params();
160 }
161
163
164 protected:
165 StrideType m_stride;
166};
167
168
169} // end namespace Eigen
170
171#endif // EIGEN_MAP_H
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
Definition Macros.h:1283
#define EIGEN_INHERIT_ASSIGNMENT_OPERATORS(Derived)
Definition Macros.h:1231
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar Scalar int size
Definition benchVecAdd.cpp:17
Definition ForwardDeclarations.h:112
A matrix or vector expression mapping an existing array of data.
Definition Map.h:96
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index innerStride() const
Definition Map.h:108
Base::PointerType PointerType
Definition Map.h:102
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerStride() const
Definition Map.h:114
StrideType m_stride
Definition Map.h:165
EIGEN_DEVICE_FUNC Map(PointerArgType dataPtr, Index size, const StrideType &stride=StrideType())
Definition Map.h:142
EIGEN_DEVICE_FUNC Map(PointerArgType dataPtr, Index rows, Index cols, const StrideType &stride=StrideType())
Definition Map.h:156
MapBase< Map > Base
Definition Map.h:99
EIGEN_DEVICE_FUNC Map(PointerArgType dataPtr, const StrideType &stride=StrideType())
Definition Map.h:129
PointerType PointerArgType
Definition Map.h:103
@ AlignedMask
Definition Constants.h:239
const unsigned int LvalueBit
Definition Constants.h:144
const unsigned int RowMajorBit
Definition Constants.h:66
return int(ret)+1
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
const unsigned int NestByRefBit
Definition Constants.h:169
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
const int Dynamic
Definition Constants.h:22
Definition BandTriangularSolver.h:13
Definition XprHelper.h:660
Definition ForwardDeclarations.h:17