casacore
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
casacore::BaseTable Class Referenceabstract

More...

#include <BaseTable.h>

Public Member Functions

 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 Bool isNull () const
 Is the table a null table? By default it is not. More...
 
virtual void reopenRW ()=0
 Reopen the table for read/write. More...
 
virtual Bool asBigEndian () const =0
 Is the table stored in big or little endian format? More...
 
virtual const StorageOptionstorageOption () const =0
 Get the storage option used for the table. More...
 
virtual Bool isMultiUsed (Bool checkSubTables) const =0
 Is the table in use (i.e. More...
 
virtual const TableLocklockOptions () const =0
 Get the locking info. More...
 
virtual void mergeLock (const TableLock &lockOptions)=0
 Merge the given lock info with the existing one. More...
 
virtual Bool hasLock (FileLocker::LockType) const =0
 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)=0
 Try to lock the table for read or write access. More...
 
virtual void unlock ()=0
 Unlock the table. More...
 
virtual void flush (Bool fsync, Bool recursive)=0
 Flush the table, i.e. More...
 
virtual void resync ()=0
 Resync the Table object with the table file. More...
 
virtual uInt getModifyCounter () const =0
 Get the modify counter. 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...
 
virtual Bool isWritable () const =0
 Test if this table is writable. 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 void deepCopy (const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, Bool valueCopy, int endianFormat, Bool noRows) const
 
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...
 
virtual TableDesc actualTableDesc () const =0
 Get the actual table description. More...
 
virtual Record dataManagerInfo () const =0
 Get the data manager info. More...
 
void showStructure (std::ostream &, Bool showDataMan, Bool showColumns, Bool showSubTables, Bool sortColumns, Bool cOrder)
 Show the table structure (implementation of Table::showStructure). More...
 
virtual TableRecordkeywordSet ()=0
 Get readonly access to the table keyword set. More...
 
virtual TableRecordrwKeywordSet ()=0
 Get read/write access to the table keyword set. 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...
 
virtual BaseColumngetColumn (uInt columnIndex) const =0
 Get a column object using its index. More...
 
virtual BaseColumngetColumn (const String &columnName) const =0
 Get a column object using its name. More...
 
virtual Bool canAddRow () const
 Test if it is possible to add a row to this table. More...
 
virtual void addRow (rownr_t nrrow=1, Bool initialize=True)
 Add one or more rows and possibly initialize them. More...
 
virtual Bool canRemoveRow () const
 Test if it is possible to remove a row from this table. More...
 
virtual void removeRow (rownr_t rownr)
 Remove rows. More...
 
void removeRow (const Vector< rownr_t > &rownrs)
 
void removeRow (const Vector< uInt > &rownrs)
 
virtual DataManagerfindDataManager (const String &name, Bool byColumn) const =0
 Find the data manager with the given name or for the given column. More...
 
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...
 
virtual void addColumn (const ColumnDesc &columnDesc, Bool addToParent)
 Add one or more columns to the table. More...
 
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)
 
void addColumns (const TableDesc &tableDesc, const Record &dmInfo, Bool addToParent)
 Add one or more columns to the table. More...
 
virtual Bool canRemoveColumn (const Vector< String > &columnNames) const =0
 Test if columns can be removed. More...
 
virtual void removeColumn (const Vector< String > &columnNames)=0
 Remove columns. More...
 
Bool checkRemoveColumn (const Vector< String > &columnNames, Bool throwException) const
 Check if the set of columns can be removed. More...
 
virtual Bool canRenameColumn (const String &columnName) const =0
 Test if a column can be renamed. More...
 
virtual void renameColumn (const String &newName, const String &oldName)=0
 Rename a column. More...
 
virtual void renameHypercolumn (const String &newName, const String &oldName)=0
 Rename a hypercolumn. More...
 
virtual Vector< rownr_trowNumbers () const
 Get a vector of row numbers. More...
 
