Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess > Class Template Reference

#include <Block.h>

+ Inheritance diagram for Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >:

Public Types

typedef internal::dense_xpr_base< BlockType >::type Base
 

Public Member Functions

EIGEN_DEVICE_FUNC BlockImpl_dense (XprType &xpr, Index i)
 
EIGEN_DEVICE_FUNC BlockImpl_dense (XprType &xpr, Index startRow, Index startCol)
 
EIGEN_DEVICE_FUNC BlockImpl_dense (XprType &xpr, Index startRow, Index startCol, Index blockRows, Index blockCols)
 
EIGEN_DEVICE_FUNC Index rows () const
 
EIGEN_DEVICE_FUNC Index cols () const
 
EIGEN_DEVICE_FUNC ScalarcoeffRef (Index rowId, Index colId)
 
EIGEN_DEVICE_FUNC const ScalarcoeffRef (Index rowId, Index colId) const
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType coeff (Index rowId, Index colId) const
 
EIGEN_DEVICE_FUNC ScalarcoeffRef (Index index)
 
EIGEN_DEVICE_FUNC const ScalarcoeffRef (Index index) const
 
EIGEN_DEVICE_FUNC const CoeffReturnType coeff (Index index) const
 
template<int LoadMode>
EIGEN_DEVICE_FUNC PacketScalar packet (Index rowId, Index colId) const
 
template<int LoadMode>
EIGEN_DEVICE_FUNC void writePacket (Index rowId, Index colId, const PacketScalar &val)
 
template<int LoadMode>
EIGEN_DEVICE_FUNC PacketScalar packet (Index index) const
 
template<int LoadMode>
EIGEN_DEVICE_FUNC void writePacket (Index index, const PacketScalar &val)
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all_t< XprTypeNested > & nestedExpression () const
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE XprTypenestedExpression ()
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex startRow () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex startCol () const EIGEN_NOEXCEPT
 

Protected Attributes

XprTypeNested m_xpr
 
const internal::variable_if_dynamic< StorageIndex,(XprType::RowsAtCompileTime==1 &&BlockRows==1) ? 0 :Dynamicm_startRow
 
const internal::variable_if_dynamic< StorageIndex,(XprType::ColsAtCompileTime==1 &&BlockCols==1) ? 0 :Dynamicm_startCol
 
const internal::variable_if_dynamic< StorageIndex, RowsAtCompileTime > m_blockRows
 
const internal::variable_if_dynamic< StorageIndex, ColsAtCompileTime > m_blockCols
 

Private Types

typedef Block< XprType, BlockRows, BlockCols, InnerPanel > BlockType
 
typedef internal::ref_selector< XprType >::non_const_type XprTypeNested
 

Detailed Description

template<typename XprType, int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
class Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >

Internal implementation of dense Blocks in the general case.

Member Typedef Documentation

◆ Base

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
typedef internal::dense_xpr_base<BlockType>::type Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::Base

◆ BlockType

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
typedef Block<XprType, BlockRows, BlockCols, InnerPanel> Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::BlockType
private

◆ XprTypeNested

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
typedef internal::ref_selector<XprType>::non_const_type Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::XprTypeNested
private

Constructor & Destructor Documentation

◆ BlockImpl_dense() [1/3]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::BlockImpl_dense ( XprType xpr,
Index  i 
)
inline

Column or Row constructor

204  : m_xpr(xpr),
205  // It is a row if and only if BlockRows==1 and BlockCols==XprType::ColsAtCompileTime,
206  // and it is a column if and only if BlockRows==XprType::RowsAtCompileTime and BlockCols==1,
207  // all other cases are invalid.
208  // The case a 1x1 matrix seems ambiguous, but the result is the same anyway.
209  m_startRow((BlockRows == 1) && (BlockCols == XprType::ColsAtCompileTime) ? i : 0),
210  m_startCol((BlockRows == XprType::RowsAtCompileTime) && (BlockCols == 1) ? i : 0),
211  m_blockRows(BlockRows == 1 ? 1 : xpr.rows()),
212  m_blockCols(BlockCols == 1 ? 1 : xpr.cols()) {}
int i
Definition: BiCGSTAB_step_by_step.cpp:9
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:116
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: CwiseBinaryOp.h:111
const internal::variable_if_dynamic< StorageIndex, ColsAtCompileTime > m_blockCols
Definition: Block.h:307
XprTypeNested m_xpr
Definition: Block.h:301
const internal::variable_if_dynamic< StorageIndex,(XprType::RowsAtCompileTime==1 &&BlockRows==1) ? 0 :Dynamic > m_startRow
Definition: Block.h:303
const internal::variable_if_dynamic< StorageIndex, RowsAtCompileTime > m_blockRows
Definition: Block.h:306
const internal::variable_if_dynamic< StorageIndex,(XprType::ColsAtCompileTime==1 &&BlockCols==1) ? 0 :Dynamic > m_startCol
Definition: Block.h:305

◆ BlockImpl_dense() [2/3]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::BlockImpl_dense ( XprType xpr,
Index  startRow,
Index  startCol 
)
inline

Fixed-size constructor

