MCPcopy Create free account
hub / github.com/PX4/eigen / PlainObjectBase

Class PlainObjectBase

Eigen/src/Core/PlainObjectBase.h:98–913  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96#else
97template<typename Derived>
98class PlainObjectBase : public internal::dense_xpr_base<Derived>::type
99#endif
100{
101 public:
102 enum { Options = internal::traits<Derived>::Options };
103 typedef typename internal::dense_xpr_base<Derived>::type Base;
104
105 typedef typename internal::traits<Derived>::StorageKind StorageKind;
106 typedef typename internal::traits<Derived>::Scalar Scalar;
107
108 typedef typename internal::packet_traits<Scalar>::type PacketScalar;
109 typedef typename NumTraits<Scalar>::Real RealScalar;
110 typedef Derived DenseType;
111
112 using Base::RowsAtCompileTime;
113 using Base::ColsAtCompileTime;
114 using Base::SizeAtCompileTime;
115 using Base::MaxRowsAtCompileTime;
116 using Base::MaxColsAtCompileTime;
117 using Base::MaxSizeAtCompileTime;
118 using Base::IsVectorAtCompileTime;
119 using Base::Flags;
120
121 template<typename PlainObjectType, int MapOptions, typename StrideType> friend class Eigen::Map;
122 friend class Eigen::Map<Derived, Unaligned>;
123 typedef Eigen::Map<Derived, Unaligned> MapType;
124 friend class Eigen::Map<const Derived, Unaligned>;
125 typedef const Eigen::Map<const Derived, Unaligned> ConstMapType;
126#if EIGEN_MAX_ALIGN_BYTES>0
127 // for EIGEN_MAX_ALIGN_BYTES==0, AlignedMax==Unaligned, and many compilers generate warnings for friend-ing a class twice.
128 friend class Eigen::Map<Derived, AlignedMax>;
129 friend class Eigen::Map<const Derived, AlignedMax>;
130#endif
131 typedef Eigen::Map<Derived, AlignedMax> AlignedMapType;
132 typedef const Eigen::Map<const Derived, AlignedMax> ConstAlignedMapType;
133 template<typename StrideType> struct StridedMapType { typedef Eigen::Map<Derived, Unaligned, StrideType> type; };
134 template<typename StrideType> struct StridedConstMapType { typedef Eigen::Map<const Derived, Unaligned, StrideType> type; };
135 template<typename StrideType> struct StridedAlignedMapType { typedef Eigen::Map<Derived, AlignedMax, StrideType> type; };
136 template<typename StrideType> struct StridedConstAlignedMapType { typedef Eigen::Map<const Derived, AlignedMax, StrideType> type; };
137
138 protected:
139 DenseStorage<Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options> m_storage;
140
141 public:
142 enum { NeedsToAlign = (SizeAtCompileTime != Dynamic) && (internal::traits<Derived>::Alignment>0) };
143 EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
144
145 EIGEN_DEVICE_FUNC
146 Base& base() { return *static_cast<Base*>(this); }
147 EIGEN_DEVICE_FUNC
148 const Base& base() const { return *static_cast<const Base*>(this); }
149
150 EIGEN_DEVICE_FUNC
151 EIGEN_STRONG_INLINE Index rows() const { return m_storage.rows(); }
152 EIGEN_DEVICE_FUNC
153 EIGEN_STRONG_INLINE Index cols() const { return m_storage.cols(); }
154
155 /** This is an overloaded version of DenseCoeffsBase<Derived,ReadOnlyAccessors>::coeff(Index,Index) const

Callers

nothing calls this directly

Calls 6

call_assignment_no_aliasFunction · 0.85
resizeFunction · 0.70
call_assignmentFunction · 0.70
dataMethod · 0.45
colsMethod · 0.45
rowsMethod · 0.45

Tested by

no test coverage detected