Loading...
Searching...
No Matches
casacore::ColumnDesc Class Reference
tables package (libcasa_tables) » Tables_module

More...

`#include <ColumnDesc.h>`

## Public Types

enum | Option { Direct , Undefined , FixedShape }
| Enumerate the possible column options. More...
typedef BaseColumnDesc * | ColumnDescCtor(const String &className)
| Define the type of a XXColumnDesc construction function.

## Public Member Functions

| ColumnDesc (const BaseColumnDesc &)
| Construct from a column description.
| ColumnDesc (const ColumnDesc &that)
| Copy constructor (copy semantics).
| ColumnDesc ()
| Default constructor (needed for ColumnDescSet).
| ~ColumnDesc ()
ColumnDesc & | operator= (const ColumnDesc &that)
| Assignment (copy semantics).
Bool | operator== (const ColumnDesc &) const
| Comparison.
Bool | operator!= (const ColumnDesc &) const
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.
DataType | trueDataType () const
| Get the true 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 (allowing it to be changed).
const String & | dataManagerGroup () const
| Get the data manager group.
String & | dataManagerGroup ()
| Get the data manager group.
void | setDefaultDataManager (Bool always=True)
| If always==True they are always set, otherwise only if empty.
const String & | comment () const
| Get comment string.
String & | comment ()
| Get comment string (allowing it to be changed).
int | options () const
| Get the options.
Bool | isFixedShape () const
| Check if the column is defined with a fixed shape.
Bool | isScalar () const
| Test if column is a scalar.
Bool | isArray () const
| Test if column is an array.
Bool | isTable () const
| Test if column is a table.
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).
TableDesc * | tableDesc ()
void | show () const
| Show the column on cout.
void | show (ostream &os) const
| Show the column.
void | setName (const String &name)
| Set the name of the column.
RefColumn * | makeRefColumn (RefTable *rtp, BaseColumn *bcp) const
| Create a RefColumn column object out of this column description.
ConcatColumn * | makeConcatColumn (ConcatTable *rtp) const
| Create a ConcatColumn column object out of this column description.

## Static Public Member Functions

static ColumnDescCtor * | getCtor (const String &name)
| Get a construction function for a XXColumnDesc object (thread-safe).
static void | registerCtor (const String &name, ColumnDescCtor *func)
| Register a "XXColumnDesc" constructor (thread-safe).

## Protected Attributes

BaseColumnDesc * | colPtr_p
Bool | allocated_p

## Private Member Functions

| ColumnDesc (BaseColumnDesc *)
| Construct from a pointer (for class BaseColumn).
void | checkAdd (const ColumnDescSet &cds) const
| Check if a column can be handled by ColumnDescSet.
void | checkRename (const ColumnDescSet &cds, const String &newName) const
| Check when a column gets renamed in a table description.
void | handleAdd (ColumnDescSet &cds)
| Take action after a column has been handled by ColumnDescSet.
void | handleRename (ColumnDescSet &cds, const String &oldName)
void | handleRemove (ColumnDescSet &cds)
void | renameAction (const String &newName, const String &oldName)
| This function allows each column to act upon a rename of another column.
PlainColumn * | makeColumn (ColumnSet *csp) const
| Create a PlainColumn column object out of this column description.
void | putFile (AipsIO &ios, const TableAttr &) const
| Store the object in AipsIO.
void | getFile (AipsIO &, const TableAttr &)
| Get the object from AipsIO.

## Static Private Member Functions

static std::map< String, ColumnDescCtor * > & | getRegisterMap ()
| Define a map which maps the name of the various XXColumnDesc classes to a static function constructing them.
static std::map< String, ColumnDescCtor * > | initRegisterMap ()
| Register the main data managers.

## Static Private Attributes

static std::mutex | theirMutex
| A mutex for additions to the constructor map.

## Friends

