Shapeworks Studio  2.1
Shape analysis software suite
List of all members | Public Types | Public Member Functions | Friends
Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > Class Template Reference

General-purpose arrays with easy API for coefficient-wise operations. More...

#include <Array.h>

+ Inheritance diagram for Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >:
+ Collaboration diagram for Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >:

Public Types

enum  { Options = _Options }
 
typedef PlainObjectBase< ArrayBase
 
typedef Base::PlainObject PlainObject
 
- Public Types inherited from Eigen::PlainObjectBase< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >
enum  
 
enum  
 
typedef internal::dense_xpr_base< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::type Base
 
typedef internal::traits< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::StorageKind StorageKind
 
typedef internal::traits< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::Index Index
 
typedef internal::traits< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >::Scalar Scalar
 
typedef internal::packet_traits< Scalar >::type PacketScalar
 
typedef NumTraits< Scalar >::Real RealScalar
 
typedef Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > DenseType
 
typedef Eigen::Map< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >, Unaligned > MapType
 
typedef const Eigen::Map< const Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >, Unaligned > ConstMapType
 
typedef Eigen::Map< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >, Aligned > AlignedMapType
 
typedef const Eigen::Map< const Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >, Aligned > ConstAlignedMapType
 

Public Member Functions

template<typename OtherDerived >
EIGEN_STRONG_INLINE Arrayoperator= (const EigenBase< OtherDerived > &other)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE Arrayoperator= (const ArrayBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE Arrayoperator= (const Array &other)
 
EIGEN_STRONG_INLINE Array ()
 
 Array (internal::constructor_without_unaligned_array_assert)
 
EIGEN_STRONG_INLINE Array (Index dim)
 
template<typename T0 , typename T1 >
EIGEN_STRONG_INLINE Array (const T0 &val0, const T1 &val1)
 
EIGEN_STRONG_INLINE Array (const Scalar &val0, const Scalar &val1, const Scalar &val2)
 
EIGEN_STRONG_INLINE Array (const Scalar &val0, const Scalar &val1, const Scalar &val2, const Scalar &val3)
 
 Array (const Scalar *data)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE Array (const ArrayBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE Array (const Array &other)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE Array (const ReturnByValue< OtherDerived > &other)
 
template<typename OtherDerived >
EIGEN_STRONG_INLINE Array (const EigenBase< OtherDerived > &other)
 
template<typename OtherDerived >
void swap (ArrayBase< OtherDerived > const &other)
 
Index innerStride () const
 
Index outerStride () const
 
- Public Member Functions inherited from Eigen::PlainObjectBase< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >
Base & base ()
 
const Base & base () const
 
EIGEN_STRONG_INLINE Index rows () const
 
EIGEN_STRONG_INLINE Index cols () const
 
EIGEN_STRONG_INLINE const Scalar & coeff (Index rowId, Index colId) const
 
EIGEN_STRONG_INLINE const Scalar & coeff (Index index) const
 
EIGEN_STRONG_INLINE Scalar & coeffRef (Index rowId, Index colId)
 
EIGEN_STRONG_INLINE Scalar & coeffRef (Index index)
 
EIGEN_STRONG_INLINE const Scalar & coeffRef (Index rowId, Index colId) const
 
EIGEN_STRONG_INLINE const Scalar & coeffRef (Index index) const
 
EIGEN_STRONG_INLINE PacketScalar packet (Index rowId, Index colId) const
 
EIGEN_STRONG_INLINE PacketScalar packet (Index index) const
 
EIGEN_STRONG_INLINE void writePacket (Index rowId, Index colId, const PacketScalar &val)
 
EIGEN_STRONG_INLINE void writePacket (Index index, const PacketScalar &val)
 
EIGEN_STRONG_INLINE const Scalar * data () const
 
EIGEN_STRONG_INLINE Scalar * data ()
 
EIGEN_STRONG_INLINE void resize (Index nbRows, Index nbCols)
 
void resize (Index size)
 
void resize (NoChange_t, Index nbCols)
 
void resize (Index nbRows, NoChange_t)
 
EIGEN_STRONG_INLINE void resizeLike (const EigenBase< OtherDerived > &_other)
 
EIGEN_STRONG_INLINE void conservativeResize (Index nbRows, Index nbCols)
 
EIGEN_STRONG_INLINE void conservativeResize (Index nbRows, NoChange_t)
 
EIGEN_STRONG_INLINE void conservativeResize (NoChange_t, Index nbCols)
 
EIGEN_STRONG_INLINE void conservativeResize (Index size)
 
EIGEN_STRONG_INLINE void conservativeResizeLike (const DenseBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & operator= (const PlainObjectBase &other)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & operator= (const ReturnByValue< OtherDerived > &func)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & operator= (const EigenBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & lazyAssign (const DenseBase< OtherDerived > &other)
 
 PlainObjectBase (internal::constructor_without_unaligned_array_assert)
 
EIGEN_STRONG_INLINE PlainObjectBase (Index a_size, Index nbRows, Index nbCols)
 
EIGEN_STRONG_INLINE PlainObjectBase (const EigenBase< OtherDerived > &other)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setConstant (Index size, const Scalar &value)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setConstant (Index rows, Index cols, const Scalar &value)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setZero (Index size)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setZero (Index rows, Index cols)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setOnes (Index size)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setOnes (Index rows, Index cols)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setRandom (Index size)
 
Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & setRandom (Index rows, Index cols)
 

Friends

template<typename Derived , typename OtherDerived , bool IsVector>
struct internal::conservative_resize_like_impl
 
template<typename MatrixType , typename OtherDerived , bool SwapPointers>
struct internal::matrix_swap_impl
 

Additional Inherited Members

- Static Public Member Functions inherited from Eigen::PlainObjectBase< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >
static EIGEN_STRONG_INLINE void _check_template_params ()
 
static ConstMapType Map (const Scalar *data)
 
static MapType Map (Scalar *data)
 
static ConstMapType Map (const Scalar *data, Index size)
 
static MapType Map (Scalar *data, Index size)
 
static ConstMapType Map (const Scalar *data, Index rows, Index cols)
 
static MapType Map (Scalar *data, Index rows, Index cols)
 
static StridedConstMapType< Stride< Outer, Inner > >::type Map (const Scalar *data, const Stride< Outer, Inner > &stride)
 
static StridedMapType< Stride< Outer, Inner > >::type Map (Scalar *data, const Stride< Outer, Inner > &stride)
 
static StridedConstMapType< Stride< Outer, Inner > >::type Map (const Scalar *data, Index size, const Stride< Outer, Inner > &stride)
 
static StridedMapType< Stride< Outer, Inner > >::type Map (Scalar *data, Index size, const Stride< Outer, Inner > &stride)
 
static StridedConstMapType< Stride< Outer, Inner > >::type Map (const Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
 
static StridedMapType< Stride< Outer, Inner > >::type Map (Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
 
static ConstAlignedMapType MapAligned (const Scalar *data)
 
static AlignedMapType MapAligned (Scalar *data)
 
static ConstAlignedMapType MapAligned (const Scalar *data, Index size)
 
static AlignedMapType MapAligned (Scalar *data, Index size)
 
static ConstAlignedMapType MapAligned (const Scalar *data, Index rows, Index cols)
 
static AlignedMapType MapAligned (Scalar *data, Index rows, Index cols)
 
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned (const Scalar *data, const Stride< Outer, Inner > &stride)
 
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned (Scalar *data, const Stride< Outer, Inner > &stride)
 
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned (const Scalar *data, Index size, const Stride< Outer, Inner > &stride)
 
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned (Scalar *data, Index size, const Stride< Outer, Inner > &stride)
 
static StridedConstAlignedMapType< Stride< Outer, Inner > >::type MapAligned (const Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
 
static StridedAlignedMapType< Stride< Outer, Inner > >::type MapAligned (Scalar *data, Index rows, Index cols, const Stride< Outer, Inner > &stride)
 
- Protected Member Functions inherited from Eigen::PlainObjectBase< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >
EIGEN_STRONG_INLINE void _resize_to_match (const EigenBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & _set (const DenseBase< OtherDerived > &other)
 Copies the value of the expression other into *this with automatic resizing. More...
 
EIGEN_STRONG_INLINE void _set_selector (const OtherDerived &other, const internal::true_type &)
 
EIGEN_STRONG_INLINE void _set_selector (const OtherDerived &other, const internal::false_type &)
 
EIGEN_STRONG_INLINE Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > & _set_noalias (const DenseBase< OtherDerived > &other)
 
EIGEN_STRONG_INLINE void _init2 (Index nbRows, Index nbCols, typename internal::enable_if< Base::SizeAtCompileTime!=2, T0 >::type *=0)
 
EIGEN_STRONG_INLINE void _init2 (const Scalar &val0, const Scalar &val1, typename internal::enable_if< Base::SizeAtCompileTime==2, T0 >::type *=0)
 
void _swap (DenseBase< OtherDerived > const &other)
 
- Protected Attributes inherited from Eigen::PlainObjectBase< Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > >
DenseStorage< Scalar, Base::MaxSizeAtCompileTime, Base::RowsAtCompileTime, Base::ColsAtCompileTime, Options > m_storage
 

Detailed Description

template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
class Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >

General-purpose arrays with easy API for coefficient-wise operations.

The Array class is very similar to the Matrix class. It provides general-purpose one- and two-dimensional arrays. The difference between the Array and the Matrix class is primarily in the API: the API for the Array class provides easy access to coefficient-wise operations, while the API for the Matrix class provides easy access to linear-algebra operations.

This class can be extended with the help of the plugin mechanism described on the page TopicCustomizingEigen by defining the preprocessor symbol EIGEN_ARRAY_PLUGIN.

See also
TutorialArrayClass, TopicClassHierarchy

Definition at line 42 of file Array.h.

Constructor & Destructor Documentation

template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( )
inline

Default constructor.

For fixed-size matrices, does nothing.

For dynamic-size matrices, creates an empty matrix of size 0. Does not allocate any array. Such a matrix is called a null matrix. This constructor is the unique way to create null matrices: resizing a matrix to 0 is not supported.

See also
resize(Index,Index)

Definition at line 110 of file Array.h.

110  : Base()
111  {
112  Base::_check_template_params();
113  EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
114  }
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( Index  dim)
inlineexplicit

Constructs a vector or row-vector with given dimension.

Note that this is only useful for dynamic-size vectors. For fixed-size vectors, it is redundant to pass the dimension here, so it makes more sense to use the default constructor Matrix() instead.

Definition at line 133 of file Array.h.

134  : Base(dim, RowsAtCompileTime == 1 ? 1 : dim, ColsAtCompileTime == 1 ? 1 : dim)
135  {
136  Base::_check_template_params();
137  EIGEN_STATIC_ASSERT_VECTOR_ONLY(Array)
138  eigen_assert(dim >= 0);
139  eigen_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == dim);
140  EIGEN_INITIALIZE_COEFFS_IF_THAT_OPTION_IS_ENABLED
141  }
EIGEN_STRONG_INLINE Array()
Definition: Array.h:110
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const Scalar &  val0,
const Scalar &  val1,
const Scalar &  val2 
)
inline

constructs an initialized 3D vector with given coefficients

Definition at line 162 of file Array.h.

163  {
164  Base::_check_template_params();
165  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 3)
166  m_storage.data()[0] = val0;
167  m_storage.data()[1] = val1;
168  m_storage.data()[2] = val2;
169  }
EIGEN_STRONG_INLINE Array()
Definition: Array.h:110
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const Scalar &  val0,
const Scalar &  val1,
const Scalar &  val2,
const Scalar &  val3 
)
inline

constructs an initialized 4D vector with given coefficients

Definition at line 171 of file Array.h.

172  {
173  Base::_check_template_params();
174  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Array, 4)
175  m_storage.data()[0] = val0;
176  m_storage.data()[1] = val1;
177  m_storage.data()[2] = val2;
178  m_storage.data()[3] = val3;
179  }
EIGEN_STRONG_INLINE Array()
Definition: Array.h:110
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const ArrayBase< OtherDerived > &  other)
inline

Constructor copying the value of the expression other

Definition at line 185 of file Array.h.

186  : Base(other.rows() * other.cols(), other.rows(), other.cols())
187  {
188  Base::_check_template_params();
189  Base::_set_noalias(other);
190  }
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > &  other)
inline

Copy constructor

Definition at line 192 of file Array.h.

193  : Base(other.rows() * other.cols(), other.rows(), other.cols())
194  {
195  Base::_check_template_params();
196  Base::_set_noalias(other);
197  }
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const ReturnByValue< OtherDerived > &  other)
inline

