Loading...
Searching...
No Matches
casacore::ArrayColumnDesc< T > Class Template Reference
tables package (libcasa_tables) » Tables_module

Templated class for description of table array columns. More...

`#include <ArrColDesc.h>`

## Public Member Functions

| ArrayColumnDesc (const String &name, Int ndim=-1, int options=0)
| Construct the column with the given name and dimensionality.
| ArrayColumnDesc (const String &name, const String &comment, Int ndim=-1, int options=0)
| Construct the column with the given name, dimensionality, and comment.
| ArrayColumnDesc (const String &name, const String &comment, const String &dataManName, const String &dataManGroup, Int ndim=-1, int options=0)
| Construct the column with the given name, dimensionality, comment, and default data manager type and group.
| ArrayColumnDesc (const String &name, const IPosition &shape, int options=0)
| Construct the column with the given name and shape.
| ArrayColumnDesc (const String &name, const String &comment, const IPosition &shape, int options=0)
| Construct the column with the given name, shape, and comment.
| ArrayColumnDesc (const String &name, const String &comment, const String &dataManName, const String &dataManGroup, const IPosition &shape, int options=0, int ndim=-1)
| Construct the column with the given name, shape, comment, and default data manager type and group.
| ArrayColumnDesc (const ArrayColumnDesc< T > &)
| Copy constructor (copy semantics);.
| ~ArrayColumnDesc ()
ArrayColumnDesc< T > & | operator= (const ArrayColumnDesc< T > &)
| Assignment (copy semantics);.
BaseColumnDesc * | clone () const
| Clone this column description to another.
void | registerClass () const
| Register the construction function of this class.
Public Member Functions inherited from casacore::ArrayColumnDescBase
| ArrayColumnDescBase (const String &name, const String &comment, const String &dataManagerType, const String &dataManagerGroup, DataType, const String &dataTypeId, Int options, uInt ndim, const IPosition &shape)
| Construct with given parameters.
| ArrayColumnDescBase (const ArrayColumnDescBase &)
| Copy constructor (copy semantics);.
| ~ArrayColumnDescBase ()
ArrayColumnDescBase & | operator= (const ArrayColumnDescBase &)
| Assignment (copy semantics);.
String | className () const
| Get the name of this class.
virtual PlainColumn * | makeColumn (ColumnSet *) const
| Create a Column object out of this.
void | show (ostream &os) const
| Show the column.
Public Member Functions inherited from casacore::BaseColumnDesc
| BaseColumnDesc (const String &name, const String &comment, const String &dataManagerType, const String &dataManagerGroup, DataType, const String &dataTypeId, Int options, uInt ndim, const IPosition &shape, Bool isScalar, Bool isArray, Bool isTable)
| Construct the column base object.
| BaseColumnDesc (const BaseColumnDesc &)
| Copy constructor (copy semantics).
virtual | ~BaseColumnDesc ()
TableRecord & | rwKeywordSet ()
| Get access to the set of keywords.
const TableRecord & | keywordSet () const
const String & | name () const
| Get the name of the column.
DataType | dataType () const
| Get the data type of the column.
const String & | dataTypeId () const
| Get the type id for non-standard data types (i.e.
const String & | dataManagerType () const
| Get the type name of the default data manager.
String & | dataManagerType ()
| Get the type name of the default data manager.
const String & | dataManagerGroup () const
| Get the data manager group.
String & | dataManagerGroup ()
| Get the data manager group.
void | setDefaultDataManager (Bool always)
| Set the data manager type and group to the default.
const String & | comment () const
| Get comment string.
String & | comment ()
| Get comment string (allowing it to be changed).
Int | options () const
| Get the options.
Bool | isScalar () const
| Test if column is scalar, array or table.
Bool | isArray () const
Bool | isTable () const
Int | ndim () const
| Get the number of dimensions.
const IPosition & | shape () const
| Get the predefined shape.
void | setNdim (uInt ndim)
| Set the number of dimensions.
void | setShape (const IPosition &shape)
| Set the predefined shape.
void | setShape (const IPosition &shape, Bool directOption)
void | setOptions (Int options)
| Set the options to the given value.
uInt | maxLength () const
| Get the maximum value length.
void | setMaxLength (uInt maxLength)
| Set the maximum value length.
const TableDesc * | tableDesc () const
| Get table description (in case column contains subtables).
virtual TableDesc * | tableDesc ()
void | setName (const String &name)
| Set the name of the column (for a rename).

## Static Public Member Functions

static BaseColumnDesc * | makeDesc (const String &name)
| Create the object from AipsIO (this function is registered).

## Friends

class | ColumnDesc

## Additional Inherited Members

Protected Member Functions inherited from casacore::ArrayColumnDescBase
virtual void | putDesc (AipsIO &) const
| Put the object.
virtual void | getDesc (AipsIO &)
| Get the object.
Protected Member Functions inherited from casacore::BaseColumnDesc
BaseColumnDesc & | operator= (const BaseColumnDesc &)
| Assignment (copy semantics).
void | putFile (AipsIO &, const TableAttr &) const
| Put the object.
void | getFile (AipsIO &, const TableAttr &)
| Get the object.
RefColumn * | makeRefColumn (RefTable *, BaseColumn *) const
| Make a RefColumn object out of the description.
virtual ConcatColumn * | makeConcatColumn (ConcatTable *) const
| Make a ConcatColumn object out of the description.
Protected Attributes inherited from casacore::BaseColumnDesc
String | colName_p
String | comment_p
String | dataManType_p
String | dataManGroup_p
DataType | dtype_p
String | dtypeId_p
Int | option_p
Int | nrdim_p
IPosition | shape_p
uInt | maxLength_p
TableRecord * | keySetPtr_p
Bool | isScalar_p
Bool | isArray_p
Bool | isTable_p

## Detailed Description

template<class T>
class casacore::ArrayColumnDesc< T >

Templated class for description of table array columns.

### Intended use:

Public interface

### Review Status

Reviewed By:
  Gareth Hunt
Date Reviewed:
  94Nov17

### Prerequisite

- ArrayColumnDescBase (and its prerequisites)
- TableDesc

### Etymology

This class builds descriptions of table columns where each cell (which may also be called a row) will hold an array.

### Synopsis

ArrayColumnDesc is a templated class for defining a table column containing arrays.

The table values are handled by a data manager. This can be a storage manager to store the values in a file or it can be a virtual column engine to calculate them on-the-fly. Only the basic data types are allowed when storing in a file. These are: Bool, uChar, Short, uShort, Int, uInt, Int64, float, double, Complex, DComplex and String.

At table creation time (when a table gets created from a table description), each column needs to be bound to a data manager. If not done explicitly, the table system will bind a column to the default manager defined in the column description.

An array column description consists of the following attributes:

- Name, which has to be unique and must also be different from possible table keyword names.
- Data type, which is determined by the template parameter (e.g. ArrayColumnDesc<Int>).
- A data type id, which tells the unique name of non-standard data types (i.e. for data type == TpOther).
- Comment, which defaults to the empty string. This serves purely as an informational string for the user.
- Dimensionality. If given, all arrays in the column need to have that dimensionality.
- Shape. If given, all arrays in the column need to have that shape.
- Default data manager, which will be used if a column for a newly created table is not explicitly bound to a datamanager.
- Data manager group, which serves 2 purposes. Firstly it can be used in class SetupNewTable to bind a group of columns. Secondly, when the default data managers are used, it allows, for example, to have 2 AipsIO storage managers. One for one group of columns and one for another group of columns.
- Options. These are defined in ColumnDesc.h and can be combined by logically or-ing them.
  1. ColumnDesc::FixedShape says that the arrays in all cells of a column have the same shape. This shape must be defined before a table is created. It does not tell if the array is direct or indirect. A FixedShape array is defined in every cell, while for non-FixedShape arrays a cell can be empty.
  2. ColumnDesc::Direct determines if an array is directly stored in the table or if it is stored indirectly in a separate file. Direct arrays enforce the FixedShape option. Usually indirect arrays are only read in on command, while direct arrays are held in memory. So the size of the arrays is an important factor.
- Default keyword set, which defaults to an empty set. When a table column gets created from the description, it gets a copy of this keyword set as its initial keyword set.

There are several constructors, which allow the definition of most of the above mentioned attributes. Others, like the default keyword set, have to be defined explicitly.

This class is derived from ArrayColumnDescBase, thus the functions in there also apply to this class.

Once a column description is set up satisfactorily, it must be added to a table description before it can be used by the table system.

### Example

TableDesc tabDesc("tTableDesc", "1", TableDesc::New);
// Now define array columns.
// This one is indirect and has no dimensionality mentioned yet.
// Define the keyword UNIT in it.
ArrayColumnDesc<Complex> arr1Column("Arr1", "comment for Arr1");
arr1Column.rwKeywordSet().define ("UNIT", "Jy");
tabDesc.addColumn (arr1Column);
// This one is indirect and has 3-dim arrays.
tabDesc.addColumn (ArrayColumnDesc<Int>("Arr2",
"comment for Arr2",
3));
// This one is direct and has 2-dim arrays with axis lengths 4 and 7.
tabDesc.addColumn (ArrayColumnDesc<uInt>("Arr3",
"comment for Arr1",
IPosition(2,4,7),
ColumnDesc::Direct));
casacore::ArrayColumnDesc::ArrayColumnDesc
ArrayColumnDesc(const String &name, Int ndim=-1, int options=0)
Construct the column with the given name and dimensionality.
casacore::ColumnDesc::Direct
@ Direct
direct table or array
Definition ColumnDesc.h:142
casacore::IPosition
Definition IPosition.h:117
casacore::TableDesc
Definition TableDesc.h:189
casacore::TableDesc::New
@ New
Definition TableDesc.h:193

### Motivation

Several column description classes are needed to allow the user to define attributes which are special for each column type. For scalars the special attribute is the default value. They all have to be templated to support arbitrary data types.

### Template Type Argument Requirements (T)

- Default constructor
- Copy constructor
- Assignment operator
- static String dataTypeId(); // (not needed for builtin types) This should return the unique "name" of the class.

Definition at line 234 of file ArrColDesc.h.

## Constructor & Destructor Documentation

## ArrayColumnDesc() [1/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | Int | ndim = -1,
|  | int | options = 0 )

