Fix direct access for sparse blocks.

libeigen/eigen!2202
This commit is contained in:
Antonio Sánchez
2026-02-23 20:00:52 +00:00
committed by Rasmus Munk Larsen
parent d537b51ede
commit f3f2c676b5
2 changed files with 42 additions and 0 deletions

View File

@@ -68,6 +68,32 @@ class BlockImpl<XprType, BlockRows, BlockCols, true, Sparse>
Index blockRows() const { return IsRowMajor ? m_outerSize.value() : m_matrix.rows(); }
Index blockCols() const { return IsRowMajor ? m_matrix.cols() : m_outerSize.value(); }
inline const Scalar* valuePtr() const { return m_matrix.valuePtr(); }
inline Scalar* valuePtr() { return m_matrix.valuePtr(); }
inline const StorageIndex* innerIndexPtr() const { return m_matrix.innerIndexPtr(); }
inline StorageIndex* innerIndexPtr() { return m_matrix.innerIndexPtr(); }
inline const StorageIndex* outerIndexPtr() const {
const StorageIndex* p = m_matrix.outerIndexPtr();
return p ? p + m_outerStart : 0;
}
inline StorageIndex* outerIndexPtr() {
StorageIndex* p = m_matrix.outerIndexPtr();
return p ? p + m_outerStart : 0;
}
inline const StorageIndex* innerNonZeroPtr() const {
const StorageIndex* p = m_matrix.innerNonZeroPtr();
return p ? p + m_outerStart : 0;
}
inline StorageIndex* innerNonZeroPtr() {
StorageIndex* p = m_matrix.innerNonZeroPtr();
return p ? p + m_outerStart : 0;
}
bool isCompressed() const { return m_matrix.innerNonZeroPtr() == 0; }
protected:
typename internal::ref_selector<XprType>::non_const_type m_matrix;
Index m_outerStart;