Copy constructor with in-place evaluation

Definition at line 200 of file Array.h.

201  {
202  Base::_check_template_params();
203  Base::resize(other.rows(), other.cols());
204  other.evalTo(*this);
205  }
EIGEN_STRONG_INLINE void resize(Index nbRows, Index nbCols)
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
EIGEN_STRONG_INLINE Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::Array ( const EigenBase< OtherDerived > &  other)
inline
See also
MatrixBase::operator=(const EigenBase<OtherDerived>&)

Definition at line 209 of file Array.h.

210  : Base(other.derived().rows() * other.derived().cols(), other.derived().rows(), other.derived().cols())
211  {
212  Base::_check_template_params();
213  Base::resize(other.rows(), other.cols());
214  *this = other;
215  }
EIGEN_STRONG_INLINE void resize(Index nbRows, Index nbCols)

Member Function Documentation

template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
EIGEN_STRONG_INLINE Array& Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::operator= ( const EigenBase< OtherDerived > &  other)
inline

The usage of using Base::operator=; fails on MSVC. Since the code below is working with GCC and MSVC, we skipped the usage of 'using'. This should be done only for operator=.

Definition at line 72 of file Array.h.

73  {
74  return Base::operator=(other);
75  }
EIGEN_STRONG_INLINE Derived & operator=(const PlainObjectBase &other)
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
EIGEN_STRONG_INLINE Array& Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::operator= ( const ArrayBase< OtherDerived > &  other)
inline