virtual BaseTableroot ()
 Get pointer to root table (i.e. More...
 
virtual Bool rowOrder () const
 Tell if the table is in row order. More...
 
virtual Vector< rownr_t > * rowStorage ()
 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
 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)
 Do the actual sort. 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...
 

Static Public Member Functions

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

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...
 
virtual void renameSubTables (const String &newName, const String &oldName)
 Rename the subtables (used by rename function). 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

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
 

Private Member Functions

 BaseTable (const BaseTable &)
 Copy constructor is forbidden, because copying a table requires some more knowledge (like table name of result). More...
 
BaseTableoperator= (const BaseTable &)
 Assignment is forbidden, because copying a table requires some more knowledge (like table name of result). More...
 
virtual void showStructureExtra (std::ostream &) const
 Show a possible extra table structure header. More...
 
void showColumnInfo (ostream &os, const TableDesc &, uInt maxNameLength, const Array< String > &columnNames, Bool sort, Bool cOrder) const
 Show the info of the given columns. More...
 
void checkRowNumberThrow (rownr_t rownr) const
 Throw an exception for checkRowNumber. More...
 
void logicCheck (BaseTable *that)
 Check if the tables combined in a logical operation have the same root. More...
 
rownr_t logicRows (rownr_t *&rownrs, Bool &allocated)
 Get the rownrs of the table in ascending order to be used in the logical operation on the table. More...
 
const TableDescmakeEmptyTableDesc () const
 Make an empty table description. More...
 
String makeAbsoluteName (const String &name) const
 Make the name absolute. More...
 

Private Attributes

MPI_Comm itsMpiComm
 MPI communicator for parallel I/O. More...
 

Detailed Description

Abstract base class for tables

Intended use:

Internal

Review Status

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

Prerequisite

Etymology

BaseTable is the (abstract) base class for different kind of tables.

Synopsis

BaseTables defines many virtual functions, which are actually implemented in the underlying table classes like PlainTable and RefTable. Other functions like sort and select are implemented in BaseTable itself.

The functions in BaseTable and its derived classes can only be used by the table system classes. All user access is via the envelope class Table, which references (counted) BaseTable.

To Do

Definition at line 103 of file BaseTable.h.

Constructor & Destructor Documentation

◆ BaseTable() [1/3]

casacore::BaseTable::BaseTable ( const String tableName,
int  tableOption,
rownr_t  nrrow 
)

Initialize the object.

◆ BaseTable() [2/3]

casacore::BaseTable::BaseTable ( MPI_Comm  mpiComm,
const String tableName,
int  tableOption,
rownr_t  nrrow 
)

MPI version of the constructor.

◆ ~BaseTable()

virtual casacore::BaseTable::~BaseTable ( )
virtual

◆ BaseTable() [3/3]

casacore::BaseTable::BaseTable ( const BaseTable )
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

◆ actualTableDesc()

virtual TableDesc casacore::BaseTable::actualTableDesc ( ) const
pure virtual

◆ addColumn() [1/4]

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

Add one or more columns to the table.

The default implementation throws an "invalid operation" exception.

Reimplemented in casacore::PlainTable, casacore::NullTable, casacore::RefTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ addColumn() [2/4]

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

◆ addColumn() [3/4]

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

◆ addColumn() [4/4]

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

◆ addColumns()

void casacore::BaseTable::addColumns ( const TableDesc tableDesc,
const Record dmInfo,
Bool  addToParent 
)

Add one or more columns to the table.

The data manager to use is described in the record.

◆ addRow()

virtual void casacore::BaseTable::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 in casacore::MemoryTable, casacore::NullTable, and casacore::PlainTable.

◆ adjustRownrs()

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

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 in casacore::NullTable, and casacore::RefTable.

◆ asBigEndian()

virtual Bool casacore::BaseTable::asBigEndian ( ) const
pure virtual

Is the table stored in big or little endian format?

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ BaseTableCommon()

void casacore::BaseTable::BaseTableCommon ( const String tableName,
int  tableOption,
rownr_t  nrrow 
)

