Loading...
Searching...
No Matches
casacore::VirtualArrayColumnBase Class Reference
tables package (libcasa_tables) » DataMan_module » DataMan_module_internal_classes

More...

`#include <VirtArrCol.h>`

## Public Member Functions

| VirtualArrayColumnBase ()
| Create a column.
virtual | ~VirtualArrayColumnBase ()
virtual Bool | isWritable () const
| By default no data can be put in a virtual column.
Public Member Functions inherited from casacore::DataManagerColumn
| DataManagerColumn ()
| Create a column.
virtual | ~DataManagerColumn ()
| Frees up the storage.
| DataManagerColumn (const DataManagerColumn &)=delete
| The copy constructor cannot be used for this base class.
DataManagerColumn & | operator= (const DataManagerColumn &)=delete
| Assignment cannot be used for this base class.
void | setIsFixedShape (Bool isFixedShape)
| Set the isFixedShape flag.
Bool | isFixedShape () const
| Is this a fixed shape column?
virtual int | dataType () const =0
| Get the data type of the column as defined in DataType.h.
virtual String | dataTypeId () const
| Get the data type id of the column for dataType==TpOther.
virtual void | setMaxLength (uInt maxLength)
| Set the maximum length of the value (can be used for strings).
void | setFixedShapeColumn (const IPosition &shape)
| Set the shape of all (fixed-shaped) arrays in the column.
virtual void | setShapeTiled (rownr_t rownr, const IPosition &shape, const IPosition &tileShape)
| Set the shape and tile shape of an (variable-shaped) array in the given row.
virtual uInt | ndim (rownr_t rownr)
| Get the dimensionality of the item in the given row.
virtual IPosition | tileShape (rownr_t rownr)
| Get the tile shape of the item in the given row.
virtual Bool | canChangeShape () const
| Can the data manager handle chaging the shape of an existing array?
ColumnCache & | columnCache ()
| Get access to the ColumnCache object.
const ColumnCache * | columnCachePtr () const
void | get (rownr_t rownr, Bool *dataPtr)
| Get the scalar value in the given row.
void | get (rownr_t rownr, uChar *dataPtr)
void | get (rownr_t rownr, Short *dataPtr)
void | get (rownr_t rownr, uShort *dataPtr)
void | get (rownr_t rownr, Int *dataPtr)
void | get (rownr_t rownr, uInt *dataPtr)
void | get (rownr_t rownr, Int64 *dataPtr)
void | get (rownr_t rownr, float *dataPtr)
void | get (rownr_t rownr, double *dataPtr)
void | get (rownr_t rownr, Complex *dataPtr)
void | get (rownr_t rownr, DComplex *dataPtr)
void | get (rownr_t rownr, String *dataPtr)
void | get (rownr_t rownr, void *dataPtr)
| This function is the get for all non-standard data types.
void | put (rownr_t rownr, const Bool *dataPtr)
| Put the scalar value into the given row.
void | put (rownr_t rownr, const uChar *dataPtr)
void | put (rownr_t rownr, const Short *dataPtr)
void | put (rownr_t rownr, const uShort *dataPtr)
void | put (rownr_t rownr, const Int *dataPtr)
void | put (rownr_t rownr, const uInt *dataPtr)
void | put (rownr_t rownr, const Int64 *dataPtr)
void | put (rownr_t rownr, const float *dataPtr)
void | put (rownr_t rownr, const double *dataPtr)
void | put (rownr_t rownr, const Complex *dataPtr)
void | put (rownr_t rownr, const DComplex *dataPtr)
void | put (rownr_t rownr, const String *dataPtr)
void | put (rownr_t rownr, const void *dataPtr)
| This function is the put for all non-standard data types.
virtual void | getArrayV (rownr_t rownr, ArrayBase &dataPtr)
| Get the array value in the given row.
virtual void | putArrayV (rownr_t rownr, const ArrayBase &data)
| Put the array value into the given row.
virtual void | getArrayColumnV (ArrayBase &data)
| Get all array values in the column.
virtual void | putArrayColumnV (const ArrayBase &data)
| Put all array values in the column.
virtual void | getArrayColumnCellsV (const RefRows &rownrs, ArrayBase &data)
| Get some array values in the column.
virtual void | putArrayColumnCellsV (const RefRows &rownrs, const ArrayBase &data)
| Put some array values in the column.
virtual void | getSliceV (rownr_t rownr, const Slicer &slicer, ArrayBase &data)
| Get a section of the array in the given row.
virtual void | putSliceV (rownr_t rownr, const Slicer &slicer, const ArrayBase &data)
| Put into a section of the array in the given row.
virtual void | getColumnSliceV (const Slicer &slicer, ArrayBase &data)
| Get a section of all arrays in the column.
virtual void | putColumnSliceV (const Slicer &slicer, const ArrayBase &data)
| Put into a section of all arrays in the column.
virtual void | getColumnSliceCellsV (const RefRows &rownrs, const Slicer &slicer, ArrayBase &data)
| Get a section of some arrays in the column.
virtual void | putColumnSliceCellsV (const RefRows &rownrs, const Slicer &slicer, const ArrayBase &data)
| Put into a section of some arrays in the column.
void | throwGet () const
| Throw an "invalid operation" exception for the default implementation of get.
void | throwPut () const
| Throw an "invalid operation" exception for the default implementation of put.
void | setColumnName (const String &colName)
| Set the column name.
const String & | columnName () const
| Get rhe column name.