Copies the value of the expression other into *this with automatic resizing.

*this might be resized to match the dimensions of other. If *this was a null matrix (not already initialized), it will be initialized.

Note that copying a row-vector into a vector (and conversely) is allowed. The resizing, if any, is then done in the appropriate way so that row-vectors remain row-vectors and vectors remain vectors.

Definition at line 87 of file Array.h.

88  {
89  return Base::_set(other);
90  }
EIGEN_STRONG_INLINE Derived & _set(const DenseBase< OtherDerived > &other)
Copies the value of the expression other into *this with automatic resizing.
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
EIGEN_STRONG_INLINE Array& Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::operator= ( const Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols > &  other)
inline

This is a special case of the templated operator=. Its purpose is to prevent a default operator= from hiding the templated operator=.

Definition at line 95 of file Array.h.

96  {
97  return Base::_set(other);
98  }
EIGEN_STRONG_INLINE Derived & _set(const DenseBase< OtherDerived > &other)
Copies the value of the expression other into *this with automatic resizing.
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
template<typename OtherDerived >
void Eigen::Array< _Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols >::swap ( ArrayBase< OtherDerived > const &  other)
inline

Override MatrixBase::swap() since for dynamic-sized matrices of same type it is enough to swap the data pointers.

Definition at line 221 of file Array.h.

222  { this->_swap(other.derived()); }

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