Loading...
Searching...
No Matches
NullTable.h
Go to the documentation of this file.
//# NullTable.h: Class indicating a null Table object
//# Copyright (C) 2001,2002,2003
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
#ifndef TABLES_NULLTABLE_H
#define TABLES_NULLTABLE_H
//# Includes
#include <casacore/casa/aips.h>
#include <casacore/tables/Tables/BaseTable.h>
#include <casacore/tables/Tables/TableError.h>
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// Class indicating a null Table object
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
// </reviewed>
// <prerequisite>
//# Classes you should understand before using this one.
// <li> <linkto class=BaseTable>BaseTable</linkto>
// </prerequisite>
// <etymology>
// NullTable represents a null table object, i.e. a Table object without
// an underlying table.
// </etymology>
// <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.
// </synopsis>
class NullTable : public BaseTable
{
public:
// Default constructor.
NullTable();
virtual ~NullTable();
// Copy constructor is forbidden.
NullTable (const NullTable&) = delete;
// Assignment is forbidden.
NullTable& operator= (const NullTable&) = delete;
// The table is a null table.
virtual Bool isNull() const override;
// All functions throw a "null table" exception.
// <group>
virtual void reopenRW() override;
virtual Bool asBigEndian() const override;
virtual const StorageOption& storageOption() const override;
virtual Bool isMultiUsed (Bool checkSubTable) const override;
virtual const TableLock& lockOptions() const override;
virtual void mergeLock (const TableLock& lockOptions) override;
virtual Bool hasLock (FileLocker::LockType) const override;
virtual Bool lock (FileLocker::LockType, uInt nattempts) override;
virtual void unlock() override;
virtual void flush (Bool fsync, Bool recursive) override;
virtual void resync() override;
virtual uInt getModifyCounter() const override;
virtual Bool isWritable() const override;
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;
virtual Record dataManagerInfo() const override;
virtual TableRecord& keywordSet() override;
virtual TableRecord& rwKeywordSet() override;
virtual BaseColumn* getColumn (uInt columnIndex) const override;
virtual BaseColumn* getColumn (const String& columnName) const override;
virtual Bool canAddRow() const override;
virtual void addRow (rownr_t nrrow, Bool initialize) override;
virtual Bool canRemoveRow() const override;
virtual void removeRow (rownr_t rownr) override;
virtual DataManager* findDataManager (const String& name,
Bool byColumn) const override;
virtual void addColumn (const ColumnDesc& columnDesc, Bool addToParent) override;
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;
virtual void removeColumn (const Vector<String>& columnNames) override;
virtual Bool canRenameColumn (const String& columnName) const override;
virtual void renameColumn (const String& newName, const String& oldName) override;
virtual void renameHypercolumn (const String& newName,
const String& oldName) override;
virtual Vector<rownr_t> rowNumbers() const override;
virtual BaseTable* root() override;
virtual Bool rowOrder() const override;
virtual Vector<rownr_t>& rowStorage() override;
virtual Bool adjustRownrs (rownr_t nrrow, Vector<rownr_t>& rownrs,
Bool determineOrder) const override;
virtual std::shared_ptr<BaseTable> doSort (Block<BaseColumn*>&,
const Block<std::shared_ptr<BaseCompare>>&,
const Block<Int>&,
int,
std::shared_ptr<Vector<rownr_t>>,
std::shared_ptr<Vector<size_t>>) override;
virtual void renameSubTables (const String& newName,
const String& oldName) override;
// </group>
private:
// Make an exception message with the name of the function.
TableError makeError (const String& name) const;
};
} //# NAMESPACE CASACORE - END
#endif
casacore::BaseColumn
Definition BaseColumn.h:97
casacore::BaseTable::tableDesc
const TableDesc & tableDesc() const
Get the table description.
Definition BaseTable.h:274
casacore::BaseTable::BaseTable
BaseTable(const String &tableName, int tableOption, rownr_t nrrow)
Initialize the object.
casacore::BaseTable::tableOption
int tableOption() const
Get the table option.
Definition BaseTable.h:255
casacore::Block
Definition Block.h:140
casacore::ColumnDesc
Definition ColumnDesc.h:131
casacore::DataManager
Abstract base class for a data manager.
Definition DataManager.h:219
casacore::FileLocker::LockType
LockType
Define the possible lock types.
Definition FileLocker.h:93
casacore::NullTable::rwKeywordSet
virtual TableRecord & rwKeywordSet() override
Get read/write access to the table keyword set.
casacore::NullTable::deepCopy
virtual void deepCopy(const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, Bool valueCopy, int endianFormat, Bool noRows) const override
casacore::NullTable::dataManagerInfo
virtual Record dataManagerInfo() const override
Get the data manager info.
casacore::NullTable::getColumn
virtual BaseColumn * getColumn(uInt columnIndex) const override
Get a column object using its index.
casacore::NullTable::actualTableDesc
virtual TableDesc actualTableDesc() const override
Get the actual table description.
casacore::NullTable::addColumn
virtual void addColumn(const ColumnDesc &columnDesc, const DataManager &dataManager, Bool addToParent) override
casacore::NullTable::getModifyCounter
virtual uInt getModifyCounter() const override
Get the modify counter.
casacore::NullTable::unlock
virtual void unlock() override
Unlock the table.
casacore::NullTable::canRemoveColumn
virtual Bool canRemoveColumn(const Vector< String > &columnNames) const override
Test if columns can be removed.
casacore::NullTable::canRenameColumn
virtual Bool canRenameColumn(const String &columnName) const override
Test if a column can be renamed.
casacore::NullTable::rowStorage
virtual Vector< rownr_t > & rowStorage() override
By the default the table cannot return the storage of rownrs.
casacore::NullTable::lockOptions
virtual const TableLock & lockOptions() const override
Get the locking info.
casacore::NullTable::~NullTable
virtual ~NullTable()
casacore::NullTable::NullTable
NullTable()
Default constructor.
casacore::NullTable::keywordSet
virtual TableRecord & keywordSet() override
Get readonly access to the table keyword set.
casacore::NullTable::isNull
virtual Bool isNull() const override
The table is a null table.
casacore::NullTable::rowNumbers
virtual Vector< rownr_t > rowNumbers() const override
Get a vector of row numbers.
casacore::NullTable::renameSubTables
virtual void renameSubTables(const String &newName, const String &oldName) override
Rename the subtables (used by rename function).
casacore::NullTable::mergeLock
virtual void mergeLock(const TableLock &lockOptions) override
Merge the given lock info with the existing one.
casacore::NullTable::addColumn
virtual void addColumn(const ColumnDesc &columnDesc, const String &dataManager, Bool byName, Bool addToParent) override
casacore::NullTable::getColumn
virtual BaseColumn * getColumn(const String &columnName) const override
Get a column object using its name.
casacore::NullTable::addColumn
virtual void addColumn(const ColumnDesc &columnDesc, Bool addToParent) override
Add one or more columns to the table.
casacore::NullTable::adjustRownrs
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.
casacore::NullTable::operator=
NullTable & operator=(const NullTable &)=delete
Assignment is forbidden.
casacore::NullTable::isWritable
virtual Bool isWritable() const override
Test if this table is writable.
casacore::NullTable::renameColumn
virtual void renameColumn(const String &newName, const String &oldName) override
Rename a column.
casacore::NullTable::removeColumn
virtual void removeColumn(const Vector< String > &columnNames) override
Remove columns.
casacore::NullTable::flush
virtual void flush(Bool fsync, Bool recursive) override
Flush the table, i.e.
casacore::NullTable::canAddRow
virtual Bool canAddRow() const override
Test if it is possible to add a row to this table.
casacore::NullTable::addRow
virtual void addRow(rownr_t nrrow, Bool initialize) override
Add one or more rows and possibly initialize them.
casacore::NullTable::hasLock
virtual Bool hasLock(FileLocker::LockType) const override
Has this process the read or write lock, thus can the table be read or written safely?
casacore::NullTable::removeRow
virtual void removeRow(rownr_t rownr) override
Remove rows.
casacore::NullTable::isMultiUsed
virtual Bool isMultiUsed(Bool checkSubTable) const override
Is the table in use (i.e.
casacore::NullTable::lock
virtual Bool lock(FileLocker::LockType, uInt nattempts) override
Try to lock the table for read or write access.
casacore::NullTable::renameHypercolumn
virtual void renameHypercolumn(const String &newName, const String &oldName) override
Rename a hypercolumn.
casacore::NullTable::addColumn
virtual void addColumn(const TableDesc &tableDesc, const DataManager &dataManager, Bool addToParent) override
casacore::NullTable::resync
virtual void resync() override
Resync the Table object with the table file.
casacore::NullTable::rowOrder
virtual Bool rowOrder() const override
Tell if the table is in row order.
casacore::NullTable::findDataManager
virtual DataManager * findDataManager(const String &name, Bool byColumn) const override
Find the data manager with the given name or for the given column.
casacore::NullTable::reopenRW
virtual void reopenRW() override
All functions throw a "null table" exception.
casacore::NullTable::NullTable
NullTable(const NullTable &)=delete
Copy constructor is forbidden.
casacore::NullTable::storageOption
virtual const StorageOption & storageOption() const override
Get the storage option used for the table.
casacore::NullTable::doSort
virtual std::shared_ptr< BaseTable > doSort(Block< BaseColumn * > &, const Block< std::shared_ptr< BaseCompare > > &, const Block< Int > &, int, std::shared_ptr< Vector< rownr_t > >, std::shared_ptr< Vector< size_t > >) override
Do the actual sort.
casacore::NullTable::asBigEndian
virtual Bool asBigEndian() const override
Is the table stored in big or little endian format?
casacore::NullTable::makeError
TableError makeError(const String &name) const
Make an exception message with the name of the function.
casacore::NullTable::canRemoveRow
virtual Bool canRemoveRow() const override
Test if it is possible to remove a row from this table.
casacore::NullTable::root
virtual BaseTable * root() override
Get pointer to root table (i.e.
casacore::StorageOption
Definition StorageOption.h:75
casacore::String
String: the storage and methods of handling collections of characters.
Definition String.h:223
casacore::TableDesc
Definition TableDesc.h:189
casacore::TableError
Definition TableError.h:57
casacore::TableLock
Definition TableLock.h:67
casacore::TableRecord
Definition TableRecord.h:183
casacore::Vector
Definition Vector.h:82
casacore::Record
Record()
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::uInt
unsigned int uInt
Definition aipstype.h:49
casacore::name
String name() const
Return the name of the field.
Definition RecordField.h:163
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::rownr_t
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44