## Protected Member Functions

virtual void | setShapeColumn (const IPosition &shape)
| Set the shape of all arrays in the column.
virtual void | setShape (rownr_t rownr, const IPosition &shape)
| Set the shape of an array in the given row.
virtual Bool | isShapeDefined (rownr_t rownr)
| Is the value shape defined in the given row?
virtual IPosition | shape (rownr_t rownr)
| Get the shape of the item in the given row.
virtual void | getScalarColumnV (ArrayBase &dataPtr)
| The scalar access functions throw an exception.
virtual void | putScalarColumnV (const ArrayBase &dataPtr)
| Put all scalar values in the column.
virtual void | getScalarColumnCellsV (const RefRows &rownrs, ArrayBase &dataPtr)
| Get some scalar values in the column.
virtual void | putScalarColumnCellsV (const RefRows &rownrs, const ArrayBase &dataPtr)
| Put some scalar values in the column.
Protected Member Functions inherited from casacore::DataManagerColumn
virtual void | getBool (rownr_t rownr, Bool *dataPtr)
| Get the scalar value in the given row.
virtual void | getuChar (rownr_t rownr, uChar *dataPtr)
virtual void | getShort (rownr_t rownr, Short *dataPtr)
virtual void | getuShort (rownr_t rownr, uShort *dataPtr)
virtual void | getInt (rownr_t rownr, Int *dataPtr)
virtual void | getuInt (rownr_t rownr, uInt *dataPtr)
virtual void | getInt64 (rownr_t rownr, Int64 *dataPtr)
virtual void | getfloat (rownr_t rownr, float *dataPtr)
virtual void | getdouble (rownr_t rownr, double *dataPtr)
virtual void | getComplex (rownr_t rownr, Complex *dataPtr)
virtual void | getDComplex (rownr_t rownr, DComplex *dataPtr)
virtual void | getString (rownr_t rownr, String *dataPtr)
virtual void | getOther (rownr_t rownr, void *dataPtr)
| This function is the get for all non-standard data types.
virtual void | putBool (rownr_t rownr, const Bool *dataPtr)
| Put the scalar value into the given row.
virtual void | putuChar (rownr_t rownr, const uChar *dataPtr)
virtual void | putShort (rownr_t rownr, const Short *dataPtr)
virtual void | putuShort (rownr_t rownr, const uShort *dataPtr)
virtual void | putInt (rownr_t rownr, const Int *dataPtr)
virtual void | putuInt (rownr_t rownr, const uInt *dataPtr)
virtual void | putInt64 (rownr_t rownr, const Int64 *dataPtr)
virtual void | putfloat (rownr_t rownr, const float *dataPtr)
virtual void | putdouble (rownr_t rownr, const double *dataPtr)
virtual void | putComplex (rownr_t rownr, const Complex *dataPtr)
virtual void | putDComplex (rownr_t rownr, const DComplex *dataPtr)
virtual void | putString (rownr_t rownr, const String *dataPtr)
virtual void | putOther (rownr_t rownr, const void *dataPtr)
| This function is the put for all non-standard data types.
void | getScalarColumnBase (ArrayBase &dataPtr)
| The default implementations of get and put functions.
void | putScalarColumnBase (const ArrayBase &dataPtr)
void | getScalarColumnCellsBase (const RefRows &rownrs, ArrayBase &dataPtr)
void | putScalarColumnCellsBase (const RefRows &rownrs, const ArrayBase &dataPtr)
void | getArrayColumnBase (ArrayBase &data)
void | putArrayColumnBase (const ArrayBase &data)
void | getArrayColumnCellsBase (const RefRows &rownrs, ArrayBase &data)
void | putArrayColumnCellsBase (const RefRows &rownrs, const ArrayBase &data)
void | getSliceBase (rownr_t rownr, const Slicer &slicer, ArrayBase &data)
void | putSliceBase (rownr_t rownr, const Slicer &slicer, const ArrayBase &data)
void | getColumnSliceBase (const Slicer &slicer, ArrayBase &data)
void | putColumnSliceBase (const Slicer &slicer, const ArrayBase &data)
void | getColumnSliceCellsBase (const RefRows &rownrs, const Slicer &slicer, ArrayBase &data)
void | putColumnSliceCellsBase (const RefRows &rownrs, const Slicer &slicer, const ArrayBase &data)