Common code shared by the MPI constructor and non-MPI constructor.

◆ canAddRow()

virtual Bool casacore::BaseTable::canAddRow ( ) const
virtual

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

Reimplemented in casacore::NullTable, casacore::PlainTable, and casacore::MemoryTable.

◆ canRemoveColumn()

virtual Bool casacore::BaseTable::canRemoveColumn ( const Vector< String > &  columnNames) const
pure virtual

◆ canRemoveRow()

virtual Bool casacore::BaseTable::canRemoveRow ( ) const
virtual

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

Reimplemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ canRenameColumn()

virtual Bool casacore::BaseTable::canRenameColumn ( const String columnName) const
pure virtual

◆ checkRemoveColumn()

Bool casacore::BaseTable::checkRemoveColumn ( const Vector< String > &  columnNames,
Bool  throwException 
) const

Check if the set of columns can be removed.

It checks if columns have not been specified twice and it checks if they exist. If the flag is set an exception is thrown if errors are found.

◆ checkRowNumber()

void casacore::BaseTable::checkRowNumber ( rownr_t  rownr) const
inline

Check if the row number is valid.

It throws an exception if out of range.

Definition at line 488 of file BaseTable.h.

References checkRowNumberThrow(), nrrow_p, and nrrowToAdd_p.

Referenced by casacore::TableColumn::checkRowNumber().

◆ checkRowNumberThrow()

void casacore::BaseTable::checkRowNumberThrow ( rownr_t  rownr) const
private

Throw an exception for checkRowNumber.

Referenced by checkRowNumber().

◆ copy()

virtual void casacore::BaseTable::copy ( const String newName,
int  tableOption 
) const
virtual

Copy the table and all its subtables.

The default implementation of deepCopy is to call copy. The following options can be given:

Table::New
When a table with this name exists, it will be overwritten.
Table::NewNoReplace
When a table with this name already exists, an exception is thrown.
Table::Scratch
Same as Table::New, but followed by markForDelete().

Reimplemented in casacore::RefTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ dataManagerInfo()

virtual Record casacore::BaseTable::dataManagerInfo ( ) const
pure virtual

◆ deepCopy()

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

◆ doNotWrite()

void casacore::BaseTable::doNotWrite ( )
inline

Do not write the table (used in in case of exceptions).

Definition at line 175 of file BaseTable.h.

References noWrite_p, and casacore::True.

◆ doSort()

virtual BaseTable* casacore::BaseTable::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 
)
virtual

Do the actual sort.

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

Reimplemented in casacore::NullTable.

◆ findDataManager()

virtual DataManager* casacore::BaseTable::findDataManager ( const String name,
Bool  byColumn 
) const
pure virtual

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

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ flush()

virtual void casacore::BaseTable::flush ( Bool  fsync,
Bool  recursive 
)
pure virtual

Flush the table, i.e.

write it to disk.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ flushTableInfo()

virtual void casacore::BaseTable::flushTableInfo ( )
virtual

Write the TableInfo object.

Reimplemented in casacore::MemoryTable.

◆ getColumn() [1/2]

virtual BaseColumn* casacore::BaseTable::getColumn ( const String columnName) const
pure virtual

Get a column object using its name.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ getColumn() [2/2]

virtual BaseColumn* casacore::BaseTable::getColumn ( uInt  columnIndex) const
pure virtual

Get a column object using its index.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ getModifyCounter()

virtual uInt casacore::BaseTable::getModifyCounter ( ) const
pure virtual

◆ getPartNames()

virtual void casacore::BaseTable::getPartNames ( Block< String > &  names,
Bool  recursive 
) const
virtual

Get the names of the tables this table consists of.

The default implementation adds the name of this table to the block.

Reimplemented in casacore::RefTable, and casacore::ConcatTable.

◆ getTableInfo()

void casacore::BaseTable::getTableInfo ( )
protected

Read the TableInfo object.

