casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Attributes
casa::ScalarSampledFunctional< T > Class Template Reference

A unified interface for indexing into Vectors or Blocks. More...

#include <ScalarSampledFunctional.h>

Inheritance diagram for casa::ScalarSampledFunctional< T >:
casa::SampledFunctional< T > casa::Functional< uInt, T >

List of all members.

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
 
   


Detailed Description

template<class T>
class casa::ScalarSampledFunctional< T >

A unified interface for indexing into Vectors or Blocks.

Intended use:

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> 

Prerequisite

Etymology

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).

Synopsis

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.

Example

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;

Motivation

The SampledFunctional is a useful interface. But it needs some concrete classes to back it up. This is the first one that was written.

Template Type Argument Requirements (Range)

Thrown Exceptions

To Do

Definition at line 119 of file ScalarSampledFunctional.h.


Constructor & Destructor Documentation

See the description above to determine whether a copy or a reference is made to the original data.

template<class T>
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional ( Vector< T > &  data)
template<class T>
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional ( const Vector< T > &  data)
template<class T>
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional ( const Block< T > &  data)

The standard copy constructor and assignment operator.

These functions use reference semantics when the ScalarSampledFunctional is non-const, and copy semantics otherwise.

template<class T>
casa::ScalarSampledFunctional< T >::ScalarSampledFunctional ( const ScalarSampledFunctional< T > &  other)
template<class T>
virtual casa::ScalarSampledFunctional< T >::~ScalarSampledFunctional ( ) [virtual]

Member Function Documentation

template<class T>
virtual uInt casa::ScalarSampledFunctional< T >::nelements ( ) const [virtual]

Return the total size of the data set.

Implements casa::SampledFunctional< T >.

template<class T>
virtual T casa::ScalarSampledFunctional< T >::operator() ( const uInt index) const [virtual]

Define the functions for the SampledFunctional interface.

Implements casa::SampledFunctional< T >.

template<class T>
ScalarSampledFunctional<T>& casa::ScalarSampledFunctional< T >::operator= ( ScalarSampledFunctional< T > &  other)
template<class T>
ScalarSampledFunctional<T>& casa::ScalarSampledFunctional< T >::operator= ( const ScalarSampledFunctional< T > &  other)

Member Data Documentation

template<class T>
Vector<T> casa::ScalarSampledFunctional< T >::refData [private]

   

Definition at line 150 of file ScalarSampledFunctional.h.


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