casacore
Loading...
Searching...
No Matches
NullTable.h
Go to the documentation of this file.
1// # NullTable.h: Class indicating a null Table object
2// # Copyright (C) 2001,2002,2003
3// # Associated Universities, Inc. Washington DC, USA.
4// #
5// # This library is free software; you can redistribute it and/or modify it
6// # under the terms of the GNU Library General Public License as published by
7// # the Free Software Foundation; either version 2 of the License, or (at your
8// # option) any later version.
9// #
10// # This library is distributed in the hope that it will be useful, but WITHOUT
11// # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12// # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13// # License for more details.
14// #
15// # You should have received a copy of the GNU Library General Public License
16// # along with this library; if not, write to the Free Software Foundation,
17// # Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18// #
19// # Correspondence concerning AIPS++ should be addressed as follows:
20// # Internet email: casa-feedback@nrao.edu.
21// # Postal address: AIPS++ Project Office
22// # National Radio Astronomy Observatory
23// # 520 Edgemont Road
24// # Charlottesville, VA 22903-2475 USA
25
26#ifndef TABLES_NULLTABLE_H
27#define TABLES_NULLTABLE_H
28
29// # Includes
30#include <casacore/casa/aips.h>
31#include <casacore/tables/Tables/BaseTable.h>
32#include <casacore/tables/Tables/TableError.h>
33
34namespace casacore { // # NAMESPACE CASACORE - BEGIN
35
36// <summary>
37// Class indicating a null Table object
38// </summary>
39
40// <use visibility=local>
41
42// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="">
43// </reviewed>
44
45// <prerequisite>
46// # Classes you should understand before using this one.
47// <li> <linkto class=BaseTable>BaseTable</linkto>
48// </prerequisite>
49
50// <etymology>
51// NullTable represents a null table object, i.e. a Table object without
52// an underlying table.
53// </etymology>
54
55// <synopsis>
56// NullTable is used to represent a null table.
57// The default Table constructor used to a create a null pointer
58// which resulted in core dumps when the Table object was actually used.
59// The NullTable object makes it possible to catch such cases
60// and throw an appropriate exception.
61// </synopsis>
62
63class NullTable : public BaseTable {
64 public:
65 // Default constructor.
67
68 virtual ~NullTable();
69
70 // Copy constructor is forbidden.
71 NullTable(const NullTable&) = delete;
72
73 // Assignment is forbidden.
74 NullTable& operator=(const NullTable&) = delete;
75
76 // The table is a null table.
77 virtual Bool isNull() const override;
78
79 // All functions throw a "null table" exception.
80 // <group>
81 virtual void reopenRW() override;
82 virtual Bool asBigEndian() const override;
83 virtual const StorageOption& storageOption() const override;
84 virtual Bool isMultiUsed(Bool checkSubTable) const override;
85 virtual const TableLock& lockOptions() const override;
86 virtual void mergeLock(const TableLock& lockOptions) override;
87 virtual Bool hasLock(FileLocker::LockType) const override;
88 virtual Bool lock(FileLocker::LockType, uInt nattempts) override;
89 virtual void unlock() override;
90 virtual void flush(Bool fsync, Bool recursive) override;
91 virtual void resync() override;
92 virtual uInt getModifyCounter() const override;
93 virtual Bool isWritable() const override;
94 virtual void deepCopy(const String& newName, const Record& dataManagerInfo, const StorageOption&,
95 int tableOption, Bool valueCopy, int endianFormat,
96 Bool noRows) const override;
97 virtual TableDesc actualTableDesc() const override;
98 virtual Record dataManagerInfo() const override;
99 virtual TableRecord& keywordSet() override;
100 virtual TableRecord& rwKeywordSet() override;
101 virtual BaseColumn* getColumn(uInt columnIndex) const override;
102 virtual BaseColumn* getColumn(const String& columnName) const override;
103 virtual Bool canAddRow() const override;
104 virtual void addRow(rownr_t nrrow, Bool initialize) override;
105 virtual Bool canRemoveRow() const override;
106 virtual void removeRow(rownr_t rownr) override;
107 virtual DataManager* findDataManager(const String& name, Bool byColumn) const override;
108 virtual void addColumn(const ColumnDesc& columnDesc, Bool addToParent) override;
109 virtual void addColumn(const ColumnDesc& columnDesc, const String& dataManager, Bool byName,
110 Bool addToParent) override;
111 virtual void addColumn(const ColumnDesc& columnDesc, const DataManager& dataManager,
112 Bool addToParent) override;
113 virtual void addColumn(const TableDesc& tableDesc, const DataManager& dataManager,
114 Bool addToParent) override;
115 virtual Bool canRemoveColumn(const Vector<String>& columnNames) const override;
116 virtual void removeColumn(const Vector<String>& columnNames) override;
117 virtual Bool canRenameColumn(const String& columnName) const override;
118 virtual void renameColumn(const String& newName, const String& oldName) override;
119 virtual void renameHypercolumn(const String& newName, const String& oldName) override;
120 virtual Vector<rownr_t> rowNumbers() const override;
121 virtual BaseTable* root() override;
122 virtual Bool rowOrder() const override;
123 virtual Vector<rownr_t>& rowStorage() override;
124 virtual Bool adjustRownrs(rownr_t nrrow, Vector<rownr_t>& rownrs,
125 Bool determineOrder) const override;
126 virtual std::shared_ptr<BaseTable> doSort(Block<BaseColumn*>&,
127 const Block<std::shared_ptr<BaseCompare>>&,
128 const Block<Int>&, int,
129 std::shared_ptr<Vector<rownr_t>>,
130 std::shared_ptr<Vector<size_t>>) override;
131 virtual void renameSubTables(const String& newName, const String& oldName) override;
132 // </group>
133
134 private:
135 // Make an exception message with the name of the function.
137};
138
139} // namespace casacore
140
141#endif
const TableDesc & tableDesc() const
Get the table description.
Definition BaseTable.h:261
BaseTable(const String &tableName, int tableOption, rownr_t nrrow)
Initialize the object.
int tableOption() const
Get the table option.
Definition BaseTable.h:244
Abstract base class for a data manager.
LockType
Define the possible lock types.
Definition FileLocker.h:89
virtual TableRecord & rwKeywordSet() override
Get read/write access to the table keyword set.
virtual void deepCopy(const String &newName, const Record &dataManagerInfo, const StorageOption &, int tableOption, Bool valueCopy, int endianFormat, Bool noRows) const override
virtual Record dataManagerInfo() const override
Get the data manager info.
virtual BaseColumn * getColumn(uInt columnIndex) const override
Get a column object using its index.
virtual TableDesc actualTableDesc() const override
Get the actual table description.
virtual void addColumn(const ColumnDesc &columnDesc, const DataManager &dataManager, Bool addToParent) override
virtual uInt getModifyCounter() const override
Get the modify counter.
virtual void unlock() override
Unlock the table.
virtual Bool canRemoveColumn(const Vector< String > &columnNames) const override
Test if columns can be removed.
virtual Bool canRenameColumn(const String &columnName) const override
Test if a column can be renamed.
virtual Vector< rownr_t > & rowStorage() override
By the default the table cannot return the storage of rownrs.
virtual const TableLock & lockOptions() const override
Get the locking info.
NullTable()
Default constructor.
virtual TableRecord & keywordSet() override
Get readonly access to the table keyword set.
virtual Bool isNull() const override
The table is a null table.
virtual Vector< rownr_t > rowNumbers() const override
Get a vector of row numbers.
virtual void renameSubTables(const String &newName, const String &oldName) override
Rename the subtables (used by rename function).
virtual void mergeLock(const TableLock &lockOptions) override
Merge the given lock info with the existing one.
virtual void addColumn(const ColumnDesc &columnDesc, const String &dataManager, Bool byName, Bool addToParent) override
virtual BaseColumn * getColumn(const String &columnName) const override
Get a column object using its name.
virtual void addColumn(const ColumnDesc &columnDesc, Bool addToParent) override
Add one or more columns to the table.
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.
NullTable & operator=(const NullTable &)=delete
Assignment is forbidden.
virtual Bool isWritable() const override
Test if this table is writable.
virtual void renameColumn(const String &newName, const String &oldName) override
Rename a column.
virtual void removeColumn(const Vector< String > &columnNames) override
Remove columns.
virtual void flush(Bool fsync, Bool recursive) override
Flush the table, i.e.
virtual Bool canAddRow() const override
Test if it is possible to add a row to this table.
virtual void addRow(rownr_t nrrow, Bool initialize) override
Add one or more rows and possibly initialize them.
virtual Bool hasLock(FileLocker::LockType) const override
Has this process the read or write lock, thus can the table be read or written safely?
virtual void removeRow(rownr_t rownr) override
Remove rows.
virtual Bool isMultiUsed(Bool checkSubTable) const override
Is the table in use (i.e.
virtual Bool lock(FileLocker::LockType, uInt nattempts) override
Try to lock the table for read or write access.
virtual void renameHypercolumn(const String &newName, const String &oldName) override
Rename a hypercolumn.
virtual void addColumn(const TableDesc &tableDesc, const DataManager &dataManager, Bool addToParent) override
virtual void resync() override
Resync the Table object with the table file.
virtual Bool rowOrder() const override
Tell if the table is in row order.
virtual DataManager * findDataManager(const String &name, Bool byColumn) const override
Find the data manager with the given name or for the given column.
virtual void reopenRW() override
All functions throw a "null table" exception.
NullTable(const NullTable &)=delete
Copy constructor is forbidden.
virtual const StorageOption & storageOption() const override
Get the storage option used for the table.
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.
virtual Bool asBigEndian() const override
Is the table stored in big or little endian format?
TableError makeError(const String &name) const
Make an exception message with the name of the function.
virtual Bool canRemoveRow() const override
Test if it is possible to remove a row from this table.
virtual BaseTable * root() override
Get pointer to root table (i.e.
String: the storage and methods of handling collections of characters.
Definition String.h:355
For temporary backward namespace compatibility, use casa as alias for casacore.
Definition mainpage.dox:28
unsigned int uInt
Definition aipstype.h:49
String name() const
Return the name of the field.
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44