◆ hasLock()

virtual Bool casacore::BaseTable::hasLock ( FileLocker::LockType  ) const
pure virtual

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

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ isColumnStored() [1/2]

Bool casacore::BaseTable::isColumnStored ( const String columnName) const

Test if the given column is stored (otherwise it is virtual).

◆ isColumnStored() [2/2]

Bool casacore::BaseTable::isColumnStored ( uInt  columnIndex) const

◆ isColumnWritable() [1/2]

Bool casacore::BaseTable::isColumnWritable ( const String columnName) const

Test if the given column is writable.

◆ isColumnWritable() [2/2]

Bool casacore::BaseTable::isColumnWritable ( uInt  columnIndex) const

◆ isMarkedForDelete()

Bool casacore::BaseTable::isMarkedForDelete ( ) const
inline

Test if the table is marked for delete.

Definition at line 268 of file BaseTable.h.

References delete_p.

◆ isMultiUsed()

virtual Bool casacore::BaseTable::isMultiUsed ( Bool  checkSubTables) const
pure virtual

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.

Implemented in casacore::PlainTable, casacore::NullTable, casacore::RefTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ isNull()

virtual Bool casacore::BaseTable::isNull ( ) const
virtual

Is the table a null table? By default it is not.

Reimplemented in casacore::NullTable.

◆ isWritable()

virtual Bool casacore::BaseTable::isWritable ( ) const
pure virtual

Test if this table is writable.

This tells if values can be put into a column.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

Referenced by casacore::TableColumn::isWritable().

◆ keywordSet()

virtual TableRecord& casacore::BaseTable::keywordSet ( )
pure virtual

Get readonly access to the table keyword set.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ link()

void casacore::BaseTable::link ( )

Link to this BaseTable object (i.e.

increase reference count).

◆ lock()

virtual Bool casacore::BaseTable::lock ( FileLocker::LockType  ,
uInt  nattempts 
)
pure virtual

Try to lock the table for read or write access.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ lockOptions()

virtual const TableLock& casacore::BaseTable::lockOptions ( ) const
pure virtual

◆ logicCheck()

void casacore::BaseTable::logicCheck ( BaseTable that)
private

Check if the tables combined in a logical operation have the same root.

◆ logicRows()

rownr_t casacore::BaseTable::logicRows ( rownr_t *&  rownrs,
Bool allocated 
)
private

Get the rownrs of the table in ascending order to be used in the logical operation on the table.

◆ makeAbsoluteName()

String casacore::BaseTable::makeAbsoluteName ( const String name) const
private

Make the name absolute.

It first checks if the name contains valid characters (not only. and /).

◆ makeEmptyTableDesc()

const TableDesc& casacore::BaseTable::makeEmptyTableDesc ( ) const
private

Make an empty table description.

This is used if one asks for the description of a NullTable. Creating an empty TableDesc in the NullTable takes too much time. Furthermore it causes static initialization order problems.

Referenced by tableDesc().

◆ makeIterator()

BaseTableIterator* casacore::BaseTable::makeIterator ( const Block< String > &  columnNames,
const Block< CountedPtr< BaseCompare > > &  ,
const Block< Int > &  orders,
int  option,
bool  cacheIterationBoundaries = false 
)

Create an iterator.

◆ makeRefTable()

RefTable* casacore::BaseTable::makeRefTable ( Bool  rowOrder,
rownr_t  initialNrrow 
)

Create a RefTable object.

◆ makeTableDir()

Bool casacore::BaseTable::makeTableDir ( )
protected

Create the table directory when needed (and possible).

When the file already exists, check if it is a directory. It returns True when it actually created the directory.

◆ markForDelete()

void casacore::BaseTable::markForDelete ( Bool  callback,
const String oldName 
)

Mark the table for delete.

This means that the underlying table gets deleted when it is actually destructed. The scratchCallback function is called when needed.

◆ mergeLock()

