casa
$Rev:20696$
|
Index into an array using the longest axis. More...
#include <ArraySampledFunctional.h>
Public Member Functions | |
ArraySampledFunctional () | |
These constructors copy the array that is passed to them. | |
ArraySampledFunctional (const T &data) | |
ArraySampledFunctional (ArraySampledFunctional< T > &other) | |
The standard copy constructor and assignment operator. | |
ArraySampledFunctional< T > & | operator= (ArraySampledFunctional< T > &other) |
virtual T | operator() (const uInt &index) const |
Define the functions for the SampledFunction interface. | |
virtual uInt | nelements () const |
Return the total size of the data set. | |
virtual | ~ArraySampledFunctional () |
const T | operator() (const uInt &index) |
An alternate version of the sampling function which is more effecient because it does not need to create as many temporary objects or copy the Array data. | |
Private Attributes | |
T | theRefData |
IPosition | theEnd |
uInt | theLastAxis |
uInt | theNelements |
Index into an array using the longest axis.
Public interface
<h3>Review Status</h3><dl><dt>Reviewed By:<dd>wyoung<dt>Date Reviewed:<dd>1996/10/19<dt>Test programs:<dd>tSampledFunctional</dl>
A SampledFunctional is an interface that allows random access to a fixed size data set. An ArraySampledFunctional allows you to access slices of an an Array<T> object.
An ArraySampledFunctional allows an Array<T> object to be sliced up with each sample being one slice of the original Array. The slices are always the same size and the indexing is always done along the last non-degenerate dimension. For example a(4,3,20,1) is interpreted as a SampledFunctional with 20 elements, each one being a 4 by 3 matrix.
The Array that is passed to the constructor is copied by this class but because Arrays themselves use reference symantics, the actual data is not copied but referenced. This means that modifying the data in the original array will correspondingly modify the data accessed by this class.
Similarly the Array that is returned for each Slice is a reference to the actual data so that modifying this array really modifies the original data. This is not recommended as the operator() function is not supposed to be used to get a modifiable portion of the data.
Constructing and using ArraySampledFunctionals
Array<Float> a(IPosition(4,4,3,20,1)); // Create an array ... Fill the array any way you like ..\. ArraySampledFunctional<Array<Float> >fa(a); for(uInt i = 0; i < 20; i++) cout << "f(" << i << ") = " << fa(i) << endl; // Each 'slice' is a 4 by 3 Matrix
I needed a SampledFunctional which could return Arrays of arbitrary (but fixed) size for each index. This could be done using a ScalarSampledFunctional<Array<T> >
but is ineffecient as each element is stored as a separate Array. This class is a more efficient way to solve this problem.
Definition at line 112 of file ArraySampledFunctional.h.
casa::ArraySampledFunctional< T >::ArraySampledFunctional | ( | ) |
These constructors copy the array that is passed to them.
But because arrays use reference symantics the data is not copied. The default constructor is basically useless, as there is no way to add the data once the class has been constructed.
casa::ArraySampledFunctional< T >::ArraySampledFunctional | ( | const T & | data | ) |
casa::ArraySampledFunctional< T >::ArraySampledFunctional | ( | ArraySampledFunctional< T > & | other | ) |
The standard copy constructor and assignment operator.
virtual casa::ArraySampledFunctional< T >::~ArraySampledFunctional | ( | ) | [virtual] |
virtual uInt casa::ArraySampledFunctional< T >::nelements | ( | ) | const [virtual] |
Return the total size of the data set.
Implements casa::SampledFunctional< T >.
virtual T casa::ArraySampledFunctional< T >::operator() | ( | const uInt & | index | ) | const [virtual] |
Define the functions for the SampledFunction interface.
Implements casa::SampledFunctional< T >.
const T casa::ArraySampledFunctional< T >::operator() | ( | const uInt & | index | ) |
An alternate version of the sampling function which is more effecient because it does not need to create as many temporary objects or copy the Array data.
ArraySampledFunctional<T>& casa::ArraySampledFunctional< T >::operator= | ( | ArraySampledFunctional< T > & | other | ) |
IPosition casa::ArraySampledFunctional< T >::theEnd [private] |
Definition at line 147 of file ArraySampledFunctional.h.
uInt casa::ArraySampledFunctional< T >::theLastAxis [private] |
Definition at line 148 of file ArraySampledFunctional.h.
uInt casa::ArraySampledFunctional< T >::theNelements [private] |
Definition at line 149 of file ArraySampledFunctional.h.
T casa::ArraySampledFunctional< T >::theRefData [private] |
Definition at line 146 of file ArraySampledFunctional.h.