casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Member Functions | List of all members
casacore::NullTable Class Reference

Class indicating a null Table object. More...

#include <NullTable.h>

Inheritance diagram for casacore::NullTable:
casacore::BaseTable

Public Member Functions

 NullTable ()
 Default constructor. More...
 
virtual ~NullTable ()
 
virtual Bool isNull () const override
 The table is a null table. More...
 
virtual void reopenRW () override
 All functions throw a "null table" exception. More...
 
virtual Bool asBigEndian () const override
 Is the table stored in big or little endian format? More...
 
virtual const StorageOptionstorageOption () const override
 Get the storage option used for the table. More...
 
virtual Bool isMultiUsed (Bool checkSubTable) const override
 Is the table in use (i.e. More...
 
virtual const TableLocklockOptions () const override
 Get the locking info. More...
 
virtual void mergeLock (const TableLock &lockOptions) override
 Merge the given lock info with the existing one. More...
 
virtual Bool hasLock (FileLocker::LockType) const override
 Has this process the read or write lock, thus can the table be read or written safely? More...
 
virtual Bool lock (FileLocker::LockType, uInt nattempts) override
 Try to lock the table for read or write access. More...
 
virtual void unlock () override
 Unlock the table. More...
 
virtual void flush (Bool fsync, Bool recursive) override
 Flush the table, i.e. More...
 
virtual void resync () override
 Resync the Table object with the table file. More...
 
virtual uInt getModifyCounter () const override
 Get the modify counter. More...
 
virtual Bool isWritable () const override
 Test if this table is writable. More...
 
virtual void deepCopy (const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, Bool valueCopy, int endianFormat, Bool noRows) const override
 
virtual TableDesc actualTableDesc () const override
 Get the actual table description. More...
 
virtual Record dataManagerInfo () const override
 Get the data manager info. More...
 
virtual TableRecordkeywordSet () override
 Get readonly access to the table keyword set. More...
 
virtual TableRecordrwKeywordSet () override
 Get read/write access to the table keyword set. More...
 
virtual BaseColumngetColumn (uInt columnIndex) const override
 Get a column object using its index. More...
 
virtual BaseColumngetColumn (const String &columnName) const override
 Get a column object using its name. More...
 
virtual Bool canAddRow () const override
 Test if it is possible to add a row to this table. More...
 
virtual void addRow (rownr_t nrrow, Bool initialize) override
 Add one or more rows and possibly initialize them. More...
 
virtual Bool canRemoveRow () const override
 Test if it is possible to remove a row from this table. More...
 
virtual void removeRow (rownr_t rownr) override
 Remove rows. More...
 
virtual DataManagerfindDataManager (const String &name, Bool byColumn) const override
 Find the data manager with the given name or for the given column. More...
 
virtual void addColumn (const ColumnDesc &columnDesc, Bool addToParent) override
 Add one or more columns to the table. More...
 
virtual void addColumn (const ColumnDesc &columnDesc, const String &dataManager, Bool byName, Bool addToParent) override
 
virtual void addColumn (const ColumnDesc &columnDesc, const DataManager &dataManager, Bool addToParent) override
 
virtual void addColumn (const TableDesc &tableDesc, const DataManager &dataManager, Bool addToParent) override
 
virtual Bool canRemoveColumn (const Vector< String > &columnNames) const override
 Test if columns can be removed. More...
 
virtual void removeColumn (const Vector< String > &columnNames) override
 Remove columns. More...
 
virtual Bool canRenameColumn (const String &columnName) const override
 Test if a column can be renamed. More...
 
virtual void renameColumn (const String &newName, const String &oldName) override
 Rename a column. More...
 
virtual void renameHypercolumn (const String &newName, const String &oldName) override
 Rename a hypercolumn. More...
 
virtual Vector< rownr_trowNumbers () const override
 Get a vector of row numbers. More...
 
virtual BaseTableroot () override
 Get pointer to root table (i.e. More...
 
virtual Bool rowOrder () const override
 Tell if the table is in row order. More...
 
virtual Vector< rownr_t > * rowStorage () override
 By the default the table cannot return the storage of rownrs. More...
 
virtual Bool adjustRownrs (rownr_t nrrow, Vector< rownr_t > &rownrs, Bool determineOrder) const override
 Adjust the row numbers to be the actual row numbers in the root table. More...
 
virtual BaseTabledoSort (PtrBlock< BaseColumn * > &, const Block< CountedPtr< BaseCompare > > &, const Block< Int > &sortOrder, int sortOption, std::shared_ptr< Vector< rownr_t >> sortIterBoundaries, std::shared_ptr< Vector< size_t >> sortIterKeyIdxChange) override
 Do the actual sort. More...
 
virtual void renameSubTables (const String &newName, const String &oldName) override
 Rename the subtables (used by rename function). More...
 
- Public Member Functions inherited from casacore::BaseTable
 BaseTable (const String &tableName, int tableOption, rownr_t nrrow)
 Initialize the object. More...
 
 BaseTable (MPI_Comm mpiComm, const String &tableName, int tableOption, rownr_t nrrow)
 MPI version of the constructor. More...
 
void BaseTableCommon (const String &tableName, int tableOption, rownr_t nrrow)
 Common code shared by the MPI constructor and non-MPI constructor. More...
 
virtual ~BaseTable ()
 
void link ()
 Link to this BaseTable object (i.e. More...
 
virtual void setTableChanged ()
 Set the table to being changed. More...
 
void doNotWrite ()
 Do not write the table (used in in case of exceptions). More...
 
Bool isColumnWritable (const String &columnName) const
 Test if the given column is writable. More...
 
Bool isColumnWritable (uInt columnIndex) const
 
Bool isColumnStored (const String &columnName) const
 Test if the given column is stored (otherwise it is virtual). More...
 
Bool isColumnStored (uInt columnIndex) const
 
const StringtableName () const
 Get the table name. More...
 
virtual void getPartNames (Block< String > &names, Bool recursive) const
 Get the names of the tables this table consists of. More...
 
virtual void rename (const String &newName, int tableOption)
 Rename the table. More...
 
virtual void copy (const String &newName, int tableOption) const
 Copy the table and all its subtables. More...
 
virtual int tableType () const
 Get the table type. More...
 
int tableOption () const
 Get the table option. More...
 
void markForDelete (Bool callback, const String &oldName)
 Mark the table for delete. More...
 
void unmarkForDelete (Bool callback, const String &oldName)
 Unmark the table for delete. More...
 
Bool isMarkedForDelete () const
 Test if the table is marked for delete. More...
 
const TableDesctableDesc () const
 Get the table description. More...
 
void showStructure (std::ostream &, Bool showDataMan, Bool showColumns, Bool showSubTables, Bool sortColumns, Bool cOrder)
 Show the table structure (implementation of Table::showStructure). More...
 
TableInfotableInfo ()
 Get access to the TableInfo object. More...
 
virtual void flushTableInfo ()
 Write the TableInfo object. More...
 
rownr_t nrow () const
 Get number of rows. More...
 
void removeRow (const Vector< rownr_t > &rownrs)
 
void removeRow (const Vector< uInt > &rownrs)
 
BaseTableselect (const TableExprNode &, rownr_t maxRow, rownr_t offset)
 Select rows using the given expression (which can be null). More...
 
BaseTableselect (rownr_t maxRow, rownr_t offset)
 Select maxRow rows and skip first offset rows. More...
 
BaseTableselect (const Vector< rownr_t > &rownrs)
 Select rows using a vector of row numbers. More...
 
BaseTableselect (const Block< Bool > &mask)
 Select rows using a mask block. More...
 
BaseTableproject (const Block< String > &columnNames)
 Project the given columns (i.e. More...
 
BaseTabletabAnd (BaseTable *)
 Do logical operations on a table. More...
 
BaseTabletabOr (BaseTable *)
 union with another table More...
 
BaseTabletabSub (BaseTable *)
 subtract another table More...
 
BaseTabletabXor (BaseTable *)
 xor with another table More...
 
BaseTabletabNot ()
 take complement More...
 
BaseTablesort (const Block< String > &columnNames, const Block< CountedPtr< 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. More...
 
BaseTableIteratormakeIterator (const Block< String > &columnNames, const Block< CountedPtr< BaseCompare > > &, const Block< Int > &orders, int option, bool cacheIterationBoundaries=false)
 Create an iterator. More...
 
void addColumns (const TableDesc &tableDesc, const Record &dmInfo, Bool addToParent)
 Add one or more columns to the table. More...
 
Bool checkRemoveColumn (const Vector< String > &columnNames, Bool throwException) const
 Check if the set of columns can be removed. More...
 
RefTablemakeRefTable (Bool rowOrder, rownr_t initialNrrow)
 Create a RefTable object. More...
 
void checkRowNumber (rownr_t rownr) const
 Check if the row number is valid. More...
 
int traceId () const
 Get the table's trace-id. More...
 

Private Member Functions

 NullTable (const NullTable &)
 
Copy constructor is forbidden, because copying a table requires

some more knowledge (like table name of result). More...

 
NullTableoperator= (const NullTable &)
 Assignment is forbidden, because copying a table requires some more knowledge (like table name of result). More...
 
TableError makeError (const String &name) const
 Make an exception message with the name of the function. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from casacore::BaseTable
static void unlink (BaseTable *)
 Unlink from a BaseTable. More...
 
static TableInfo tableInfo (const String &tableName)
 Get the table info of the table with the given name. More...
 
- 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). More...
 
Bool makeTableDir ()
 Create the table directory when needed (and possible). More...
 
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. More...
 
void prepareCopyRename (const String &newName, int tableOption) const
 Prepare for copying or renaming a table. More...
 
void throwIfTableExists ()
 Check if the table already exists. More...
 
Bool openedForWrite () const
 Test if the table is opened for write. More...
 
void writeStart (AipsIO &, Bool bigEndian)
 Start writing a table. More...
 
void writeEnd (AipsIO &)
 End writing a table. More...
 
Bool shouldNotWrite () const
 Should the table be written. More...
 
void getTableInfo ()
 Read the TableInfo object. More...
 
- Protected Attributes inherited from casacore::BaseTable
uInt nrlink_p
 
rownr_t nrrow_p
 
rownr_t nrrowToAdd_p
 
CountedPtr< TableDesctdescPtr_p
 
String name_p
 
int option_p
 
Bool noWrite_p
 
Bool delete_p
 
TableInfo info_p
 
Bool madeDir_p
 
int itsTraceId
 

Detailed Description

Class indicating a null Table object.

Intended use:

Internal

Review Status

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

Prerequisite

Etymology

NullTable represents a null table object, i.e. a Table object without an underlying table.

Synopsis

NullTable is used to represent a null table. The default Table constructor used to a create a null pointer which resulted in core dumps when the Table object was actually used. The NullTable object makes it possible to catch such cases and throw an appropriate exception.

Definition at line 68 of file NullTable.h.

Constructor & Destructor Documentation

casacore::NullTable::NullTable ( )

Default constructor.

virtual casacore::NullTable::~NullTable ( )
virtual
casacore::NullTable::NullTable ( const NullTable )
private

Copy constructor is forbidden, because copying a table requires

some more knowledge (like table name of result).

Declaring it private, makes it unusable.

Member Function Documentation

virtual TableDesc casacore::NullTable::actualTableDesc ( ) const
overridevirtual

Get the actual table description.

Implements casacore::BaseTable.

virtual void casacore::NullTable::addColumn ( const ColumnDesc columnDesc,
Bool  addToParent 
)
overridevirtual

Add one or more columns to the table.

The default implementation throws an "invalid operation" exception.

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::addColumn ( const ColumnDesc columnDesc,
const String dataManager,
Bool  byName,
Bool  addToParent 
)
overridevirtual

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::addColumn ( const ColumnDesc columnDesc,
const DataManager dataManager,
Bool  addToParent 
)
overridevirtual

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::addColumn ( const TableDesc tableDesc,
const DataManager dataManager,
Bool  addToParent 
)
overridevirtual

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::addRow ( rownr_t  nrrow,
Bool  initialize 
)
overridevirtual

Add one or more rows and possibly initialize them.

This will fail for tables not supporting addition of rows.

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::adjustRownrs ( rownr_t  nrrow,
Vector< rownr_t > &  rownrs,
Bool  determineOrder 
) const
overridevirtual

Adjust the row numbers to be the actual row numbers in the root table.

This is, for instance, used when a RefTable is sorted. Optionally it also determines if the resulting rows are in order.

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::asBigEndian ( ) const
overridevirtual

Is the table stored in big or little endian format?

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::canAddRow ( ) const
overridevirtual

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

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::canRemoveColumn ( const Vector< String > &  columnNames) const
overridevirtual

Test if columns can be removed.

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::canRemoveRow ( ) const
overridevirtual

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

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::canRenameColumn ( const String columnName) const
overridevirtual

Test if a column can be renamed.

Implements casacore::BaseTable.

virtual Record casacore::NullTable::dataManagerInfo ( ) const
overridevirtual

Get the data manager info.

Implements casacore::BaseTable.

virtual void casacore::NullTable::deepCopy ( const String newName,
const Record dataManagerInfo,
const StorageOption ,
int  tableOption,
Bool  valueCopy,
int  endianFormat,
Bool  noRows 
) const
overridevirtual

Reimplemented from casacore::BaseTable.

virtual BaseTable* casacore::NullTable::doSort ( PtrBlock< BaseColumn * > &  ,
const Block< CountedPtr< BaseCompare > > &  ,
const Block< Int > &  sortOrder,
int  sortOption,
std::shared_ptr< Vector< rownr_t >>  sortIterBoundaries,
std::shared_ptr< Vector< size_t >>  sortIterKeyIdxChange 
)
overridevirtual

Do the actual sort.

The default implementation is suitable for almost all cases. Only in RefTable a smarter implementation is provided.

Reimplemented from casacore::BaseTable.

virtual DataManager* casacore::NullTable::findDataManager ( const String name,
Bool  byColumn 
) const
overridevirtual

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

Implements casacore::BaseTable.

virtual void casacore::NullTable::flush ( Bool  fsync,
Bool  recursive 
)
overridevirtual

Flush the table, i.e.

write it to disk.

Implements casacore::BaseTable.

virtual BaseColumn* casacore::NullTable::getColumn ( uInt  columnIndex) const
overridevirtual

Get a column object using its index.

Implements casacore::BaseTable.

virtual BaseColumn* casacore::NullTable::getColumn ( const String columnName) const
overridevirtual

Get a column object using its name.

Implements casacore::BaseTable.

virtual uInt casacore::NullTable::getModifyCounter ( ) const
overridevirtual

Get the modify counter.

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::hasLock ( FileLocker::LockType  ) const
overridevirtual

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

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::isMultiUsed ( Bool  checkSubTables) const
overridevirtual

Is the table in use (i.e.

open) in another process? If checkSubTables is set, it is also checked if a subtable is used in another process.

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::isNull ( ) const
overridevirtual

The table is a null table.

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::isWritable ( ) const
overridevirtual

Test if this table is writable.

This tells if values can be put into a column.

Implements casacore::BaseTable.

virtual TableRecord& casacore::NullTable::keywordSet ( )
overridevirtual

Get readonly access to the table keyword set.

Implements casacore::BaseTable.

virtual Bool casacore::NullTable::lock ( FileLocker::LockType  ,
uInt  nattempts 
)
overridevirtual

Try to lock the table for read or write access.

Implements casacore::BaseTable.

virtual const TableLock& casacore::NullTable::lockOptions ( ) const
overridevirtual

Get the locking info.

Implements casacore::BaseTable.

TableError casacore::NullTable::makeError ( const String name) const
private

Make an exception message with the name of the function.

virtual void casacore::NullTable::mergeLock ( const TableLock lockOptions)
overridevirtual

Merge the given lock info with the existing one.

Implements casacore::BaseTable.

NullTable& casacore::NullTable::operator= ( const NullTable )
private

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

Declaring it private, makes it unusable.

virtual void casacore::NullTable::removeColumn ( const Vector< String > &  columnNames)
overridevirtual

Remove columns.

Implements casacore::BaseTable.

virtual void casacore::NullTable::removeRow ( rownr_t  rownr)
overridevirtual

Remove rows.

This will fail for tables not supporting removal of rows.
Tip: The following code fragments do NOT have the same result:

tab;removeRow (10); // remove row 10
tab;removeRow (20); // remove row 20, which was 21
Vector<rownr_t> vec(2);
vec(0) = 10;
vec(1) = 20;
tab;removeRow (vec); // remove row 10 and 20

because in the first fragment removing row 10 turns the former row 21 into row 20;

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::renameColumn ( const String newName,
const String oldName 
)
overridevirtual

Rename a column.

Implements casacore::BaseTable.

virtual void casacore::NullTable::renameHypercolumn ( const String newName,
const String oldName 
)
overridevirtual

Rename a hypercolumn.

Implements casacore::BaseTable.

virtual void casacore::NullTable::renameSubTables ( const String newName,
const String oldName 
)
overridevirtual

Rename the subtables (used by rename function).

Reimplemented from casacore::BaseTable.

virtual void casacore::NullTable::reopenRW ( )
overridevirtual

All functions throw a "null table" exception.

Implements casacore::BaseTable.

virtual void casacore::NullTable::resync ( )
overridevirtual

Resync the Table object with the table file.

Implements casacore::BaseTable.

virtual BaseTable* casacore::NullTable::root ( )
overridevirtual

Get pointer to root table (i.e.

parent of a RefTable). Default it is this table. It is meant for the reference tables after a select or sort which can then still name their parent as the root.

Reimplemented from casacore::BaseTable.

virtual Vector<rownr_t> casacore::NullTable::rowNumbers ( ) const
overridevirtual

Get a vector of row numbers.

By default it returns the row numbers 0..nrrow()-1. It needs to be implemented for RefTable only.

Reimplemented from casacore::BaseTable.

virtual Bool casacore::NullTable::rowOrder ( ) const
overridevirtual

Tell if the table is in row order.

By default it is, since normally a table is always in row order. It is meant for RefTable-s, where the rows can be in another (sorted) order.

Reimplemented from casacore::BaseTable.

virtual Vector<rownr_t>* casacore::NullTable::rowStorage ( )
overridevirtual

By the default the table cannot return the storage of rownrs.

That can only be done by a RefTable, where it is implemented.

Reimplemented from casacore::BaseTable.

virtual TableRecord& casacore::NullTable::rwKeywordSet ( )
overridevirtual

Get read/write access to the table keyword set.

This requires that the table is locked (or it gets locked when using AutoLocking mode).

Implements casacore::BaseTable.

virtual const StorageOption& casacore::NullTable::storageOption ( ) const
overridevirtual

Get the storage option used for the table.

Implements casacore::BaseTable.

virtual void casacore::NullTable::unlock ( )
overridevirtual

Unlock the table.

This will also synchronize the table data, thus force the data to be written to disk.

Implements casacore::BaseTable.


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