casacore
Public Member Functions | Private Attributes | List of all members
casacore::ScalarSampledFunctional< T > Class Template Reference

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. More...
 
 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. More...
 
 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. More...
 
virtual uInt nelements () const
 Return the total size of the data set. More...
 
virtual ~ScalarSampledFunctional ()
 
- Public Member Functions inherited from casacore::SampledFunctional< T >
virtual ~SampledFunctional ()
 The virtual destructor does nothing. More...
 
- Public Member Functions inherited from casacore::Functional< Domain, Range >
virtual ~Functional ()
 Destructor. More...
 
virtual Range operator() (const Domain &x) const =0
 Map a Domain x into a Range y value. More...
 

Private Attributes

Vector< T > refData
 

Detailed Description

template<class T>
class casacore::ScalarSampledFunctional< T >

A unified interface for indexing into Vectors or Blocks

Intended use:

Public interface

Review Status

Reviewed By:
wyoung
Date Reviewed:
1996/10/18
Test programs:
tSampledFunctional

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;
unsigned int uInt
Definition: aipstype.h:51


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

◆ ScalarSampledFunctional() [1/6]

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

◆ ScalarSampledFunctional() [2/6]

template<class T >
casacore::ScalarSampledFunctional< T >::ScalarSampledFunctional ( Vector< T > &  data)

◆ ScalarSampledFunctional() [3/6]

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

◆ ScalarSampledFunctional() [4/6]

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

◆ ScalarSampledFunctional() [5/6]

The standard copy constructor and assignment operator.

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

◆ ScalarSampledFunctional() [6/6]

template<class T >
casacore::ScalarSampledFunctional< T >::ScalarSampledFunctional ( const ScalarSampledFunctional< T > &  other)

◆ ~ScalarSampledFunctional()

template<class T >
virtual casacore::ScalarSampledFunctional< T >::~ScalarSampledFunctional ( )
virtual

Member Function Documentation

◆ nelements()

template<class T >
virtual uInt casacore::ScalarSampledFunctional< T >::nelements ( ) const
virtual

Return the total size of the data set.

Implements casacore::SampledFunctional< T >.

◆ operator()()

template<class T >
virtual T casacore::ScalarSampledFunctional< T >::operator() ( const uInt index) const
virtual

Define the functions for the SampledFunctional interface.

Implements casacore::SampledFunctional< T >.

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

Member Data Documentation

◆ refData

template<class T >
Vector<T> casacore::ScalarSampledFunctional< T >::refData
private

Definition at line 150 of file ScalarSampledFunctional.h.


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