explicit

Construct the column with the given name and dimensionality.

The data manager type defaults to the StandardStman storage manager. The data manager group defaults to the data manager type. Ndim <=0 means that the number of dimensions is free and will be defined when creating the table (rows). Ndim>0 means that the arrays in this column must have the given dimensionality. The possible options are defined in ColumnDesc.h.

References casacore::name(), casacore::ndim(), and casacore::BaseColumnDesc::options().

Referenced by ArrayColumnDesc(), and operator=().

## ArrayColumnDesc() [2/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | const String & | comment,
|  | Int | ndim = -1,
|  | int | options = 0 )

Construct the column with the given name, dimensionality, and comment.

The data manager type defaults to the StandardStman storage manager. The data manager group defaults to the data manager type. Ndim <=0 means that the number of dimensions is free and will be defined when creating the table (rows). Ndim>0 means that the arrays in this column must have the given dimensionality. The possible options are defined in ColumnDesc.h.

References casacore::comment(), casacore::name(), casacore::ndim(), and casacore::BaseColumnDesc::options().

## ArrayColumnDesc() [3/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | const String & | comment,
|  | const String & | dataManName,
|  | const String & | dataManGroup,
|  | Int | ndim = -1,
|  | int | options = 0 )

Construct the column with the given name, dimensionality, comment, and default data manager type and group.