## Detailed Description

Templated base class for virtual array column

### Intended use:

Internal

### Review Status

Reviewed By:
  Gareth Hunt
Date Reviewed:
  94Nov17

### Prerequisite

- DataManagerColumn
- VirtualColumnEngine

### Etymology

VirtualArrayColumn handles a virtual column containing an array.

### Synopsis

VirtualArrayColumn is the abstract base class to handle an array column for a virtual column engine (both direct and indirect arrays). It is derived from DataManagerColumn and reimplements some virtual functions to make life easier for the derived classes. It does the following:

- It implements the dataType function, so it is not needed to implement that in derived classes.
- It has a default implementation of False for function isWritable. Thus by default virtual scalar columns are not writable, which will often be the case. Only if a virtual scalar column can be writable, it has to be implemented in the derived class.
- It has a default implementation for the functions dealing with the array shapes. By default they throw an "invalid operation" exception, so it is needed to implement them in the derived class.
- In DataManagerColumn the functions get/putArrayV and get/putSliceV are defined, which have an ArrayBase& data argument. This is necessary to handle arbitrary data types in the non-templated base class DataManagerColumn. In this templated VirtualArrayColumn class, virtual functions get/putArray, get/putSlice, etc. have been defined. They cast the ArrayBase& data argument to Array<T>&, so in a derived class no care has to be taken for that cast. Furthermore a default implementation of the get/putSlice has been made. They get/put the entire array (using get/putArray) and access the required slice. By default the get/putArray functions thrown an "invalid operation" exception, so they have to be implemented in the derived class.
- Similarly the functions get/putArrayColumnV and get/putColumnSliceV have been templated to get/putArrayColumn and get/putColumnSlice. The default implementation of these latter functions handle a column by looping through its individual cells.
- Similarly the functions get/putArrayColumnCellsV and get/putColumnSliceCells have been templated to get/putArrayColumnCells and get/putColumnSliceCells. However, their implementations throw an exception. However, it makes it possible that a derived class (like ScaledComplexData) can implement these functions.

An example of a virtual array column class is ScaledComplexData. Note that this class is (indirectly) multiple derived from VirtualColumnEngine and VirtualArrayColumn, so it combines the functionality of DataManager and DataManagerColumn. This is possible, because one ScaledComplexData engine can handle only one column.

### Motivation

This class reimplements some virtual functions implemented by DataManagerColumn and types the data argument. In that way they are easier to implement in derived classes. Furthermore they allow default implementations.

### Template Type Argument Requirements (T)

- default constructor
- copy constructor
- assignment operator
- static String dataTypeId(); // unique name of the class

Definition at line 133 of file VirtArrCol.h.

## Constructor & Destructor Documentation

## VirtualArrayColumnBase()

casacore::VirtualArrayColumnBase::VirtualArrayColumnBase | ( |  | ) |

inline

Create a column.

Definition at line 137 of file VirtArrCol.h.

## ~VirtualArrayColumnBase()

virtual casacore::VirtualArrayColumnBase::~VirtualArrayColumnBase | ( |  | ) |

virtual

## Member Function Documentation

## getScalarColumnCellsV()

virtual void casacore::VirtualArrayColumnBase::getScalarColumnCellsV | ( | const RefRows & | rownrs,
|  | ArrayBase & | dataPtr )

protected virtual

Get some scalar values in the column.

The vector given in data has to have the correct length (which is guaranteed by the ScalarColumn getColumn function). The default implementation does a getXX per row.

Reimplemented from casacore::DataManagerColumn.

## getScalarColumnV()

virtual void casacore::VirtualArrayColumnBase::getScalarColumnV | ( | ArrayBase & | dataPtr | ) |

protected virtual

The scalar access functions throw an exception.