virtual void casacore::BaseTable::mergeLock ( const TableLock lockOptions)
pure virtual

Merge the given lock info with the existing one.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ nrow()

rownr_t casacore::BaseTable::nrow ( ) const
inline

Get number of rows.

Definition at line 309 of file BaseTable.h.

References nrrow_p.

◆ openedForWrite()

Bool casacore::BaseTable::openedForWrite ( ) const
protected

Test if the table is opened for write.

◆ operator=()

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

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

Declaring it private, makes it unusable.

◆ prepareCopyRename()

void casacore::BaseTable::prepareCopyRename ( const String newName,
int  tableOption 
) const
protected

Prepare for copying or renaming a table.

It checks if the target table already exists and removes it when necessary.

◆ project()

BaseTable* casacore::BaseTable::project ( const Block< String > &  columnNames)

Project the given columns (i.e.

select the columns).

◆ removeColumn()

virtual void casacore::BaseTable::removeColumn ( const Vector< String > &  columnNames)
pure virtual

◆ removeRow() [1/3]

void casacore::BaseTable::removeRow ( const Vector< rownr_t > &  rownrs)

◆ removeRow() [2/3]

void casacore::BaseTable::removeRow ( const Vector< uInt > &  rownrs)

◆ removeRow() [3/3]

virtual void casacore::BaseTable::removeRow ( rownr_t  rownr)
virtual

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
virtual void removeRow(rownr_t rownr)
Remove rows.

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

Reimplemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ rename()

virtual void casacore::BaseTable::rename ( const String newName,
int  tableOption 
)
virtual

Rename the table.

The following options can be given:

Table::Update
A table with this name must already exists, which will be overwritten. When succesfully renamed, the table is unmarked for delete (if necessary).
Table::New
When a table with this name exists, it will be overwritten. When succesfully renamed, the table is unmarked for delete (if necessary).
Table::NewNoReplace
When a table with this name already exists, an exception is thrown. When succesfully renamed, the table is unmarked for delete (if necessary).
Table::Scratch
Same as Table::New, but followed by markForDelete().

The rename function in this base class renames the table file. In a derived class (e.g. PlainTable) the function should also be implemented to rename subtables in its keywords.

Reimplemented in casacore::MemoryTable.

◆ renameColumn()

virtual void casacore::BaseTable::renameColumn ( const String newName,
const String oldName 
)
pure virtual

◆ renameHypercolumn()

virtual void casacore::BaseTable::renameHypercolumn ( const String newName,
const String oldName 
)
pure virtual

◆ renameSubTables()

virtual void casacore::BaseTable::renameSubTables ( const String newName,
const String oldName 
)
protectedvirtual

Rename the subtables (used by rename function).

Reimplemented in casacore::NullTable, and casacore::PlainTable.

◆ reopenRW()

virtual void casacore::BaseTable::reopenRW ( )
pure virtual

◆ resync()

virtual void casacore::BaseTable::resync ( )
pure virtual

Resync the Table object with the table file.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ root()

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

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 in casacore::NullTable, and casacore::RefTable.

◆ rowNumbers()

virtual Vector<rownr_t> casacore::BaseTable::rowNumbers ( ) const
virtual

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 in casacore::NullTable, and casacore::RefTable.

◆ rowOrder()

virtual Bool casacore::BaseTable::rowOrder ( ) const
virtual

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 in casacore::NullTable, and casacore::RefTable.

◆ rowStorage()

virtual Vector<rownr_t>* casacore::BaseTable::rowStorage ( )
virtual

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

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

Reimplemented in casacore::NullTable, and casacore::RefTable.

◆ rwKeywordSet()

virtual TableRecord& casacore::BaseTable::rwKeywordSet ( )
pure virtual

Get read/write access to the table keyword set.

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

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ scratchCallback()

void casacore::BaseTable::scratchCallback ( Bool  isScratch,
const String oldName 
) const
protected

Do the callback for scratch tables (if callback is set).

◆ select() [1/4]

