casa
$Rev:20696$
|
A unified interface for indexing into Vectors or Blocks. More...
#include <ScalarSampledFunctional.h>
Public Member Functions | |
ScalarSampledFunctional () | |
See the description above to determine whether a copy or a reference is made to the original data. | |
ScalarSampledFunctional (Vector< T > &data) | |
ScalarSampledFunctional (const Vector< T > &data) | |
ScalarSampledFunctional (const Block< T > &data) | |
ScalarSampledFunctional (ScalarSampledFunctional< T > &other) | |
The standard copy constructor and assignment operator. | |
ScalarSampledFunctional (const ScalarSampledFunctional< T > &other) | |
ScalarSampledFunctional< T > & | operator= (ScalarSampledFunctional< T > &other) |
ScalarSampledFunctional< T > & | operator= (const ScalarSampledFunctional< T > &other) |
virtual T | operator() (const uInt &index) const |
Define the functions for the SampledFunctional interface. | |
virtual uInt | nelements () const |
Return the total size of the data set. | |
virtual | ~ScalarSampledFunctional () |
Private Attributes | |
Vector< T > | refData |
A unified interface for indexing into Vectors or Blocks.
Public interface
<h3>Review Status</h3><dl><dt>Reviewed By:<dd>wyoung<dt>Date Reviewed:<dd>1996/10/18<dt>Test programs:<dd>tSampledFunctional</dl>
A SampledFunctional is an interface that allows random access to a fixed size data set. I originally conceived this class as being used to access scalar values (Int's Float's etc.) stored in Vectors, using the SampledFunctional interface. It became generalised to incorporate Blocks and I now realise that a better name might be MemorySampledFunctional, to highlight that the data is stored in memory (and not on disk).
This derived class allows allows a Block<T> or Vector<T> object to be accessed through the SampledFunctional<T> interface. The principle advantage of this is that it unifies the different indexing operators (ie. [] for Blocks and () for Vectors). The disadvantage is that it hides just about all the other functionality of Vectors and Blocks. If all you are interested in is random access to various elements of these objects then this class is a suitable abstraction.
Reference semantics are used (ie. the class does not make a copy of the data but refers to the original data) whenever possible. It is not possible to use reference semantics (so a physical copy of the data is made), in the following cases:
Reference semantics are always used for the copy constructor and assignment operators when the ScalarSampledFunctional is non-const. Otherwise copy semantics are used.
When reference semantics are used you need to be aware that modifying the contents of the original Vector will modify the data used by this class.
This class is always more efficient if reference semantics are used, so avoid using const arguments unless you really need to.
Constructing and using ScalarSampledFunctional's
Block<Float> b(10); // Create a block of ten elements // ... Fill the block any way you like ..\. ScalarSampledFunctional<Float> fb(b); for(uInt i = 0; i < 10; i++) cout << "f(" << i << ") = " << fb(i) << endl;
The SampledFunctional is a useful interface. But it needs some concrete classes to back it up. This is the first one that was written.
Definition at line 119 of file ScalarSampledFunctional.h.
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | ) |
See the description above to determine whether a copy or a reference is made to the original data.
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | Vector< T > & | data | ) |
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | const Vector< T > & | data | ) |
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | const Block< T > & | data | ) |
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | ScalarSampledFunctional< T > & | other | ) |
The standard copy constructor and assignment operator.
These functions use reference semantics when the ScalarSampledFunctional is non-const, and copy semantics otherwise.
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional | ( | const ScalarSampledFunctional< T > & | other | ) |
virtual casa::ScalarSampledFunctional< T >::~ScalarSampledFunctional | ( | ) | [virtual] |
virtual uInt casa::ScalarSampledFunctional< T >::nelements | ( | ) | const [virtual] |
Return the total size of the data set.
Implements casa::SampledFunctional< T >.
virtual T casa::ScalarSampledFunctional< T >::operator() | ( | const uInt & | index | ) | const [virtual] |
Define the functions for the SampledFunctional interface.
Implements casa::SampledFunctional< T >.
ScalarSampledFunctional<T>& casa::ScalarSampledFunctional< T >::operator= | ( | ScalarSampledFunctional< T > & | other | ) |
ScalarSampledFunctional<T>& casa::ScalarSampledFunctional< T >::operator= | ( | const ScalarSampledFunctional< T > & | other | ) |
Vector<T> casa::ScalarSampledFunctional< T >::refData [private] |
Definition at line 150 of file ScalarSampledFunctional.h.