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

Index into an array using the longest axis. More...

#include <ArraySampledFunctional.h>

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

List of all members.

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

theRefData
 
   

IPosition theEnd
uInt theLastAxis
uInt theNelements

Detailed Description

template<class T>
class casa::ArraySampledFunctional< T >

Index into an array using the longest axis.

Intended use:

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> 

Prerequisite

Etymology

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.

Synopsis

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.

Example

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

Motivation

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.

Template Type Argument Requirements (T)

Thrown Exceptions

To Do

Definition at line 112 of file ArraySampledFunctional.h.


Constructor & Destructor Documentation

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.

template<class T>
casa::ArraySampledFunctional< T >::ArraySampledFunctional ( const T &  data)

The standard copy constructor and assignment operator.

template<class T>
virtual casa::ArraySampledFunctional< T >::~ArraySampledFunctional ( ) [virtual]

Member Function Documentation

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

Return the total size of the data set.

Implements casa::SampledFunctional< T >.

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

Define the functions for the SampledFunction interface.

Implements casa::SampledFunctional< T >.

template<class 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.

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

Member Data Documentation

template<class T>
IPosition casa::ArraySampledFunctional< T >::theEnd [private]

Definition at line 147 of file ArraySampledFunctional.h.

template<class T>
uInt casa::ArraySampledFunctional< T >::theLastAxis [private]

Definition at line 148 of file ArraySampledFunctional.h.

template<class T>
uInt casa::ArraySampledFunctional< T >::theNelements [private]

Definition at line 149 of file ArraySampledFunctional.h.

template<class T>
T casa::ArraySampledFunctional< T >::theRefData [private]

   

Definition at line 146 of file ArraySampledFunctional.h.


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