class | ColumnDescSet
class | ColumnSet
class | BaseColumn
AipsIO & | operator<< (AipsIO &ios, const ColumnDesc &cd)
| Write into AipsIO.
AipsIO & | operator>> (AipsIO &ios, ColumnDesc &cd)
| Read from AipsIO.
ostream & | operator<< (ostream &ios, const ColumnDesc &cd)
| Show on ostream.

## Detailed Description

Envelope class for the description of a table column

### Intended use:

Public interface

### Review Status

Reviewed By:
  Paul Shannon
Date Reviewed:
  1994/08/11
Test programs:
  none

### Prerequisite

- Tables module (see especially Tables.h, the module header file)
- Envelope/Letter class design (see J. Coplien, Advanced C++)

### Synopsis

Class ColumnDesc is an envelope for the letter class BaseColDesc and its derivations like ScalarColumnDesc,

ScalarRecordColumnDesc. ArrayColumnDesc, and SubTableDesc. ColumnDesc is meant to examine or slightly modify already existing column descriptions. It allows the retrieval of attributes like name, data type, etc.. For non-const ColumnDesc objects it is possible to modify the attributes comment and keyword set.

Since there are several types of columns, the class ColumnDesc cannot handle all details of those column types. Therefore, to create a column description, an instance of the specialized classes ArrayColumnDesc<T>, etc. has to be constructed. In there column type dependent things like array shape and default value can be defined.

This class also enumerates the possible options which can be used when defining a column via classes like ScalarColumnDesc<T>. These options are:

FixedShape
  This is only useful for columns containing arrays and tables. FixedShape means that the shape of the array or table must be the same in each cell of the column. If not given, the array or table shape may vary. Option Direct forces FixedShape.
Direct
  This is only useful for columns containing arrays and tables. Direct means that the data is directly stored in the table. Direct forces option FixedShape. If not given, the array or table is indirect, which implies that the data will be stored in a separate file.
Undefined
  Undefined is only useful for scalars. If not given, all possible values of the scalar have a meaning. If given, a value equal to the default value in the column description is an undefined value. The function TableColumn::isDefined will return False for such values.

### Example

