MOAB
4.9.3pre
|
#include <AmbiVector.h>
Public Types | |
typedef _Scalar | Scalar |
typedef NumTraits< Scalar >::Real | RealScalar |
Public Member Functions | |
Iterator (const AmbiVector &vec, const RealScalar &epsilon=0) | |
StorageIndex | index () const |
Scalar | value () const |
operator bool () const | |
Iterator & | operator++ () |
Protected Attributes | |
const AmbiVector & | m_vector |
StorageIndex | m_currentEl |
RealScalar | m_epsilon |
StorageIndex | m_cachedIndex |
Scalar | m_cachedValue |
bool | m_isDense |
Iterator over the nonzero coefficients
Definition at line 283 of file AmbiVector.h.
typedef NumTraits<Scalar>::Real Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::RealScalar |
Definition at line 287 of file AmbiVector.h.
typedef _Scalar Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::Scalar |
Definition at line 286 of file AmbiVector.h.
Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::Iterator | ( | const AmbiVector & | vec, |
const RealScalar & | epsilon = 0 |
||
) | [inline, explicit] |
Default constructor
vec | the vector on which we iterate |
epsilon | the minimal value used to prune zero coefficients. In practice, all coefficients having a magnitude smaller than epsilon are skipped. |
Definition at line 295 of file AmbiVector.h.
: m_vector(vec) { using std::abs; m_epsilon = epsilon; m_isDense = m_vector.m_mode==IsDense; if (m_isDense) { m_currentEl = 0; // this is to avoid a compilation warning m_cachedValue = 0; // this is to avoid a compilation warning m_cachedIndex = m_vector.m_start-1; ++(*this); } else { ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_vector.m_buffer); m_currentEl = m_vector.m_llStart; while (m_currentEl>=0 && abs(llElements[m_currentEl].value)<=m_epsilon) m_currentEl = llElements[m_currentEl].next; if (m_currentEl<0) { m_cachedValue = 0; // this is to avoid a compilation warning m_cachedIndex = -1; } else { m_cachedIndex = llElements[m_currentEl].index; m_cachedValue = llElements[m_currentEl].value; } } }
StorageIndex Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::index | ( | ) | const [inline] |
Definition at line 327 of file AmbiVector.h.
{ return m_cachedIndex; }
Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::operator bool | ( | ) | const [inline] |
Definition at line 330 of file AmbiVector.h.
{ return m_cachedIndex>=0; }
Iterator& Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::operator++ | ( | ) | [inline] |
Definition at line 332 of file AmbiVector.h.
{ using std::abs; if (m_isDense) { do { ++m_cachedIndex; } while (m_cachedIndex<m_vector.m_end && abs(m_vector.m_buffer[m_cachedIndex])<m_epsilon); if (m_cachedIndex<m_vector.m_end) m_cachedValue = m_vector.m_buffer[m_cachedIndex]; else m_cachedIndex=-1; } else { ListEl* EIGEN_RESTRICT llElements = reinterpret_cast<ListEl*>(m_vector.m_buffer); do { m_currentEl = llElements[m_currentEl].next; } while (m_currentEl>=0 && abs(llElements[m_currentEl].value)<m_epsilon); if (m_currentEl<0) { m_cachedIndex = -1; } else { m_cachedIndex = llElements[m_currentEl].index; m_cachedValue = llElements[m_currentEl].value; } } return *this; }
Scalar Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::value | ( | ) | const [inline] |
Definition at line 328 of file AmbiVector.h.
{ return m_cachedValue; }
StorageIndex Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_cachedIndex [protected] |
Definition at line 368 of file AmbiVector.h.
Scalar Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_cachedValue [protected] |
Definition at line 369 of file AmbiVector.h.
StorageIndex Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_currentEl [protected] |
Definition at line 366 of file AmbiVector.h.
RealScalar Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_epsilon [protected] |
Definition at line 367 of file AmbiVector.h.
bool Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_isDense [protected] |
Definition at line 370 of file AmbiVector.h.
const AmbiVector& Eigen::internal::AmbiVector< _Scalar, _StorageIndex >::Iterator::m_vector [protected] |
Definition at line 365 of file AmbiVector.h.