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

Virtual column engine forwarding to other columns/rows. More...

`#include <ForwardColRow.h>`

## Public Member Functions

| ForwardColumnIndexedRowEngine (const String &dataManagerName, const Record &spec)
| The default constructor is required for reconstruction of the engine when a table is read back.
| ForwardColumnIndexedRowEngine (const Table &referencedTable, const String &rowColumnName, const String &dataManagerName)
| Create the engine.
| ForwardColumnIndexedRowEngine (const Table &referencedTable, const String &rowColumnName)
| Create the engine.
| ~ForwardColumnIndexedRowEngine ()
| Destructor is mandatory.
| ForwardColumnIndexedRowEngine (const ForwardColumnIndexedRowEngine &)=delete
| The copy constructor is forbidden.
ForwardColumnIndexedRowEngine & | operator= (const ForwardColumnIndexedRowEngine &)=delete
| Assignment is forbidden.
DataManager * | clone () const
| Clone the engine object.
String | dataManagerType () const
| Return the type name of the engine (i.e.
virtual Record | dataManagerSpec () const
| Record a record containing data manager specifications.
rownr_t | convertRownr (rownr_t rownr)
| Convert the rownr to the rownr in the underlying table.
Public Member Functions inherited from casacore::ForwardColumnEngine
| ForwardColumnEngine (const String &dataManagerName, const Record &spec)
| The default constructor is required for reconstruction of the engine when a table is read back.
| ForwardColumnEngine (const Table &referencedTable, const String &dataManagerName)
| Create the engine.
| ForwardColumnEngine (const Table &referencedTable)
| Create the engine.
| ~ForwardColumnEngine ()
| Destructor is mandatory.
| ForwardColumnEngine (const ForwardColumnEngine &)=delete
| The copy constructor is forbidden.
ForwardColumnEngine & | operator= (const ForwardColumnEngine &)=delete
| Assignment is forbidden.
String | dataManagerName () const
| Return the name of the data manager.
const String & | suffix () const
| Get the suffix to be used for names.
void | setRefTable (const Table &refTable)
| Set RefTable_p if not set yet.
Public Member Functions inherited from casacore::VirtualColumnEngine
| VirtualColumnEngine ()
| Create the object.
virtual | ~VirtualColumnEngine ()
| VirtualColumnEngine (const VirtualColumnEngine &)=delete
| The copy constructor cannot be used for this base class.
VirtualColumnEngine & | operator= (const VirtualColumnEngine &)=delete
| Assignment cannot be used for this base class.
Public Member Functions inherited from casacore::DataManager
| DataManager ()
| Default constructor.
virtual | ~DataManager ()
| DataManager (const DataManager &)=delete
| The copy constructor cannot be used for this base class.
DataManager & | operator= (const DataManager &)=delete
| Assignment cannot be used for this base class.
void | dataManagerInfo (Record &info) const
| Add SEQNR and SPEC (the DataManagerSpec subrecord) to the info.
virtual Record | getProperties () const
| Get data manager properties that can be modified.
virtual void | setProperties (const Record &spec)
| Modify data manager properties given in record fields.
virtual Bool | canReallocateColumns () const
| Tell if the data manager wants to reallocate the data manager column objects.
virtual DataManagerColumn * | reallocateColumn (DataManagerColumn *column)
| Reallocate the column object if it is part of this data manager.
uInt | sequenceNr () const
| Get the (unique) sequence nr of this data manager.
uInt | ncolumn () const
| Get the nr of columns in this data manager (can be zero).
Bool | asBigEndian () const
| Have the data to be stored in big or little endian canonical format?
const TSMOption & | tsmOption () const
| Get the TSM option.
std::shared_ptr< MultiFileBase > | multiFile ()
| Get the MultiFile pointer (can be 0).
String | keywordName (const String &keyword) const
| Compose a keyword name from the given keyword appended with the sequence number (e.g.
String | fileName () const
| Compose a unique filename from the table name and sequence number.
ByteIO::OpenOption | fileOption () const
| Get the AipsIO option of the underlying file.
virtual Bool | isRegular () const
| Is this a regular storage manager?
Table & | table () const
| Get the table this object is associated with.
virtual Bool | canRenameColumn () const
| Does the data manager allow to rename columns?
virtual void | setMaximumCacheSize (uInt nMiB)
| Set the maximum cache size (in bytes) to be used by a storage manager.
virtual void | showCacheStatistics (std::ostream &) const
| Show the data manager's IO statistics.
DataManagerColumn * | createScalarColumn (const String &columnName, int dataType, const String &dataTypeId)
| Create a column in the data manager on behalf of a table column.
DataManagerColumn * | createDirArrColumn (const String &columnName, int dataType, const String &dataTypeId)
| Create a direct array column.
DataManagerColumn * | createIndArrColumn (const String &columnName, int dataType, const String &dataTypeId)
| Create an indirect array column.
DataManager * | getClone () const
| Has the object already been cloned?
void | setClone (DataManager *clone) const
| Set the pointer to the clone.

## Static Public Member Functions

static String | className ()
| Return the name of the class.
static void | registerClass ()
| Register the class name and the static makeObject "constructor".
static DataManager * | makeObject (const String &dataManagerName, const Record &spec)
| Define the "constructor" to construct this engine when a table is read back.
Static Public Member Functions inherited from casacore::ForwardColumnEngine
static String | className ()
| Return the name of the class.
static void | registerClass ()
| Register the class name and the static makeObject "constructor".
static DataManager * | makeObject (const String &dataManagerType, const Record &spec)
| Define the "constructor" to construct this engine when a table is read back.
Static Public Member Functions inherited from casacore::DataManager
static void | registerCtor (const String &type, DataManagerCtor func)
| Register a mapping of a data manager type to its static construction function.
static DataManagerCtor | getCtor (const String &dataManagerType)
| Get the "constructor" of a data manager (thread-safe).
static Bool | isRegistered (const String &dataManagerType)
| Test if a data manager is registered (thread-safe).
static DataManager * | unknownDataManager (const String &dataManagerType, const Record &spec)
| Serve as default function for theirRegisterMap, which catches all unknown data manager types.

## Private Member Functions

DataManagerColumn * | makeScalarColumn (const String &columnName, int dataType, const String &dataTypeId)
| Create the column object for the scalar column in this engine.
DataManagerColumn * | makeIndArrColumn (const String &columnName, int dataType, const String &dataTypeId)
| Create the column object for the indirect array column in this engine.
void | create64 (rownr_t initialNrrow)
| Initialize the object for a new table.
void | prepare ()
| Initialize the engine.
void | reopenRW ()
| Reopen the engine for read/write access.

## Private Attributes

String | rowColumnName_p
| Define the column with the row numbers (must have data type uInt).
ScalarColumn< uInt > | rowColumn_p
Block< ForwardColumnIndexedRow * > | refColumns_p
| Define the various engine column objects.
Int64 | lastRow_p
| Cache of last row used to get row number.
rownr_t | rowNumber_p

## Additional Inherited Members

Static Public Attributes inherited from casacore::DataManager
static rownr_t | MAXROWNR32
| Define the highest row number that can be represented as signed 32-bit.
Protected Member Functions inherited from casacore::ForwardColumnEngine
void | setSuffix (const String &suffix)
| Set the suffix.
void | addForwardColumn (ForwardColumn *colp)
| Add a ForwardColumn object to the block.
const Table & | refTable () const
| Get access to the refTable_p data member.
void | baseCreate ()
| Do the creation (i.e.
void | basePrepare ()
| Do the preparation of the engine by preparing all columns.
Protected Member Functions inherited from casacore::DataManager
void | decrementNcolumn ()
| Decrement number of columns (in case a column is deleted).
void | setEndian (Bool bigEndian)
| Tell the data manager if big or little endian format is needed.
void | setTsmOption (const TSMOption &tsmOption)
| Tell the data manager which TSM option to use.
void | setMultiFile (const std::shared_ptr< MultiFileBase > &mfile)
| Tell the data manager that MultiFile can be used.
virtual Bool | hasMultiFileSupport () const
| Does the data manager support use of MultiFile?
void | throwDataTypeOther (const String &columnName, int dataType) const
| Throw an exception in case data type is TpOther, because the storage managers (and maybe other data managers) do not support such columns.

## Detailed Description

Virtual column engine forwarding to other columns/rows.

### Intended use:

Public interface

### Prerequisite

- VirtualColumnEngine

### Etymology

ForwardColumnIndexedRowEngine is a virtual column engine which forwards the gets and puts of columns to corresponding columns in another table. Furthermore it maps the row number by indexing the row number in the referenced table.

### Synopsis

ForwardColumnIndexedRowEngine is a data manager which forwards the gets and puts of columns to columns with the same names in another table. In that sense it is the same as the virtual column engine

ForwardColumnEngine. However, it also forwards the row number. That is, it uses a column containing row numbers to index the correct row in the referenced table. The name of this column and the name of the referenced table have to be given when constructing the engine.

For example:
Table TABA contains columns A, B and C and consists of N rows. Table TABF uses ForwardColumnIndexedRowEngine to forward its columns A, B and C to the corresponding columns in TABA. Furthermore it contains a column ROW containing row numbers in TABA. This column is the mapping of row numbers in TABF to rows in TABA. E.g. if ROW has the value 25 in row 10, row 10 of TABF is forwarded to row 25 in TABA.

Actually, puts are not possible. When multiple rows map to the same row in the referenced table, putting a value in one row would also change the value in another row referencing the same underlying row. This could result in unexpected behaviour.

The engine consists of a set of

ForwardColumnIndexedRow objects, which handle the actual gets.

### Motivation

In some ways it overlaps the functionality of the storage manager StManMirAIO. They both allow to have the same value used by multiple rows. However, StManMirAIO only allows that for consecutive rows, while this engine allows it for any row. On the other side, StManMirAIO is faster.

### Example

// The original table.
Table tab("someTable");
// Create another table with the same description.
SetupNewTable newtab("tForwardColRow.data", tab.tableDesc(), Table::New);
// Create an engine which forwards to the original table and uses
// column rowColumn to get the row number in the referenced table.
// Bind all columns in the new table to the forwarding engine.
ForwardColumnIndexedRowEngine fce(tab, "rowColumn");
newtab.bindAll (fce);
// Create the new table.
// Every get and put on this table is forwarded to the original table.
// NB. Puts cannot be done here, because the original table was
// opened as readonly.
// Of course, some columns could have been bound to another
// data manager (storage manager, calibration engine,...).
Table forwTab(newtab);
casacore::ForwardColumnIndexedRowEngine::ForwardColumnIndexedRowEngine
ForwardColumnIndexedRowEngine(const String &dataManagerName, const Record &spec)
The default constructor is required for reconstruction of the engine when a table is read back.
casacore::SetupNewTable
Create a new table - define shapes, data managers, etc.
Definition SetupNewTab.h:337
casacore::Table
Definition Table.h:157
casacore::Table::New
@ New
create table
Definition Table.h:175

Definition at line 279 of file ForwardColRow.h.

## Constructor & Destructor Documentation

## ForwardColumnIndexedRowEngine() [1/4]

casacore::ForwardColumnIndexedRowEngine::ForwardColumnIndexedRowEngine | ( | const String & | dataManagerName,
|  | const Record & | spec )

The default constructor is required for reconstruction of the engine when a table is read back.

References casacore::ForwardColumnEngine::dataManagerName(), and casacore::Record().

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

## ForwardColumnIndexedRowEngine() [2/4]

casacore::ForwardColumnIndexedRowEngine::ForwardColumnIndexedRowEngine | ( | const Table & | referencedTable,
|  | const String & | rowColumnName,
|  | const String & | dataManagerName )

Create the engine.

The columns using this engine will reference the given table. The column with the given name contains the row number mapping, i.e. a row number in a get or put is converted to a row number in the referenced table using the value in this column. The data manager gets the given name.

References casacore::ForwardColumnEngine::dataManagerName().

## ForwardColumnIndexedRowEngine() [3/4]

casacore::ForwardColumnIndexedRowEngine::ForwardColumnIndexedRowEngine | ( | const Table & | referencedTable,
|  | const String & | rowColumnName )

Create the engine.

The columns using this engine will reference the given table. The column with the given name contains the row number mapping, i.e. a row number in a get or put is converted to a row number in the referenced table using the value in this column. The data manager has no name.

## ~ForwardColumnIndexedRowEngine()

casacore::ForwardColumnIndexedRowEngine::~ForwardColumnIndexedRowEngine | ( |  | ) |

Destructor is mandatory.

## ForwardColumnIndexedRowEngine() [4/4]

casacore::ForwardColumnIndexedRowEngine::ForwardColumnIndexedRowEngine | ( | const ForwardColumnIndexedRowEngine & |  | ) |

delete

The copy constructor is forbidden.

References ForwardColumnIndexedRowEngine().

## Member Function Documentation

## className()

String casacore::ForwardColumnIndexedRowEngine::className | ( |  | ) |

static

Return the name of the class.

## clone()

DataManager * casacore::ForwardColumnIndexedRowEngine::clone | ( |  | ) | const

virtual

Clone the engine object.

Reimplemented from casacore::ForwardColumnEngine.

## convertRownr()

rownr_t casacore::ForwardColumnIndexedRowEngine::convertRownr | ( | rownr_t | rownr | ) |

inline

Convert the rownr to the rownr in the underlying table.

Definition at line 388 of file ForwardColRow.h.

References lastRow_p, rowColumn_p, and rowNumber_p.

## create64()

void casacore::ForwardColumnIndexedRowEngine::create64 | ( | rownr_t | initialNrrow | ) |

private virtual

Initialize the object for a new table.

It defines the column keywords containing the name of the original table, which can be the parent of the referenced table. It also defines a keyword containing the row column name.

Reimplemented from casacore::ForwardColumnEngine.

## dataManagerSpec()

virtual Record casacore::ForwardColumnIndexedRowEngine::dataManagerSpec | ( |  | ) | const

virtual

Record a record containing data manager specifications.

Reimplemented from casacore::ForwardColumnEngine.

References casacore::Record().

## dataManagerType()

String casacore::ForwardColumnIndexedRowEngine::dataManagerType | ( |  | ) | const

virtual

Return the type name of the engine (i.e.

its class name ForwardColumnIndexedRowEngine).

Reimplemented from casacore::ForwardColumnEngine.

## makeIndArrColumn()

DataManagerColumn * casacore::ForwardColumnIndexedRowEngine::makeIndArrColumn | ( | const String & | columnName,
|  | int | dataType,
|  | const String & | dataTypeId )

private virtual

Create the column object for the indirect array column in this engine.

Reimplemented from casacore::ForwardColumnEngine.

References casacore::dataType().

## makeObject()

DataManager * casacore::ForwardColumnIndexedRowEngine::makeObject | ( | const String & | dataManagerName,
|  | const Record & | spec )

static

Define the "constructor" to construct this engine when a table is read back.

This "constructor" has to be registered by the user of the engine. If the engine is commonly used, its registration can be added into the registerAllCtor function in DataManReg.cc. This function gets automatically invoked by the table system.

References casacore::ForwardColumnEngine::dataManagerName(), and casacore::Record().

## makeScalarColumn()

DataManagerColumn * casacore::ForwardColumnIndexedRowEngine::makeScalarColumn | ( | const String & | columnName,
|  | int | dataType,
|  | const String & | dataTypeId )

private virtual

Create the column object for the scalar column in this engine.

Reimplemented from casacore::ForwardColumnEngine.

References casacore::dataType().

## operator=()

ForwardColumnIndexedRowEngine & casacore::ForwardColumnIndexedRowEngine::operator= | ( | const ForwardColumnIndexedRowEngine & |  | ) |

delete

Assignment is forbidden.

References ForwardColumnIndexedRowEngine().

## prepare()

void casacore::ForwardColumnIndexedRowEngine::prepare | ( |  | ) |

private virtual

Initialize the engine.

It gets the name of the original table(s) from the column keywords, opens those tables and attaches the ForwardColumnIndexedRow objects to the columns in those tables.

Reimplemented from casacore::ForwardColumnEngine.

## registerClass()

void casacore::ForwardColumnIndexedRowEngine::registerClass | ( |  | ) |

static

Register the class name and the static makeObject "constructor".

This will make the engine known to the table system.

## reopenRW()

void casacore::ForwardColumnIndexedRowEngine::reopenRW | ( |  | ) |

private virtual

Reopen the engine for read/write access.

This cannot be done, so all columns remain readonly. The function is needed to override the behaviour of its base class.

Reimplemented from casacore::ForwardColumnEngine.

## Member Data Documentation

## lastRow_p

Int64 casacore::ForwardColumnIndexedRowEngine::lastRow_p

private

Cache of last row used to get row number.

Definition at line 369 of file ForwardColRow.h.

Referenced by convertRownr().

## refColumns_p

Block<ForwardColumnIndexedRow*> casacore::ForwardColumnIndexedRowEngine::refColumns_p

private

Define the various engine column objects.

Definition at line 367 of file ForwardColRow.h.

## rowColumn_p

ScalarColumn<uInt> casacore::ForwardColumnIndexedRowEngine::rowColumn_p

private

Definition at line 365 of file ForwardColRow.h.

Referenced by convertRownr().

## rowColumnName_p

String casacore::ForwardColumnIndexedRowEngine::rowColumnName_p

private

Define the column with the row numbers (must have data type uInt).

Definition at line 364 of file ForwardColRow.h.

## rowNumber_p

rownr_t casacore::ForwardColumnIndexedRowEngine::rowNumber_p

private

Definition at line 370 of file ForwardColRow.h.

Referenced by convertRownr().

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

- tables/DataMan/ForwardColRow.h