TableDesc tableDesc("theTableDesc", TableDesc::New);
// Add a float scalar column.
tableDesc.addColumn (ScalarColumnDesc<float> ("NAME");
// Get the description of a column and change the comments.
// In order to change the comments, a reference must be used
// (because the ColumnDesc copy constructor and assign have copy
// semantics).
ColumnDesc& myColDesc = tableDesc.columnDesc ("aName");
myColDesc.comment() += "some more comments";
casacore::ColumnDesc::comment
const String & comment() const
Get comment string.
Definition ColumnDesc.h:229
casacore::ColumnDesc::ColumnDesc
ColumnDesc(const BaseColumnDesc &)
Construct from a column description.
casacore::ColumnDesc::tableDesc
const TableDesc * tableDesc() const
Get table description (in case column contains subtables).
Definition ColumnDesc.h:315
casacore::ScalarColumnDesc
Definition ScaColDesc.h:162
casacore::TableDesc
Definition TableDesc.h:189
casacore::TableDesc::New
@ New
Definition TableDesc.h:193

### Motivation

When getting the description of an arbitrary column, a pointer to that description is needed to allow proper execution of virtual functions. An envelope class is needed to hide this from the user.

Definition at line 130 of file ColumnDesc.h.

## Member Typedef Documentation

## ColumnDescCtor

typedef BaseColumnDesc * casacore::ColumnDesc::ColumnDescCtor(const String &className)

Define the type of a XXColumnDesc construction function.

Definition at line 350 of file ColumnDesc.h.

## Member Enumeration Documentation

## Option

enum casacore::ColumnDesc::Option

Enumerate the possible column options.

They can be combined by adding (logical or-ing) them.

Enumerator
Direct | direct table or array
Undefined | undefined values are possible
FixedShape | fixed array/table shape

Definition at line 140 of file ColumnDesc.h.

## Constructor & Destructor Documentation

## ColumnDesc() [1/4]

casacore::ColumnDesc::ColumnDesc | ( | const BaseColumnDesc & |  | ) |

Construct from a column description.

This constructor is merely for the purpose of the automatic conversion of an object like ScalarColumnDesc<T> to ColumnDesc when adding a column to the table description using the function TableDesc::addColumn.

Referenced by ColumnDesc(), operator!=(), operator<<, operator<<, operator=(), operator==(), and operator>>.

## ColumnDesc() [2/4]

casacore::ColumnDesc::ColumnDesc | ( | const ColumnDesc & | that | ) |

Copy constructor (copy semantics).

References ColumnDesc().

## ColumnDesc() [3/4]

casacore::ColumnDesc::ColumnDesc | ( |  | ) |

inline

Default constructor (needed for ColumnDescSet).

Definition at line 160 of file ColumnDesc.h.

References allocated_p, colPtr_p, and casacore::False.

## ~ColumnDesc()

casacore::ColumnDesc::~ColumnDesc | ( |  | ) |

## ColumnDesc() [4/4]

casacore::ColumnDesc::ColumnDesc | ( | BaseColumnDesc * |  | ) |

private

Construct from a pointer (for class BaseColumn).

## Member Function Documentation

## checkAdd()

void casacore::ColumnDesc::checkAdd | ( | const ColumnDescSet & | cds | ) | const

inline private

Check if a column can be handled by ColumnDescSet.

It is called before the column gets actually added, etc..

Check if the column can be added to the table description. It is implemented for a virtual column to check if the columns it uses really exist.

Definition at line 384 of file ColumnDesc.h.

References colPtr_p, and ColumnDescSet.

## checkRename()

void casacore::ColumnDesc::checkRename | ( | const ColumnDescSet & | cds,
|  | const String & | newName ) const

inline private

Check when a column gets renamed in a table description.

It is not used.

Definition at line 388 of file ColumnDesc.h.

References colPtr_p, and ColumnDescSet.

## comment() [1/2]

String & casacore::ColumnDesc::comment | ( |  | ) |

inline

Get comment string (allowing it to be changed).

Definition at line 233 of file ColumnDesc.h.

References colPtr_p.

## comment() [2/2]

const String & casacore::ColumnDesc::comment | ( |  | ) | const

inline

Get comment string.

Definition at line 229 of file ColumnDesc.h.

References colPtr_p.

## dataManagerGroup() [1/2]

String & casacore::ColumnDesc::dataManagerGroup | ( |  | ) |

inline

Get the data manager group.

(allowing it to be changed).

Definition at line 221 of file ColumnDesc.h.

References colPtr_p.

## dataManagerGroup() [2/2]

const String & casacore::ColumnDesc::dataManagerGroup | ( |  | ) | const

inline

Get the data manager group.

Definition at line 216 of file ColumnDesc.h.

References colPtr_p.

## dataManagerType() [1/2]

String & casacore::ColumnDesc::dataManagerType | ( |  | ) |

inline

Get the type name of the default data manager (allowing it to be changed).

Definition at line 212 of file ColumnDesc.h.

References colPtr_p.

## dataManagerType() [2/2]

const String & casacore::ColumnDesc::dataManagerType | ( |  | ) | const

inline

Get the type name of the default data manager.

Definition at line 207 of file ColumnDesc.h.

References colPtr_p.

## dataType()

DataType casacore::ColumnDesc::dataType | ( |  | ) | const

inline

Get the data type of the column.

This always returns the type of a scalar, even when the column contains arrays.

Definition at line 193 of file ColumnDesc.h.

References colPtr_p.

## dataTypeId()

const String & casacore::ColumnDesc::dataTypeId | ( |  | ) | const

inline

Get the type id for non-standard data types (i.e.

for TpOther). For standard data types the returned string is empty.

Definition at line 203 of file ColumnDesc.h.

References colPtr_p.

## getCtor()

ColumnDescCtor * casacore::ColumnDesc::getCtor | ( | const String & | name | ) |

static

Get a construction function for a XXColumnDesc object (thread-safe).

References name().

## getFile()

void casacore::ColumnDesc::getFile | ( | AipsIO & | ,
|  | const TableAttr & | )

private

Get the object from AipsIO.

## getRegisterMap()

std::map< String, ColumnDescCtor * > & casacore::ColumnDesc::getRegisterMap | ( |  | ) |

static private

Define a map which maps the name of the various XXColumnDesc classes to a static function constructing them.

This is used when reading a column description back; it in fact determines the exact column type and is an easier thing to do than an enormous switch statement. The map is filled with the main XXColumnDesc construction functions by the function registerColumnDesc upon the first call of ColumnDesc::getFile.

## handleAdd()

void casacore::ColumnDesc::handleAdd | ( | ColumnDescSet & | cds | ) |

inline private

Take action after a column has been handled by ColumnDescSet.

It is called after the column has been actually added, etc.. This gives, for instance, the virtual column class the opportunity to update the virtual column list.

Definition at line 397 of file ColumnDesc.h.

References colPtr_p, and ColumnDescSet.

## handleRemove()

void casacore::ColumnDesc::handleRemove | ( | ColumnDescSet & | cds | ) |

inline private

Definition at line 401 of file ColumnDesc.h.

References colPtr_p, and ColumnDescSet.

## handleRename()

void casacore::ColumnDesc::handleRename | ( | ColumnDescSet & | cds,
|  | const String & | oldName )

inline private

Definition at line 399 of file ColumnDesc.h.

References colPtr_p, and ColumnDescSet.

## initRegisterMap()

std::map< String, ColumnDescCtor * > casacore::ColumnDesc::initRegisterMap | ( |  | ) |

static private

Register the main data managers.

## isArray()

Bool casacore::ColumnDesc::isArray | ( |  | ) | const

inline

Test if column is an array.

Definition at line 256 of file ColumnDesc.h.

References colPtr_p.

## isFixedShape()

Bool casacore::ColumnDesc::isFixedShape | ( |  | ) | const

Check if the column is defined with a fixed shape.

This is always true for scalars. For arrays it is true when the FixedShape flag was set when the column was defined.

## isScalar()

Bool casacore::ColumnDesc::isScalar | ( |  | ) | const

inline

Test if column is a scalar.

Definition at line 253 of file ColumnDesc.h.

References colPtr_p.

## isTable()

Bool casacore::ColumnDesc::isTable | ( |  | ) | const

inline

Test if column is a table.

Definition at line 259 of file ColumnDesc.h.

References colPtr_p.

## keywordSet()

const TableRecord & casacore::ColumnDesc::keywordSet | ( |  | ) | const

inline

Definition at line 182 of file ColumnDesc.h.

References colPtr_p.

## makeColumn()

PlainColumn * casacore::ColumnDesc::makeColumn | ( | ColumnSet * | csp | ) | const

inline private

Create a PlainColumn column object out of this column description.

Definition at line 412 of file ColumnDesc.h.

References colPtr_p, and ColumnSet.

## makeConcatColumn()

ConcatColumn * casacore::ColumnDesc::makeConcatColumn | ( | ConcatTable * | rtp | ) | const

inline

Create a ConcatColumn column object out of this column description.

Definition at line 345 of file ColumnDesc.h.

References colPtr_p.

## makeRefColumn()

RefColumn * casacore::ColumnDesc::makeRefColumn | ( | RefTable * | rtp,
|  | BaseColumn * | bcp ) const

inline

Create a RefColumn column object out of this column description.

Definition at line 341 of file ColumnDesc.h.

References BaseColumn, and colPtr_p.

## maxLength()

uInt casacore::ColumnDesc::maxLength | ( |  | ) | const

inline

Get the maximum value length.

Definition at line 302 of file ColumnDesc.h.

References colPtr_p.

Referenced by setMaxLength().

## name()

const String & casacore::ColumnDesc::name | ( |  | ) | const

Get the name of the column.

Referenced by getCtor(), registerCtor(), and setName().

## ndim()

Int casacore::ColumnDesc::ndim | ( |  | ) | const

inline

Get the number of dimensions.

Definition at line 263 of file ColumnDesc.h.

References colPtr_p.

Referenced by setNdim().

## operator!=()

Bool casacore::ColumnDesc::operator!= | ( | const ColumnDesc & |  | ) | const

References ColumnDesc().

## operator=()

ColumnDesc & casacore::ColumnDesc::operator= | ( | const ColumnDesc & | that | ) |

Assignment (copy semantics).

References ColumnDesc().

## operator==()

Bool casacore::ColumnDesc::operator== | ( | const ColumnDesc & |  | ) | const

Comparison.

Two descriptions are equal when their data types, value types (scalar, array or table) and possible dimensionalities are equal.

References ColumnDesc().

## options()

int casacore::ColumnDesc::options | ( |  | ) | const

inline

Get the options.

The possible options are defined by the enum Option. E.g.

const ColumnDesc& coldesc = tableDesc.getColumn ("column_name");
if (coldesc.option() & ColumnDesc::Direct == ColumnDesc::Direct) {
// the column has the Direct flag set
}
casacore::ColumnDesc::Direct
@ Direct
direct table or array
Definition ColumnDesc.h:142

Definition at line 244 of file ColumnDesc.h.

References colPtr_p.

Referenced by setOptions().

## putFile()

void casacore::ColumnDesc::putFile | ( | AipsIO & | ios,
|  | const TableAttr & | ) const

private

Store the object in AipsIO.

## registerCtor()

void casacore::ColumnDesc::registerCtor | ( | const String & | name,
|  | ColumnDescCtor * | func )

static

Register a "XXColumnDesc" constructor (thread-safe).

References name().

## renameAction()

void casacore::ColumnDesc::renameAction | ( | const String & | newName,
|  | const String & | oldName )

inline private

This function allows each column to act upon a rename of another column.

If the old name is used internally, the column can update itself. It is called after handleRename has been called.

Definition at line 408 of file ColumnDesc.h.

References colPtr_p.

## rwKeywordSet()

TableRecord & casacore::ColumnDesc::rwKeywordSet | ( |  | ) |

inline

Get access to the set of keywords.

Definition at line 180 of file ColumnDesc.h.

References colPtr_p.

## setDefaultDataManager()

void casacore::ColumnDesc::setDefaultDataManager | ( | Bool | always = True | ) |

inline

If always==True they are always set, otherwise only if empty.

Definition at line 225 of file ColumnDesc.h.

References colPtr_p, and casacore::True.

## setMaxLength()

void casacore::ColumnDesc::setMaxLength | ( | uInt | maxLength | ) |

inline

Set the maximum value length.

So far, this is only possible for columns containing String values. An exception is thrown if the column data type is not TpString. Some storage managers support fixed length strings and can store them more efficiently than variable length strings.

Definition at line 310 of file ColumnDesc.h.

References colPtr_p, and maxLength().

## setName()

void casacore::ColumnDesc::setName | ( | const String & | name | ) |

inline

Set the name of the column.

Definition at line 337 of file ColumnDesc.h.

References colPtr_p, and name().

## setNdim()

void casacore::ColumnDesc::setNdim | ( | uInt | ndim | ) |

inline

Set the number of dimensions.

This is only allowed for arrays. ndim can be zero to clear the number of dimensions and the shape. Otherwise it can only be used if the dimensionality has not been defined yet.

Definition at line 277 of file ColumnDesc.h.

References colPtr_p, and ndim().

## setOptions()

void casacore::ColumnDesc::setOptions | ( | int | options | ) |

inline

Set the options to the given value.

Option ColumnDesc::Direct forces FixedShape. If FixedShape is not given (implicitly or explicitly), the column can have no shape, so its shape is cleared.

Definition at line 298 of file ColumnDesc.h.

References colPtr_p, and options().

## setShape() [1/2]

void casacore::ColumnDesc::setShape | ( | const IPosition & | shape | ) |

inline

Set the predefined shape.

This is only allowed for arrays, for which the shape has not been defined yet. If the dimensionality has already been defined, it must match. It will set the option FixedShape if not set yet.
The first version leaves the Direct option as is. The second version sets the Direct option as given.

Definition at line 288 of file ColumnDesc.h.

References colPtr_p, and shape().

## setShape() [2/2]

void casacore::ColumnDesc::setShape | ( | const IPosition & | shape,
|  | Bool | directOption )

inline

Definition at line 290 of file ColumnDesc.h.

References colPtr_p, and shape().

## shape()

const IPosition & casacore::ColumnDesc::shape | ( |  | ) | const

inline

Get the predefined shape.

If not defined, a zero shape will be returned.

Definition at line 268 of file ColumnDesc.h.

References colPtr_p.

Referenced by setShape(), and setShape().

## show() [1/2]

void casacore::ColumnDesc::show | ( |  | ) | const

Show the column on cout.

## show() [2/2]

void casacore::ColumnDesc::show | ( | ostream & | os | ) | const

Show the column.

## tableDesc() [1/2]

TableDesc * casacore::ColumnDesc::tableDesc | ( |  | ) |

inline

Definition at line 317 of file ColumnDesc.h.

References colPtr_p.

## tableDesc() [2/2]

const TableDesc * casacore::ColumnDesc::tableDesc | ( |  | ) | const

inline

Get table description (in case column contains subtables).

Definition at line 315 of file ColumnDesc.h.

References colPtr_p.

## trueDataType()

DataType casacore::ColumnDesc::trueDataType | ( |  | ) | const

Get the true data type of the column.

Unlike dataType, it returns an array data type (e.g. TpArrayInt) when the column contains arrays.

## Friends And Related Symbol Documentation

## BaseColumn

friend class BaseColumn

friend

Definition at line 134 of file ColumnDesc.h.

References BaseColumn.

Referenced by BaseColumn, and makeRefColumn().

## ColumnDescSet

friend class ColumnDescSet

friend

Definition at line 132 of file ColumnDesc.h.

References ColumnDescSet.

Referenced by checkAdd(), checkRename(), ColumnDescSet, handleAdd(), handleRemove(), and handleRename().

## ColumnSet

friend class ColumnSet

friend

Definition at line 133 of file ColumnDesc.h.

References ColumnSet.

Referenced by ColumnSet, and makeColumn().

## operator<< [1/2]

AipsIO & operator<< | ( | AipsIO & | ios,
|  | const ColumnDesc & | cd )

friend

Write into AipsIO.

References ColumnDesc().

## operator<< [2/2]

ostream & operator<< | ( | ostream & | ios,
|  | const ColumnDesc & | cd )

friend

Show on ostream.

References ColumnDesc().

## operator>>

AipsIO & operator>> | ( | AipsIO & | ios,
|  | ColumnDesc & | cd )

friend

Read from AipsIO.

References ColumnDesc().

## Member Data Documentation

## allocated_p

Bool casacore::ColumnDesc::allocated_p

protected

Definition at line 424 of file ColumnDesc.h.

Referenced by ColumnDesc().

## colPtr_p

BaseColumnDesc* casacore::ColumnDesc::colPtr_p

protected

Definition at line 423 of file ColumnDesc.h.

Referenced by checkAdd(), checkRename(), ColumnDesc(), comment(), comment(), dataManagerGroup(), dataManagerGroup(), dataManagerType(), dataManagerType(), dataType(), dataTypeId(), handleAdd(), handleRemove(), handleRename(), isArray(), isScalar(), isTable(), keywordSet(), makeColumn(), makeConcatColumn(), makeRefColumn(), maxLength(), ndim(), options(), renameAction(), rwKeywordSet(), setDefaultDataManager(), setMaxLength(), setName(), setNdim(), setOptions(), setShape(), setShape(), shape(), tableDesc(), and tableDesc().

## theirMutex

std::mutex casacore::ColumnDesc::theirMutex

static private

A mutex for additions to the constructor map.

Definition at line 360 of file ColumnDesc.h.

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

- tables/Tables/ColumnDesc.h