| 96 | #else |
| 97 | template<typename Derived> |
| 98 | class 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 |
nothing calls this directly
no test coverage detected