BaseTable* casacore::BaseTable::select ( const Block< Bool > &  mask)

Select rows using a mask block.

The length of the block must match the number of rows in the table. If True, the corresponding row will be selected.

◆ select() [2/4]

BaseTable* casacore::BaseTable::select ( const TableExprNode ,
rownr_t  maxRow,
rownr_t  offset 
)

Select rows using the given expression (which can be null).

Skip first offset matching rows. Return at most maxRow matching rows.

◆ select() [3/4]

BaseTable* casacore::BaseTable::select ( const Vector< rownr_t > &  rownrs)

Select rows using a vector of row numbers.

◆ select() [4/4]

BaseTable* casacore::BaseTable::select ( rownr_t  maxRow,
rownr_t  offset 
)

Select maxRow rows and skip first offset rows.

maxRow=0 means all.

◆ setTableChanged()

virtual void casacore::BaseTable::setTableChanged ( )
virtual

Set the table to being changed.

By default it does nothing.

Reimplemented in casacore::PlainTable.

Referenced by casacore::ColumnSet::setTableChanged().

◆ shouldNotWrite()

Bool casacore::BaseTable::shouldNotWrite ( ) const
inlineprotected

Should the table be written.

This flag is False if an exception was thrown.

Definition at line 551 of file BaseTable.h.

References noWrite_p.

◆ showColumnInfo()

void casacore::BaseTable::showColumnInfo ( ostream &  os,
const TableDesc ,
uInt  maxNameLength,
const Array< String > &  columnNames,
Bool  sort,
Bool  cOrder 
) const
private

Show the info of the given columns.

Sort the columns if needed.

◆ showStructure()

void casacore::BaseTable::showStructure ( std::ostream &  ,
Bool  showDataMan,
Bool  showColumns,
Bool  showSubTables,
Bool  sortColumns,
Bool  cOrder 
)

Show the table structure (implementation of Table::showStructure).

◆ showStructureExtra()

virtual void casacore::BaseTable::showStructureExtra ( std::ostream &  ) const
privatevirtual

Show a possible extra table structure header.

It is used by e.g. RefTable to show which table is referenced.

Reimplemented in casacore::RefTable, and casacore::ConcatTable.

◆ sort()

