//# 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: aips2-request@nrao.edu. //# Postal address: AIPS++ Project Office //# National Radio Astronomy Observatory //# 520 Edgemont Road //# Charlottesville, VA 22903-2475 USA //# //# $Id$ #ifndef TABLES_NULLTABLE_H #define TABLES_NULLTABLE_H //# Includes #include #include #include namespace casacore { //# NAMESPACE CASACORE - BEGIN // // Class indicating a null Table object // // // // // //# Classes you should understand before using this one. //
  • BaseTable // // // NullTable represents a null table object, i.e. a Table object without // an underlying table. // // // 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. // class NullTable : public BaseTable { public: // Default constructor. NullTable(); virtual ~NullTable(); // The table is a null table. virtual Bool isNull() const override; // All functions throw a "null table" exception. // 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& columnNames) const override; virtual void removeColumn (const Vector& 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 rowNumbers() const override; virtual BaseTable* root() override; virtual Bool rowOrder() const override; virtual Vector* rowStorage() override; virtual Bool adjustRownrs (rownr_t nrrow, Vector& rownrs, Bool determineOrder) const override; virtual BaseTable* doSort (PtrBlock&, const Block >&, const Block& sortOrder, int sortOption, std::shared_ptr> sortIterBoundaries, std::shared_ptr> sortIterKeyIdxChange) override; virtual void renameSubTables (const String& newName, const String& oldName) override; // private: // Copy constructor is forbidden, because copying a table requires // some more knowledge (like table name of result). // Declaring it private, makes it unusable. NullTable (const NullTable&); // Assignment is forbidden, because copying a table requires // some more knowledge (like table name of result). // Declaring it private, makes it unusable. NullTable& operator= (const NullTable&); // Make an exception message with the name of the function. TableError makeError (const String& name) const; }; } //# NAMESPACE CASACORE - END #endif