217  : m_xpr(xpr), m_startRow(startRow), m_startCol(startCol), m_blockRows(BlockRows), m_blockCols(BlockCols) {}
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex startRow() const EIGEN_NOEXCEPT
Definition: Block.h:292
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex startCol() const EIGEN_NOEXCEPT
Definition: Block.h:296

◆ BlockImpl_dense() [3/3]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::BlockImpl_dense ( XprType xpr,
Index  startRow,
Index  startCol,
Index  blockRows,
Index  blockCols 
)
inline

Dynamic-size constructor

223  : m_xpr(xpr), m_startRow(startRow), m_startCol(startCol), m_blockRows(blockRows), m_blockCols(blockCols) {}

Member Function Documentation

◆ coeff() [1/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC const CoeffReturnType Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeff ( Index  index) const
inline
252  {
253  return m_xpr.coeff(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
254  m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
255  }
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR T value()
Definition: XprHelper.h:161

◆ coeff() [2/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CoeffReturnType Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeff ( Index  rowId,
Index  colId 
) const
inline
237  {
238  return m_xpr.coeff(rowId + m_startRow.value(), colId + m_startCol.value());
239  }

◆ coeffRef() [1/4]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Scalar& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeffRef ( Index  index)
inline
241  {
243  return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
244  m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
245  }
#define EIGEN_STATIC_ASSERT_LVALUE(Derived)
Definition: StaticAssert.h:87
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:79

References EIGEN_STATIC_ASSERT_LVALUE.

◆ coeffRef() [2/4]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC const Scalar& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeffRef ( Index  index) const
inline
247  {
248  return m_xpr.coeffRef(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
249  m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
250  }

◆ coeffRef() [3/4]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Scalar& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeffRef ( Index  rowId,
Index  colId 
)
inline
228  {
230  return m_xpr.coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
231  }

References EIGEN_STATIC_ASSERT_LVALUE.

◆ coeffRef() [4/4]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC const Scalar& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::coeffRef ( Index  rowId,
Index  colId 
) const
inline
233  {
234  return m_xpr.derived().coeffRef(rowId + m_startRow.value(), colId + m_startCol.value());
235  }

◆ cols()

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Index Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::cols ( ) const
inline

◆ nestedExpression() [1/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE XprType& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::nestedExpression ( )
inline
290 { return m_xpr; }

◆ nestedExpression() [2/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const internal::remove_all_t<XprTypeNested>& Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::nestedExpression ( ) const
inline
286  {
287  return m_xpr;
288  }

◆ packet() [1/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
template<int LoadMode>
EIGEN_DEVICE_FUNC PacketScalar Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::packet ( Index  index) const
inline
268  {
269  return m_xpr.template packet<Unaligned>(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
270  m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0));
271  }

◆ packet() [2/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
template<int LoadMode>
EIGEN_DEVICE_FUNC PacketScalar Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::packet ( Index  rowId,
Index  colId 
) const
inline
258  {
259  return m_xpr.template packet<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value());
260  }

◆ rows()

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC Index Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::rows ( ) const
inline

◆ startCol()

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::startCol ( ) const
inline
296  {
297  return m_startCol.value();
298  }

◆ startRow()

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR StorageIndex Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::startRow ( ) const
inline
292  {
293  return m_startRow.value();
294  }

◆ writePacket() [1/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
template<int LoadMode>
EIGEN_DEVICE_FUNC void Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::writePacket ( Index  index,
const PacketScalar &  val 
)
inline
274  {
275  m_xpr.template writePacket<Unaligned>(m_startRow.value() + (RowsAtCompileTime == 1 ? 0 : index),
276  m_startCol.value() + (RowsAtCompileTime == 1 ? index : 0), val);
277  }
val
Definition: calibrate.py:119

References calibrate::val.

◆ writePacket() [2/2]

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
template<int LoadMode>
EIGEN_DEVICE_FUNC void Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::writePacket ( Index  rowId,
Index  colId,
const PacketScalar &  val 
)
inline
263  {
264  m_xpr.template writePacket<Unaligned>(rowId + m_startRow.value(), colId + m_startCol.value(), val);
265  }

References calibrate::val.

Member Data Documentation

◆ m_blockCols

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
const internal::variable_if_dynamic<StorageIndex, ColsAtCompileTime> Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::m_blockCols
protected

◆ m_blockRows

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
const internal::variable_if_dynamic<StorageIndex, RowsAtCompileTime> Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::m_blockRows
protected

◆ m_startCol

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
const internal::variable_if_dynamic<StorageIndex, (XprType::ColsAtCompileTime == 1 && BlockCols == 1) ? 0 : Dynamic> Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::m_startCol
protected

◆ m_startRow

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
const internal::variable_if_dynamic<StorageIndex, (XprType::RowsAtCompileTime == 1 && BlockRows == 1) ? 0 : Dynamic> Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::m_startRow
protected

◆ m_xpr

template<typename XprType , int BlockRows, int BlockCols, bool InnerPanel, bool HasDirectAccess>
XprTypeNested Eigen::internal::BlockImpl_dense< XprType, BlockRows, BlockCols, InnerPanel, HasDirectAccess >::m_xpr
protected

The documentation for this class was generated from the following file: