ARTS
2.2.66
|
The VectorView class. More...
#include <matpackI.h>
Public Types | |
typedef Iterator1D | iterator |
Public Types inherited from ConstVectorView | |
typedef ConstIterator1D | const_iterator |
Public Member Functions | |
VectorView (const Vector &) | |
Bail out immediately if somebody tries to create a VectorView from a const Vector. More... | |
VectorView (Vector &v) | |
Create VectorView from a Vector. More... | |
Numeric | operator[] (Index n) const |
Plain const index operator. More... | |
Numeric | get (Index n) const |
Get element implementation without assertions. More... | |
ConstVectorView | operator[] (const Range &r) const |
Const index operator for subrange. More... | |
Numeric & | operator[] (Index n) |
Plain Index operator. More... | |
Numeric & | get (Index n) |
Get element implementation without assertions. More... | |
VectorView | operator[] (const Range &r) |
Index operator for subrange. More... | |
ConstIterator1D | begin () const |
Return const iterator to first element. More... | |
ConstIterator1D | end () const |
Return const iterator behind last element. More... | |
Iterator1D | begin () |
Return iterator to first element. More... | |
Iterator1D | end () |
Return iterator behind last element. More... | |
VectorView & | operator= (const ConstVectorView &v) |
Assignment operator. More... | |
VectorView & | operator= (const VectorView &v) |
Assignment from VectorView to VectorView. More... | |
VectorView & | operator= (const Vector &v) |
Assignment from Vector. More... | |
VectorView & | operator= (const Array< Numeric > &v) |
Assignment operator from Array<Numeric>. More... | |
VectorView & | operator= (Numeric x) |
Assigning a scalar to a VectorView will set all elements to this value. More... | |
VectorView | operator*= (Numeric x) |
Multiplication by scalar. More... | |
VectorView | operator/= (Numeric x) |
Division by scalar. More... | |
VectorView | operator+= (Numeric x) |
Addition of scalar. More... | |
VectorView | operator-= (Numeric x) |
Subtraction of scalar. More... | |
VectorView | operator*= (const ConstVectorView &x) |
Element-vise multiplication by another vector. More... | |
VectorView | operator/= (const ConstVectorView &x) |
Element-vise division by another vector. More... | |
VectorView | operator+= (const ConstVectorView &x) |
Element-vise addition of another vector. More... | |
VectorView | operator-= (const ConstVectorView &x) |
Element-vise subtraction of another vector. More... | |
operator MatrixView () | |
Conversion to 1 column matrix. More... | |
const Numeric * | get_c_array () const |
Conversion to plain C-array. More... | |
Numeric * | get_c_array () |
Conversion to plain C-array. More... | |
virtual | ~VectorView () |
Destructor. More... | |
VectorView (Numeric &a) | |
A special constructor, which allows to make a VectorView from a scalar. More... | |
Public Member Functions inherited from ConstVectorView | |
Index | nelem () const |
Returns the number of elements. More... | |
Numeric | sum () const |
The sum of all elements of a Vector. More... | |
Numeric | operator[] (Index n) const |
Plain const index operator. More... | |
Numeric | get (Index n) const |
Get element implementation without assertions. More... | |
ConstVectorView | operator[] (const Range &r) const |
Const index operator for subrange. More... | |
ConstIterator1D | begin () const |
Return const iterator to first element. More... | |
ConstIterator1D | end () const |
Return const iterator behind last element. More... | |
operator ConstMatrixView () const | |
Conversion to const 1 column matrix. More... | |
virtual | ~ConstVectorView () |
Destructor. More... | |
ConstVectorView (const Numeric &a) | |
A special constructor, which allows to make a ConstVectorView from a scalar. More... | |
Protected Member Functions | |
VectorView () | |
Default constructor. More... | |
VectorView (Numeric *data, const Range &range) | |
Explicit constructor. More... | |
VectorView (Numeric *data, const Range &p, const Range &n) | |
Recursive constructor. More... | |
Protected Member Functions inherited from ConstVectorView | |
ConstVectorView () | |
Default constructor. More... | |
ConstVectorView (Numeric *data, const Range &range) | |
Explicit constructor. More... | |
ConstVectorView (Numeric *data, const Range &p, const Range &n) | |
Recursive constructor. More... | |
Friends | |
class | ConstIterator2D |
class | Iterator2D |
class | MatrixView |
class | Tensor3View |
class | Tensor4View |
class | Tensor5View |
class | Tensor6View |
class | Tensor7View |
Additional Inherited Members | |
Protected Attributes inherited from ConstVectorView | |
Range | mrange |
The range of mdata that is actually used. More... | |
Numeric * | mdata |
Pointer to the plain C array that holds the data. More... | |
The VectorView class.
This contains the main implementation of a vector. The class Vector is just a special case of subvector which also allocates storage.
Unfortunately, names of element functions of derived classes hide the names of the original class, even if the arguments are different. This means that we have to redefine those element functions that can have different arguments, for example the constant index operators and iterators.
Definition at line 372 of file matpackI.h.
typedef Iterator1D VectorView::iterator |
Definition at line 378 of file matpackI.h.
VectorView::VectorView | ( | const Vector & | ) |
Bail out immediately if somebody tries to create a VectorView from a const Vector.
Definition at line 309 of file matpackI.cc.
VectorView::VectorView | ( | Vector & | v | ) |
Create VectorView from a Vector.
Definition at line 320 of file matpackI.cc.
References ConstVectorView::mdata, and ConstVectorView::mrange.
|
inlinevirtual |
Destructor.
Definition at line 442 of file matpackI.h.
VectorView::VectorView | ( | Numeric & | a | ) |
A special constructor, which allows to make a VectorView from a scalar.
Definition at line 567 of file matpackI.cc.
|
protected |
Default constructor.
This is necessary, so that we can have a default constructor for the derived class Vector.
Definition at line 575 of file matpackI.cc.
Explicit constructor.
This one is used by Vector to initialize its own VectorView part.
Definition at line 583 of file matpackI.cc.
Recursive constructor.
This is used to construct sub ranges from sub ranges. That means that the new range has to be interpreted relative to the original range. The new range may contain -1 for the extent which acts as a joker. However, the used Range constructor converts this to an explicit range, consistent with the original Range.
*data | The actual data. |
p | Previous range. |
n | New Range. |
Definition at line 600 of file matpackI.cc.
ConstIterator1D VectorView::begin | ( | ) | const |
Return const iterator to first element.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
Definition at line 346 of file matpackI.cc.
References ConstVectorView::begin().
Referenced by IsotopologueRecord::CalculatePartitionFctAtTempFromCoeff(), copy(), mult(), MatrixView::operator*=(), MatrixView::operator+=(), MatrixView::operator-=(), MatrixView::operator/=(), operator=(), pnd_fieldH13Shape(), test03(), test1(), transform(), and Vector::Vector().
Iterator1D VectorView::begin | ( | ) |
Return iterator to first element.
Definition at line 360 of file matpackI.cc.
References ConstVectorView::mdata, ConstVectorView::mrange, Range::mstart, and Range::mstride.
ConstIterator1D VectorView::end | ( | ) | const |
Return const iterator behind last element.
Has to be redefined here, since it is hiden by the non-const operator of the derived class.
Definition at line 354 of file matpackI.cc.
References ConstVectorView::end().
Referenced by IsotopologueRecord::CalculatePartitionFctAtTempFromCoeff(), copy(), mult(), MatrixView::operator*=(), MatrixView::operator+=(), MatrixView::operator-=(), MatrixView::operator/=(), operator=(), pnd_fieldH13Shape(), test03(), and Vector::Vector().
Iterator1D VectorView::end | ( | ) |
Return iterator behind last element.
Definition at line 366 of file matpackI.cc.
References ConstVectorView::mdata, Range::mextent, ConstVectorView::mrange, Range::mstart, and Range::mstride.
Get element implementation without assertions.
Definition at line 387 of file matpackI.h.
References ConstVectorView::get().
Referenced by interpweights().
Get element implementation without assertions.
Definition at line 401 of file matpackI.h.
const Numeric * VectorView::get_c_array | ( | ) | const |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the VectorView is not pointing to the beginning of a Vector or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 542 of file matpackI.cc.
References ConstVectorView::mdata, ConstVectorView::mrange, Range::mstart, and Range::mstride.
Referenced by nca_get_data_Vector(), nca_put_var_Vector(), nca_read_from_file(), nca_write_to_file(), Reduce(), test38(), tmatrix_random_orientation(), and tmatrix_tmd_test().
Numeric * VectorView::get_c_array | ( | ) |
Conversion to plain C-array.
This function returns a pointer to the raw data. It fails if the VectorView is not pointing to the beginning of a Vector or the stride is not 1 because the caller expects to get a C array with continuous data.
Definition at line 556 of file matpackI.cc.
References ConstVectorView::mdata, ConstVectorView::mrange, Range::mstart, and Range::mstride.
VectorView::operator MatrixView | ( | ) |
Conversion to 1 column matrix.
Definition at line 526 of file matpackI.cc.
References ConstVectorView::mdata, and ConstVectorView::mrange.
VectorView VectorView::operator*= | ( | Numeric | x | ) |
Multiplication by scalar.
Definition at line 430 of file matpackI.cc.
References ConstVectorView::begin(), and ConstVectorView::end().
VectorView VectorView::operator*= | ( | const ConstVectorView & | x | ) |
Element-vise multiplication by another vector.
Definition at line 466 of file matpackI.cc.
References ConstVectorView::begin(), ConstVectorView::end(), and ConstVectorView::nelem().
VectorView VectorView::operator+= | ( | Numeric | x | ) |
Addition of scalar.
Definition at line 448 of file matpackI.cc.
References ConstVectorView::begin(), and ConstVectorView::end().
VectorView VectorView::operator+= | ( | const ConstVectorView & | x | ) |
Element-vise addition of another vector.
Definition at line 496 of file matpackI.cc.
References ConstVectorView::begin(), ConstVectorView::end(), and ConstVectorView::nelem().
VectorView VectorView::operator-= | ( | Numeric | x | ) |
Subtraction of scalar.
Definition at line 457 of file matpackI.cc.
References ConstVectorView::begin(), and ConstVectorView::end().
VectorView VectorView::operator-= | ( | const ConstVectorView & | x | ) |
Element-vise subtraction of another vector.
Definition at line 511 of file matpackI.cc.
References ConstVectorView::begin(), ConstVectorView::end(), and ConstVectorView::nelem().
VectorView VectorView::operator/= | ( | Numeric | x | ) |
Division by scalar.
Definition at line 439 of file matpackI.cc.
References ConstVectorView::begin(), and ConstVectorView::end().
VectorView VectorView::operator/= | ( | const ConstVectorView & | x | ) |
Element-vise division by another vector.
Definition at line 481 of file matpackI.cc.
References ConstVectorView::begin(), ConstVectorView::end(), and ConstVectorView::nelem().
VectorView & VectorView::operator= | ( | const ConstVectorView & | v | ) |
Assignment operator.
This copies the data from another VectorView to this VectorView. Dimensions must agree! Resizing would destroy the selection that we might have done in this VectorView by setting its range.
Definition at line 378 of file matpackI.cc.
References ConstVectorView::begin(), copy(), ConstVectorView::end(), Range::mextent, and ConstVectorView::mrange.
Referenced by Vector::operator=().
VectorView & VectorView::operator= | ( | const VectorView & | v | ) |
Assignment from VectorView to VectorView.
This is a tricky one. The problem is that since VectorView is derived from ConstVectorView, a default = operator is generated by the compiler, which does not do what we want. So we need this one to override the default.
Definition at line 395 of file matpackI.cc.
References ConstVectorView::begin(), begin(), copy(), end(), Range::mextent, and ConstVectorView::mrange.
VectorView & VectorView::operator= | ( | const Vector & | v | ) |
Assignment from Vector.
This is important to avoid a bug when assigning a Vector to a VectorView.
Definition at line 409 of file matpackI.cc.
References ConstVectorView::begin(), begin(), copy(), end(), Range::mextent, and ConstVectorView::mrange.
VectorView & VectorView::operator= | ( | const Array< Numeric > & | v | ) |
Assignment operator from Array<Numeric>.
This copies the data from an Array<Numeric> to this VectorView. Dimensions must agree! Resizing would destroy the selection that we might have done in this VectorView by setting its range.
Array<Numeric> can be useful to collect things in, because there is a .push_back method for it. Then, after collecting we usually have to transfer the content to a Vector. With this assignment operator that's easy.
Definition at line 2018 of file matpackI.cc.
References MatrixView::begin(), and Array< base >::nelem().
VectorView & VectorView::operator= | ( | Numeric | x | ) |
Assigning a scalar to a VectorView will set all elements to this value.
Definition at line 423 of file matpackI.cc.
References ConstVectorView::begin(), copy(), and ConstVectorView::end().
Plain const index operator.
Has to be redifined here, because the one from ConstVectorView is hidden.
Definition at line 383 of file matpackI.h.
References ConstVectorView::operator[]().
Referenced by MakeVector::MakeVector().
ConstVectorView VectorView::operator[] | ( | const Range & | r | ) | const |
Const index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Vector. This allows correct recursive behavior. Has to be redifined here, because the one from ConstVectorView is hidden.
Definition at line 330 of file matpackI.cc.
References ConstVectorView::operator[]().
Plain Index operator.
Definition at line 393 of file matpackI.h.
VectorView VectorView::operator[] | ( | const Range & | r | ) |
Index operator for subrange.
We have to also account for the case, that *this is already a subrange of a Vector. This allows correct recursive behavior.
Definition at line 338 of file matpackI.cc.
References ConstVectorView::mdata, ConstVectorView::mrange, and ConstVectorView::VectorView.
|
friend |
Definition at line 445 of file matpackI.h.
Referenced by ConstMatrixView::begin(), and ConstMatrixView::end().
|
friend |
Definition at line 446 of file matpackI.h.
|
friend |
Definition at line 447 of file matpackI.h.
|
friend |
Definition at line 448 of file matpackI.h.
|
friend |
Definition at line 449 of file matpackI.h.
|
friend |
Definition at line 450 of file matpackI.h.
|
friend |
Definition at line 451 of file matpackI.h.
|
friend |
Definition at line 452 of file matpackI.h.