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

More...

`#include <MemoryTable.h>`

## Public Member Functions

| MemoryTable (SetupNewTable &, rownr_t nrrow, Bool initialize)
| Create the table in memory using the definitions in the SetupNewTable object.
virtual | ~MemoryTable ()
| The destructor deletes all data.
| MemoryTable (const MemoryTable &)=delete
| Copy constructor is forbidden, because copying a table requires some more knowledge (like table name of result).
MemoryTable & | operator= (const MemoryTable &)=delete
| Assignment is forbidden, because copying a table requires some more knowledge (like table name of result).
virtual void | reopenRW ()
| Try to reopen the table (the underlying one) for read/write access.
virtual Bool | asBigEndian () const
| Is the table stored in big or little endian format?
virtual const StorageOption & | storageOption () const
| Get the storage option used for the table.
virtual Bool | isMultiUsed (Bool checkSubTable) const
| Is the table in use (i.e.
virtual const TableLock & | lockOptions () const
| Get the locking info.
virtual void | mergeLock (const TableLock &lockOptions)
| Merge the given lock info with the existing one.
virtual Bool | hasLock (FileLocker::LockType) const
| Has this process the read or write lock, thus can the table be read or written safely?
virtual Bool | lock (FileLocker::LockType, uInt nattempts)
| Locking the table is a no-op.
virtual void | unlock ()
| Unlocking the table is a no-op.
virtual void | flush (Bool fsync, Bool recursive)
| Flushing the table is a no-op.
virtual void | resync ()
| Resyncing the Table is a no-op.
virtual uInt | getModifyCounter () const
| Get the modify counter.
virtual Bool | isWritable () const
| Test if the table is opened as writable.
virtual void | copy (const String &newName, int tableOption) const
| Copy the table and all its subtables.
virtual void | deepCopy (const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, Bool, int endianFormat, Bool noRows) const
virtual void | rename (const String &newName, int tableOption)
| Rename the table.
virtual int | tableType () const
| Get the table type (Table::Memory).
virtual TableDesc | actualTableDesc () const
| Get the actual table description.
virtual Record | dataManagerInfo () const
| Get the data manager info.
virtual TableRecord & | keywordSet ()
| Get readonly access to the table keyword set.
virtual TableRecord & | rwKeywordSet ()
| Get read/write access to the table keyword set.
virtual void | flushTableInfo ()
| Write the TableInfo object.
virtual BaseColumn * | getColumn (uInt columnIndex) const
| Get a column object using its index.
virtual BaseColumn * | getColumn (const String &columnName) const
| Get a column object using its name.
virtual Bool | canAddRow () const
| Test if it is possible to add a row to this table (yes).
virtual void | addRow (rownr_t nrrow=1, Bool initialize=True)
| Add one or more rows and possibly initialize them.
virtual Bool | canRemoveRow () const
| Test if it is possible to remove a row from this table (yes).
virtual void | removeRow (rownr_t rownr)
| Remove the given row.
virtual void | addColumn (const ColumnDesc &columnDesc, Bool addToParent)
| Add a column to the table.
virtual void | addColumn (const ColumnDesc &columnDesc, const String &dataManager, Bool byName, Bool addToParent)
virtual void | addColumn (const ColumnDesc &columnDesc, const DataManager &dataManager, Bool addToParent)
virtual void | addColumn (const TableDesc &tableDesc, const DataManager &dataManager, Bool addToParent)
virtual Bool | canRemoveColumn (const Vector< String > &columnNames) const
| Test if columns can be removed (yes).
virtual void | removeColumn (const Vector< String > &columnNames)
| Remove columns.
virtual Bool | canRenameColumn (const String &columnName) const
| Test if a column can be renamed (yes).
virtual void | renameColumn (const String &newName, const String &oldName)
| Rename a column.
virtual void | renameHypercolumn (const String &newName, const String &oldName)
| Rename a hypercolumn.
virtual DataManager * | findDataManager (const String &name, Bool byColumn) const
| Find the data manager with the given name or for the given column.
Public Member Functions inherited from casacore::BaseTable
| BaseTable (const String &tableName, int tableOption, rownr_t nrrow)
| Initialize the object.
| BaseTable (MPI_Comm mpiComm, const String &tableName, int tableOption, rownr_t nrrow)
| MPI version of the constructor.
void | BaseTableCommon (const String &tableName, int tableOption, rownr_t nrrow)
| Common code shared by the MPI constructor and non-MPI constructor.
virtual | ~BaseTable ()
| The destructor will delete the table if needed.
| BaseTable (const BaseTable &)=delete
| Copy constructor is forbidden, because copying a table requires some more knowledge (like table name of result).
BaseTable & | operator= (const BaseTable &)=delete
| Assignment is forbidden, because copying a table requires some more knowledge (like table name of result).
virtual Bool | isNull () const
| Is the table a null table?
virtual void | changeTiledDataOnly ()
| Indicate we will only modify data values in existing tiled columns.
virtual void | setTableChanged ()
| Set the table to being changed.
void | doNotWrite ()
| Do not write the table (used in in case of exceptions).
Bool | isColumnWritable (const String &columnName) const
| Test if the given column is writable.
Bool | isColumnWritable (uInt columnIndex) const
Bool | isColumnStored (const String &columnName) const
| Test if the given column is stored (otherwise it is virtual).
Bool | isColumnStored (uInt columnIndex) const
const String & | tableName () const
| Get the table name.
virtual void | getPartNames (Block< String > &names, Bool recursive) const
| Get the names of the tables this table consists of.
int | tableOption () const
| Get the table option.
void | markForDelete (Bool callback, const String &oldName)
| Mark the table for delete.
void | unmarkForDelete (Bool callback, const String &oldName)
| Unmark the table for delete.
Bool | isMarkedForDelete () const
| Test if the table is marked for delete.
const TableDesc & | tableDesc () const
| Get the table description.
void | showStructure (std::ostream &, Bool showDataMan, Bool showColumns, Bool showSubTables, Bool sortColumns, Bool cOrder)
| Show the table structure (implementation of Table::showStructure).
TableInfo & | tableInfo ()
| Get access to the TableInfo object.
rownr_t | nrow () const
| Get number of rows.
void | removeRow (const Vector< rownr_t > &rownrs)
void | removeRow (const Vector< uInt > &rownrs)
std::shared_ptr< BaseTable > | select (const TableExprNode &, rownr_t maxRow, rownr_t offset)
| Select rows using the given expression (which can be null).
std::shared_ptr< BaseTable > | select (rownr_t maxRow, rownr_t offset)
| Select maxRow rows and skip first offset rows.
std::shared_ptr< BaseTable > | select (const Vector< rownr_t > &rownrs)
| Select rows using a vector of row numbers.
std::shared_ptr< BaseTable > | select (const Block< Bool > &mask)
| Select rows using a mask block.
std::shared_ptr< BaseTable > | project (const Block< String > &columnNames)
| Project the given columns (i.e.
std::shared_ptr< BaseTable > | tabAnd (BaseTable *)
| Do logical operations on a table.
std::shared_ptr< BaseTable > | tabOr (BaseTable *)
| union with another table
std::shared_ptr< BaseTable > | tabSub (BaseTable *)
| subtract another table
std::shared_ptr< BaseTable > | tabXor (BaseTable *)
| xor with another table
std::shared_ptr< BaseTable > | tabNot ()
| take complement
std::shared_ptr< BaseTable > | sort (const Block< String > &columnNames, const Block< std::shared_ptr< BaseCompare > > &compareObjects, const Block< Int > &sortOrder, int sortOption, std::shared_ptr< Vector< rownr_t > > sortIterBoundaries=nullptr, std::shared_ptr< Vector< size_t > > sortIterKeyIdxChange=nullptr)
| Sort a table on one or more columns of scalars.
BaseTableIterator * | makeIterator (const Block< String > &columnNames, const Block< std::shared_ptr< BaseCompare > > &, const Block< Int > &orders, int option, bool cacheIterationBoundaries=false)
| Create an iterator.
void | addColumns (const TableDesc &tableDesc, const Record &dmInfo, Bool addToParent)
| Add one or more columns to the table.
Bool | checkRemoveColumn (const Vector< String > &columnNames, Bool throwException) const
| Check if the set of columns can be removed.
virtual Vector< rownr_t > | rowNumbers () const
| Get a vector of row numbers.
virtual BaseTable * | root ()
| Get pointer to root table (i.e.
virtual Bool | rowOrder () const
| Tell if the table is in row order.
virtual Vector< rownr_t > & | rowStorage ()
| By the default the table cannot return the storage of rownrs.
virtual Bool | adjustRownrs (rownr_t nrrow, Vector< rownr_t > &rownrs, Bool determineOrder) const
| Adjust the row numbers to be the actual row numbers in the root table.
virtual std::shared_ptr< BaseTable > | doSort (Block< BaseColumn * > &, const Block< std::shared_ptr< BaseCompare > > &, const Block< Int > &sortOrder, int sortOption, std::shared_ptr< Vector< rownr_t > > sortIterBoundaries, std::shared_ptr< Vector< size_t > > sortIterKeyIdxChange)
| Do the actual sort.
std::shared_ptr< RefTable > | makeRefTable (Bool rowOrder, rownr_t initialNrrow)
| Create a RefTable object.
void | checkRowNumber (rownr_t rownr) const
| Check if the row number is valid.
int | traceId () const
| Get the table's trace-id.

## Private Member Functions

void | setup (BaseTable *btp)
| Setup the main parts of the object.

## Private Attributes

std::shared_ptr< ColumnSet > | colSetPtr_p
TableLockData * | lockPtr_p

## Additional Inherited Members

Static Public Member Functions inherited from casacore::BaseTable
static TableInfo | tableInfo (const String &tableName)
| Get the table info of the table with the given name.
Protected Member Functions inherited from casacore::BaseTable
void | scratchCallback (Bool isScratch, const String &oldName) const
| Do the callback for scratch tables (if callback is set).
Bool | makeTableDir ()
| Create the table directory when needed (and possible).
void | trueDeepCopy (const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, int endianFormat, Bool noRows) const
| Make a true deep copy of the table.
void | prepareCopyRename (const String &newName, int tableOption) const
| Prepare for copying or renaming a table.
virtual void | renameSubTables (const String &newName, const String &oldName)
| Rename the subtables (used by rename function).
void | throwIfTableExists ()
| Check if the table already exists.
Bool | openedForWrite () const
| Test if the table is opened for write.
void | writeStart (AipsIO &, Bool bigEndian)
| Start writing a table.
void | writeEnd (AipsIO &)
| End writing a table.
Bool | shouldNotWrite () const
| Should the table be written.
void | getTableInfo ()
| Read the TableInfo object.
Protected Attributes inherited from casacore::BaseTable
std::weak_ptr< BaseTable > | thisPtr_p
rownr_t | nrrow_p
rownr_t | nrrowToAdd_p
std::shared_ptr< TableDesc > | tdescPtr_p
String | name_p
int | option_p
Bool | noWrite_p
Bool | delete_p
TableInfo | info_p
Bool | madeDir_p
int | itsTraceId

## Detailed Description

Class for a table held in memory

### Intended use:

Internal

### Review Status

Reviewed By:
  UNKNOWN
Date Reviewed:
  before2004/08/25

### Prerequisite

- BaseTable

### Synopsis

MemoryTable holds all its data in memory. It means that the data is not persistent. However, it can be copied to another table to make the data persistent. Furthermore it is a table as all other tables, so all table functions can be applied to it. Some functions (e.g. lock) won't do anything. Also all table operations like sorting, selecting, and iterating can be used.

The constructor accepts a SetupNewTable object which can contain bindings of columns to any data manager. All bindings to storage managers will be replaced by a binding to the memory based storage manager MemoryStMan. Also all unbound columns will be bound to MemoryStMan. Thus it is still possible that a column is bound to a virtual column engine like CompressComplex.

Definition at line 80 of file MemoryTable.h.

## Constructor & Destructor Documentation

## MemoryTable() [1/2]

casacore::MemoryTable::MemoryTable | ( | SetupNewTable & | ,
|  | rownr_t | nrrow,
|  | Bool | initialize )

Create the table in memory using the definitions in the SetupNewTable object.

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

## ~MemoryTable()

virtual casacore::MemoryTable::~MemoryTable | ( |  | ) |

virtual

The destructor deletes all data.

## MemoryTable() [2/2]

casacore::MemoryTable::MemoryTable | ( | const MemoryTable & |  | ) |

delete

Copy constructor is forbidden, because copying a table requires some more knowledge (like table name of result).

References MemoryTable().

## Member Function Documentation

## actualTableDesc()

virtual TableDesc casacore::MemoryTable::actualTableDesc | ( |  | ) | const

virtual

Get the actual table description.

Implements casacore::BaseTable.

## addColumn() [1/4]

virtual void casacore::MemoryTable::addColumn | ( | const ColumnDesc & | columnDesc,
|  | Bool | addToParent )

virtual

Add a column to the table.

If the DataManager is not a virtual engine, MemoryStMan will be used. The last Bool argument is not used in MemoryTable, but can be used in other classes derived from BaseTable.

Reimplemented from casacore::BaseTable.

## addColumn() [2/4]

virtual void casacore::MemoryTable::addColumn | ( | const ColumnDesc & | columnDesc,
|  | const DataManager & | dataManager,
|  | Bool | addToParent )

virtual

Reimplemented from casacore::BaseTable.

## addColumn() [3/4]

virtual void casacore::MemoryTable::addColumn | ( | const ColumnDesc & | columnDesc,
|  | const String & | dataManager,
|  | Bool | byName,
|  | Bool | addToParent )

virtual

Reimplemented from casacore::BaseTable.

## addColumn() [4/4]

virtual void casacore::MemoryTable::addColumn | ( | const TableDesc & | tableDesc,
|  | const DataManager & | dataManager,
|  | Bool | addToParent )

virtual

Reimplemented from casacore::BaseTable.

References casacore::BaseTable::tableDesc().

## addRow()

virtual void casacore::MemoryTable::addRow | ( | rownr_t | nrrow = 1,
|  | Bool | initialize = True )

virtual

Add one or more rows and possibly initialize them.

This will fail for tables not supporting addition of rows.

Reimplemented from casacore::BaseTable.

References casacore::True.

## asBigEndian()

virtual Bool casacore::MemoryTable::asBigEndian | ( |  | ) | const

virtual

Is the table stored in big or little endian format?

It returns the endian format of the machine.

Implements casacore::BaseTable.

## canAddRow()

virtual Bool casacore::MemoryTable::canAddRow | ( |  | ) | const

virtual

Test if it is possible to add a row to this table (yes).

Reimplemented from casacore::BaseTable.

## canRemoveColumn()

virtual Bool casacore::MemoryTable::canRemoveColumn | ( | const Vector< String > & | columnNames | ) | const

virtual

Test if columns can be removed (yes).

Implements casacore::BaseTable.

## canRemoveRow()

virtual Bool casacore::MemoryTable::canRemoveRow | ( |  | ) | const

virtual

Test if it is possible to remove a row from this table (yes).

Reimplemented from casacore::BaseTable.

## canRenameColumn()

virtual Bool casacore::MemoryTable::canRenameColumn | ( | const String & | columnName | ) | const

virtual

Test if a column can be renamed (yes).

Implements casacore::BaseTable.

## copy()

virtual void casacore::MemoryTable::copy | ( | const String & | newName,
|  | int | tableOption ) const

virtual

Copy the table and all its subtables.

It copies the contents of each row to get a real copy.

Reimplemented from casacore::BaseTable.

References casacore::BaseTable::tableOption().

## dataManagerInfo()

virtual Record casacore::MemoryTable::dataManagerInfo | ( |  | ) | const

virtual

Get the data manager info.

Implements casacore::BaseTable.

References casacore::Record().

Referenced by deepCopy().

## deepCopy()

virtual void casacore::MemoryTable::deepCopy | ( | const String & | newName,
|  | const Record & | dataManagerInfo,
|  | const StorageOption & | ,
|  | int | tableOption,
|  | Bool | ,
|  | int | endianFormat,
|  | Bool | noRows ) const

virtual

Reimplemented from casacore::BaseTable.

References dataManagerInfo(), casacore::Record(), and casacore::BaseTable::tableOption().

## findDataManager()

virtual DataManager * casacore::MemoryTable::findDataManager | ( | const String & | name,
|  | Bool | byColumn ) const

virtual

Find the data manager with the given name or for the given column.

There is only one storage manager (MemoryStMan) with name MSM.

Implements casacore::BaseTable.

References casacore::name().

## flush()

virtual void casacore::MemoryTable::flush | ( | Bool | fsync,
|  | Bool | recursive )

virtual

Flushing the table is a no-op.

Implements casacore::BaseTable.

## flushTableInfo()

virtual void casacore::MemoryTable::flushTableInfo | ( |  | ) |

virtual

Write the TableInfo object.

It does not do anything.

Reimplemented from casacore::BaseTable.

## getColumn() [1/2]

virtual BaseColumn * casacore::MemoryTable::getColumn | ( | const String & | columnName | ) | const

virtual

Get a column object using its name.

Implements casacore::BaseTable.

## getColumn() [2/2]

virtual BaseColumn * casacore::MemoryTable::getColumn | ( | uInt | columnIndex | ) | const

virtual

Get a column object using its index.

Implements casacore::BaseTable.

## getModifyCounter()

virtual uInt casacore::MemoryTable::getModifyCounter | ( |  | ) | const

virtual

Get the modify counter.

It always returns 0.

Implements casacore::BaseTable.

## hasLock()

virtual Bool casacore::MemoryTable::hasLock | ( | FileLocker::LockType |  | ) | const

virtual

Has this process the read or write lock, thus can the table be read or written safely?

It always returns True.

Implements casacore::BaseTable.

## isMultiUsed()

virtual Bool casacore::MemoryTable::isMultiUsed | ( | Bool | checkSubTable | ) | const

virtual

Is the table in use (i.e.

open) in another process? It always returns False.

Implements casacore::BaseTable.

## isWritable()

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

virtual

Test if the table is opened as writable.

It always returns True.

Implements casacore::BaseTable.

## keywordSet()

virtual TableRecord & casacore::MemoryTable::keywordSet | ( |  | ) |

virtual

Get readonly access to the table keyword set.

Implements casacore::BaseTable.

## lock()

virtual Bool casacore::MemoryTable::lock | ( | FileLocker::LockType | ,
|  | uInt | nattempts )

virtual

Locking the table is a no-op.

Implements casacore::BaseTable.

## lockOptions()

virtual const TableLock & casacore::MemoryTable::lockOptions | ( |  | ) | const

virtual

Get the locking info.

It returns PermanentLocking.

Implements casacore::BaseTable.

Referenced by mergeLock().

## mergeLock()

virtual void casacore::MemoryTable::mergeLock | ( | const TableLock & | lockOptions | ) |

virtual

Merge the given lock info with the existing one.

It does nothing.

Implements casacore::BaseTable.

References lockOptions().

## operator=()

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

delete

Assignment is forbidden, because copying a table requires some more knowledge (like table name of result).

References MemoryTable().

## removeColumn()

virtual void casacore::MemoryTable::removeColumn | ( | const Vector< String > & | columnNames | ) |

virtual

Remove columns.

Implements casacore::BaseTable.

## removeRow()

virtual void casacore::MemoryTable::removeRow | ( | rownr_t | rownr | ) |

virtual

Remove the given row.

Reimplemented from casacore::BaseTable.

## rename()

virtual void casacore::MemoryTable::rename | ( | const String & | newName,
|  | int | tableOption )

virtual

Rename the table.

The tableOption is ignored.

Reimplemented from casacore::BaseTable.

References casacore::BaseTable::tableOption().

## renameColumn()

virtual void casacore::MemoryTable::renameColumn | ( | const String & | newName,
|  | const String & | oldName )

virtual

Rename a column.

Implements casacore::BaseTable.

## renameHypercolumn()

virtual void casacore::MemoryTable::renameHypercolumn | ( | const String & | newName,
|  | const String & | oldName )

virtual

Rename a hypercolumn.

Implements casacore::BaseTable.

## reopenRW()

virtual void casacore::MemoryTable::reopenRW | ( |  | ) |

virtual

Try to reopen the table (the underlying one) for read/write access.

It does nothing.

Implements casacore::BaseTable.

## resync()

virtual void casacore::MemoryTable::resync | ( |  | ) |

virtual

Resyncing the Table is a no-op.

Implements casacore::BaseTable.

## rwKeywordSet()

virtual TableRecord & casacore::MemoryTable::rwKeywordSet | ( |  | ) |

virtual

Get read/write access to the table keyword set.

Implements casacore::BaseTable.

## setup()

void casacore::MemoryTable::setup | ( | BaseTable * | btp | ) |

private

Setup the main parts of the object.

Create the initial name map from the table description. This map maps a name to the name in the original table. A rename might change the map.
Create the RefColumn objects.
Create the initial TableInfo as a copy of the original BaseTable.

References casacore::BaseTable::BaseTable().

## storageOption()

virtual const StorageOption & casacore::MemoryTable::storageOption | ( |  | ) | const

virtual

Get the storage option used for the table.

Implements casacore::BaseTable.

## tableType()

virtual int casacore::MemoryTable::tableType | ( |  | ) | const

virtual

Get the table type (Table::Memory).

Reimplemented from casacore::BaseTable.

## unlock()

virtual void casacore::MemoryTable::unlock | ( |  | ) |

virtual

Unlocking the table is a no-op.

Implements casacore::BaseTable.

## Member Data Documentation

## colSetPtr_p

std::shared_ptr<ColumnSet> casacore::MemoryTable::colSetPtr_p

private

Definition at line 234 of file MemoryTable.h.

## lockPtr_p

TableLockData* casacore::MemoryTable::lockPtr_p

private

Definition at line 235 of file MemoryTable.h.

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

- tables/Tables/MemoryTable.h