BaseTable* casacore::BaseTable::sort ( 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.

◆ storageOption()

virtual const StorageOption& casacore::BaseTable::storageOption ( ) const
pure virtual

Get the storage option used for the table.

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ tabAnd()

BaseTable* casacore::BaseTable::tabAnd ( BaseTable )

Do logical operations on a table.

intersection with another table

◆ tableDesc()

const TableDesc& casacore::BaseTable::tableDesc ( ) const
inline

Get the table description.

Definition at line 272 of file BaseTable.h.

References makeEmptyTableDesc(), and tdescPtr_p.

◆ tableInfo() [1/2]

TableInfo& casacore::BaseTable::tableInfo ( )
inline

Get access to the TableInfo object.

Definition at line 298 of file BaseTable.h.

References info_p.

◆ tableInfo() [2/2]

static TableInfo casacore::BaseTable::tableInfo ( const String tableName)
static

Get the table info of the table with the given name.

An empty object is returned when the table is unknown.

◆ tableName()

const String& casacore::BaseTable::tableName ( ) const
inline

Get the table name.

Definition at line 195 of file BaseTable.h.

References name_p.

◆ tableOption()

int casacore::BaseTable::tableOption ( ) const
inline

Get the table option.

Definition at line 253 of file BaseTable.h.

References option_p.

◆ tableType()

virtual int casacore::BaseTable::tableType ( ) const
virtual

Get the table type.

By default it returns Table::Plain.

Reimplemented in casacore::RefTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ tabNot()

BaseTable* casacore::BaseTable::tabNot ( )

take complement

◆ tabOr()

BaseTable* casacore::BaseTable::tabOr ( BaseTable )

union with another table

◆ tabSub()

BaseTable* casacore::BaseTable::tabSub ( BaseTable )

subtract another table

◆ tabXor()

BaseTable* casacore::BaseTable::tabXor ( BaseTable )

xor with another table

◆ throwIfTableExists()

void casacore::BaseTable::throwIfTableExists ( )
protected

Check if the table already exists.

Throw an exception if so.

◆ traceId()

int casacore::BaseTable::traceId ( ) const
inline

Get the table's trace-id.

Definition at line 492 of file BaseTable.h.

References itsTraceId.

Referenced by casacore::ColumnSet::traceId().

◆ trueDeepCopy()

void casacore::BaseTable::trueDeepCopy ( const String newName,
const Record dataManagerInfo,
const StorageOption ,
int  tableOption,
int  endianFormat,
Bool  noRows 
) const
protected

Make a true deep copy of the table.

◆ unlink()

static void casacore::BaseTable::unlink ( BaseTable )
static

Unlink from a BaseTable.

Delete it if no more references.

◆ unlock()

virtual void casacore::BaseTable::unlock ( )
pure virtual

Unlock the table.

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

Implemented in casacore::NullTable, casacore::RefTable, casacore::PlainTable, casacore::MemoryTable, and casacore::ConcatTable.

◆ unmarkForDelete()

void casacore::BaseTable::unmarkForDelete ( Bool  callback,
const String oldName 
)

Unmark the table for delete.

This means the underlying table does not get deleted when destructed. The scratchCallback function is called when needed.

◆ writeEnd()

void casacore::BaseTable::writeEnd ( AipsIO )
protected

End writing a table.

◆ writeStart()

void casacore::BaseTable::writeStart ( AipsIO ,
Bool  bigEndian 
)
protected

Start writing a table.

It does a putstart and writes nrrow_p. It should be ended by calling writeEnd.

Member Data Documentation

◆ delete_p

Bool casacore::BaseTable::delete_p
protected

Definition at line 504 of file BaseTable.h.

Referenced by isMarkedForDelete().

◆ info_p

TableInfo casacore::BaseTable::info_p
protected

Definition at line 505 of file BaseTable.h.

Referenced by tableInfo().

◆ itsMpiComm

MPI_Comm casacore::BaseTable::itsMpiComm
private

MPI communicator for parallel I/O.

When using an MPI-disabled casacore, MPI applications have always been able to create Tables from each rank independently. Defaulting this communicator to MPI_COMM_SELF preserves that expectation.

Definition at line 604 of file BaseTable.h.

◆ itsTraceId

int casacore::BaseTable::itsTraceId
protected

Definition at line 507 of file BaseTable.h.

Referenced by traceId().

◆ madeDir_p

Bool casacore::BaseTable::madeDir_p
protected

Definition at line 506 of file BaseTable.h.

◆ name_p

String casacore::BaseTable::name_p
protected

Definition at line 501 of file BaseTable.h.

Referenced by tableName().

◆ noWrite_p

Bool casacore::BaseTable::noWrite_p
protected

Definition at line 503 of file BaseTable.h.

Referenced by doNotWrite(), and shouldNotWrite().

◆ nrlink_p

uInt casacore::BaseTable::nrlink_p
protected

Definition at line 497 of file BaseTable.h.

◆ nrrow_p

rownr_t casacore::BaseTable::nrrow_p
protected

Definition at line 498 of file BaseTable.h.

Referenced by checkRowNumber(), and nrow().

◆ nrrowToAdd_p

rownr_t casacore::BaseTable::nrrowToAdd_p
protected

Definition at line 499 of file BaseTable.h.

Referenced by checkRowNumber().

◆ option_p

int casacore::BaseTable::option_p
protected

Definition at line 502 of file BaseTable.h.

Referenced by tableOption().

◆ tdescPtr_p

CountedPtr<TableDesc> casacore::BaseTable::tdescPtr_p
protected

Definition at line 500 of file BaseTable.h.

Referenced by tableDesc().


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