Reimplemented from casacore::DataManagerColumn.

## isShapeDefined()

virtual Bool casacore::VirtualArrayColumnBase::isShapeDefined | ( | rownr_t | rownr | ) |

protected virtual

Is the value shape defined in the given row?

By default it throws a "not possible" exception.

Reimplemented from casacore::DataManagerColumn.

Reimplemented in casacore::AzElColumn, casacore::BaseMappedArrayEngine< VirtualType, StoredType >, casacore::BaseMappedArrayEngine< Bool, StoredType >, casacore::BaseMappedArrayEngine< Complex, Int >, casacore::BaseMappedArrayEngine< Float, Short >, casacore::HaDecColumn, casacore::ItrfColumn, and casacore::UVWJ2000Column.

## isWritable()

virtual Bool casacore::VirtualArrayColumnBase::isWritable | ( |  | ) | const

virtual

By default no data can be put in a virtual column.

Reimplemented from casacore::DataManagerColumn.

Reimplemented in casacore::BaseMappedArrayEngine< VirtualType, StoredType >, casacore::BaseMappedArrayEngine< Bool, StoredType >, casacore::BaseMappedArrayEngine< Complex, Int >, casacore::BaseMappedArrayEngine< Float, Short >, and casacore::VACEngine< T >.

## putScalarColumnCellsV()

virtual void casacore::VirtualArrayColumnBase::putScalarColumnCellsV | ( | const RefRows & | rownrs,
|  | const ArrayBase & | dataPtr )

protected virtual

Put some scalar values in the column.

The vector given in data has to have the correct length (which is guaranteed by the ScalarColumn getColumn function). The default implementation does a putXX per row.

Reimplemented from casacore::DataManagerColumn.

## putScalarColumnV()

virtual void casacore::VirtualArrayColumnBase::putScalarColumnV | ( | const ArrayBase & | dataPtr | ) |

protected virtual

Put all scalar values in the column.

The vector given in data has to have the correct length (which is guaranteed by the ScalarColumn putColumn function). The default implementation does a putXX per row.

Reimplemented from casacore::DataManagerColumn.

## setShape()

virtual void casacore::VirtualArrayColumnBase::setShape | ( | rownr_t | rownr,
|  | const IPosition & | shape )

protected virtual

Set the shape of an array in the given row.

It is only called if the column contains indirect arrays. By default it throws a "not possible" exception.

Reimplemented from casacore::DataManagerColumn.

Reimplemented in casacore::BaseMappedArrayEngine< VirtualType, StoredType >, casacore::BaseMappedArrayEngine< Bool, StoredType >, casacore::BaseMappedArrayEngine< Complex, Int >, casacore::BaseMappedArrayEngine< Float, Short >, casacore::RetypedArrayEngine< VirtualType, StoredType >, and casacore::ScaledComplexData< VirtualType, StoredType >.

References shape().

## setShapeColumn()

virtual void casacore::VirtualArrayColumnBase::setShapeColumn | ( | const IPosition & | shape | ) |

protected virtual

Set the shape of all arrays in the column.

It is only called if the column contains direct arrays. By default it throws a "not possible" exception.

Reimplemented from casacore::DataManagerColumn.

Reimplemented in casacore::BaseMappedArrayEngine< VirtualType, StoredType >, casacore::BaseMappedArrayEngine< Bool, StoredType >, casacore::BaseMappedArrayEngine< Complex, Int >, casacore::BaseMappedArrayEngine< Float, Short >, casacore::RetypedArrayEngine< VirtualType, StoredType >, and casacore::ScaledComplexData< VirtualType, StoredType >.

References shape().

## shape()

virtual IPosition casacore::VirtualArrayColumnBase::shape | ( | rownr_t | rownr | ) |

protected virtual

Get the shape of the item in the given row.

By default it throws a "not possible" exception.

Reimplemented from casacore::DataManagerColumn.

Reimplemented in casacore::AzElColumn, casacore::BaseMappedArrayEngine< VirtualType, StoredType >, casacore::BaseMappedArrayEngine< Bool, StoredType >, casacore::BaseMappedArrayEngine< Complex, Int >, casacore::BaseMappedArrayEngine< Float, Short >, casacore::HaDecColumn, casacore::ItrfColumn, casacore::RetypedArrayEngine< VirtualType, StoredType >, casacore::ScaledComplexData< VirtualType, StoredType >, and casacore::UVWJ2000Column.

Referenced by setShape(), and setShapeColumn().

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

- tables/DataMan/VirtArrCol.h