mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-20 20:04:26 +08:00
backport: init-by-zero option: resize with same size must be a NOP
This commit is contained in:
parent
6aad7f80ff
commit
153557527e
@ -238,8 +238,14 @@ class Matrix
|
|||||||
&& (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
|
&& (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
|
||||||
&& (MaxColsAtCompileTime == Dynamic || MaxColsAtCompileTime >= cols)
|
&& (MaxColsAtCompileTime == Dynamic || MaxColsAtCompileTime >= cols)
|
||||||
&& (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
|
&& (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
|
||||||
|
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
||||||
|
int size = rows*cols;
|
||||||
|
bool size_changed = size != this->size();
|
||||||
|
m_storage.resize(size, rows, cols);
|
||||||
|
if(size_changed) EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
||||||
|
#else
|
||||||
m_storage.resize(rows*cols, rows, cols);
|
m_storage.resize(rows*cols, rows, cols);
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Resizes \c *this to a vector of length \a size
|
/** Resizes \c *this to a vector of length \a size
|
||||||
@ -249,11 +255,17 @@ class Matrix
|
|||||||
inline void resize(int size)
|
inline void resize(int size)
|
||||||
{
|
{
|
||||||
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Matrix)
|
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Matrix)
|
||||||
|
ei_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == size);
|
||||||
|
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
||||||
|
bool size_changed = size != this->size();
|
||||||
|
#endif
|
||||||
if(RowsAtCompileTime == 1)
|
if(RowsAtCompileTime == 1)
|
||||||
m_storage.resize(size, 1, size);
|
m_storage.resize(size, 1, size);
|
||||||
else
|
else
|
||||||
m_storage.resize(size, size, 1);
|
m_storage.resize(size, size, 1);
|
||||||
EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
#ifdef EIGEN_INITIALIZE_MATRICES_BY_ZERO
|
||||||
|
if(size_changed) EIGEN_INITIALIZE_BY_ZERO_IF_THAT_OPTION_IS_ENABLED
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Copies the value of the expression \a other into \c *this with automatic resizing.
|
/** Copies the value of the expression \a other into \c *this with automatic resizing.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user