A blank data manager group defaults to the data manager type. Ndim <=0 means that the number of dimensions is free and will be defined when creating the table (rows). Ndim>0 means that the arrays in this column must have the given dimensionality. The possible options are defined in ColumnDesc.h.

References casacore::comment(), casacore::name(), casacore::ndim(), and casacore::BaseColumnDesc::options().

## ArrayColumnDesc() [4/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | const IPosition & | shape,
|  | int | options = 0 )

Construct the column with the given name and shape.

The data manager type defaults to the StandardStman storage manager. The data manager group defaults to the data manager type. The possible options are defined in ColumnDesc.h. This constructor can only be used for FixedShape arrays, because the shape of other arrays can only be set per row.

References casacore::name(), casacore::BaseColumnDesc::options(), and casacore::shape().

## ArrayColumnDesc() [5/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | const String & | comment,
|  | const IPosition & | shape,
|  | int | options = 0 )

Construct the column with the given name, shape, and comment.

The data manager type defaults to the StandardStman storage manager. The data manager group defaults to the data manager type. The possible options are defined in ColumnDesc.h. This constructor can only be used for FixedShape arrays, because the shape of other arrays can only be set per row.

References casacore::comment(), casacore::name(), casacore::BaseColumnDesc::options(), and casacore::shape().

## ArrayColumnDesc() [6/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const String & | name,
|  | const String & | comment,
|  | const String & | dataManName,
|  | const String & | dataManGroup,
|  | const IPosition & | shape,
|  | int | options = 0,
|  | int | ndim = -1 )

Construct the column with the given name, shape, comment, and default data manager type and group.

A blank data manager group defaults to the data manager type. The possible options are defined in ColumnDesc.h. This constructor can only be used for FixedShape arrays, because the shape of other arrays can only be set per row. If both ndim and shape are given as > 0, ndim should match the length of shape.

References casacore::comment(), casacore::name(), casacore::ndim(), casacore::BaseColumnDesc::options(), and casacore::shape().

## ArrayColumnDesc() [7/7]

template<class T>

casacore::ArrayColumnDesc< T >::ArrayColumnDesc | ( | const ArrayColumnDesc< T > & |  | ) |

Copy constructor (copy semantics);.

References ArrayColumnDesc().

## ~ArrayColumnDesc()

template<class T>

casacore::ArrayColumnDesc< T >::~ArrayColumnDesc | ( |  | ) |

## Member Function Documentation

## clone()

template<class T>

BaseColumnDesc * casacore::ArrayColumnDesc< T >::clone | ( |  | ) | const

virtual

Clone this column description to another.

Implements casacore::BaseColumnDesc.

## makeDesc()

template<class T>

BaseColumnDesc * casacore::ArrayColumnDesc< T >::makeDesc | ( | const String & | name | ) |

static

Create the object from AipsIO (this function is registered).

References casacore::name().

## operator=()

template<class T>

ArrayColumnDesc< T > & casacore::ArrayColumnDesc< T >::operator= | ( | const ArrayColumnDesc< T > & |  | ) |

Assignment (copy semantics);.

References ArrayColumnDesc().

## registerClass()

template<class T>

void casacore::ArrayColumnDesc< T >::registerClass | ( |  | ) | const

Register the construction function of this class.

## Friends And Related Symbol Documentation

## ColumnDesc

template<class T>

friend class ColumnDesc

friend

Definition at line 236 of file ArrColDesc.h.

References ColumnDesc.

Referenced by ColumnDesc.

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

- tables/Tables/ArrColDesc.h