casacore
Loading...
Searching...
No Matches
SiscoStMan.h
Go to the documentation of this file.
1#ifndef CASACORE_SISCO_ST_MAN_H_
2#define CASACORE_SISCO_ST_MAN_H_
3
4#include <casacore/tables/DataMan/DataManager.h>
5
6#include <memory>
7
8#ifndef DOXYGEN_SHOULD_SKIP_THIS
9extern "C" {
10#endif
12#ifndef DOXYGEN_SHOULD_SKIP_THIS
13}
14#endif
15
16namespace casacore {
17
19
24class SiscoStMan final : public casacore::DataManager {
25 public:
36
41 SiscoStMan(const SiscoStMan &source);
42
43 ~SiscoStMan() noexcept;
44
49 SiscoStMan &operator=(const SiscoStMan &source) = delete;
50
51 casacore::DataManager *clone() const final { return new SiscoStMan(*this); }
61 const casacore::Record &spec) {
62 return new SiscoStMan(name, spec);
63 }
64
65 casacore::String dataManagerType() const final { return "SiscoStMan"; }
66
68
69 bool canAddRow() const final { return true; }
70
71 bool canRemoveRow() const final { return false; }
72
73 bool canAddColumn() const final { return !column_; }
74
75 bool canRemoveColumn() const final { return static_cast<bool>(column_); }
76
80 static void registerClass();
81
82 int DeflateLevel() const { return deflate_level_; }
83 int PredictLevel() const { return predict_level_; }
84
85 protected:
86 private:
87 friend class SiscoStManColumn;
88
90 [[maybe_unused]] casacore::Bool doFsync) final {
91 return false;
92 }
93
94 // Let the storage manager create files as needed for a new table.
95 // This allows a column with an indirect array to create its file.
96 void create64(casacore::rownr_t nRow) final;
97
98 // Open the storage manager file for an existing table.
99 // Return the number of rows in the data file.
101
102 // Create a column in the storage manager on behalf of a table column.
103 // The caller will NOT delete the newly created object.
104 // Create a scalar column.
106 const casacore::String &name, int dataType,
107 const casacore::String &dataTypeID) final;
108
109 // Create a direct array column.
111 const casacore::String &name, int dataType,
112 const casacore::String &dataTypeID) final;
113
114 // Create an indirect array column.
116 const casacore::String &name, int dataType,
117 const casacore::String &dataTypeID) final;
118
120
121 void deleteManager() final;
122
123 // Prepare the columns, let the data manager initialize itself further.
124 // Prepare is called after create/open has been called for all
125 // columns. In this way one can be sure that referenced columns
126 // are read back and partly initialized.
127 void prepare() final;
128
129 // Reopen the storage manager files for read/write.
130 void reopenRW() final;
131
132 // Add rows to the storage manager.
133 void addRow64(casacore::rownr_t nrrow) final;
134
135 // Delete a row from all columns.
136 void removeRow64(casacore::rownr_t row_nr) final;
137
138 // Do the final addition of a column.
140
141 // Remove a column from the data file.
143
144 std::string name_;
145 // The item-type needs to be a pointer, because casacore::StManColumn
146 // does not have move construct/assignment.
150};
151
152} // namespace casacore
153
154#endif
void register_siscostman()
Abstract base class for a data manager.
DataManager()
Default constructor.
Base class for columns of the StokesIStMan.
void addRow64(casacore::rownr_t nrrow) final
Add rows to the storage manager.
void deleteManager() final
The data manager will be deleted (because all its columns are requested to be deleted).
casacore::rownr_t open64(casacore::rownr_t nRow, casacore::AipsIO &) final
Open the storage manager file for an existing table.
bool canRemoveRow() const final
Does the data manager allow to delete rows?
Definition SiscoStMan.h:71
SiscoStMan(const SiscoStMan &source)
Copy constructor that initializes a storage manager with similar specs.
friend class SiscoStManColumn
Definition SiscoStMan.h:87
casacore::DataManagerColumn * makeDirArrColumn(const casacore::String &name, int dataType, const casacore::String &dataTypeID) final
Create a direct array column.
casacore::DataManagerColumn * makeIndArrColumn(const casacore::String &name, int dataType, const casacore::String &dataTypeID) final
Create an indirect array column.
void removeRow64(casacore::rownr_t row_nr) final
Delete a row from all columns.
casacore::Record dataManagerSpec() const final
Return a record containing data manager specifications.
int PredictLevel() const
Definition SiscoStMan.h:83
void addColumn(casacore::DataManagerColumn *) final
Do the final addition of a column.
casacore::rownr_t resync64(casacore::rownr_t nRow) final
Resync the data by rereading cached data from the file.
void removeColumn(casacore::DataManagerColumn *) final
Remove a column from the data file.
casacore::Bool flush(casacore::AipsIO &, casacore::Bool doFsync) final
Flush and optionally fsync the data.
Definition SiscoStMan.h:89
static void registerClass()
This function makes the SiscoStMan known to Casacore.
std::unique_ptr< SiscoStManColumn > column_
The item-type needs to be a pointer, because casacore::StManColumn does not have move construct/assig...
Definition SiscoStMan.h:147
bool canAddColumn() const final
Does the data manager allow to add columns?
Definition SiscoStMan.h:73
~SiscoStMan() noexcept
casacore::String dataManagerType() const final
Return the type name of the data manager (in fact its class name).
Definition SiscoStMan.h:65
void prepare() final
Prepare the columns, let the data manager initialize itself further.
casacore::DataManagerColumn * makeScalarColumn(const casacore::String &name, int dataType, const casacore::String &dataTypeID) final
Create a column in the storage manager on behalf of a table column.
int DeflateLevel() const
Definition SiscoStMan.h:82
void reopenRW() final
Reopen the storage manager files for read/write.
bool canRemoveColumn() const final
Does the data manager allow to delete columns?
Definition SiscoStMan.h:75
casacore::DataManager * clone() const final
Make a clone of the derived object.
Definition SiscoStMan.h:51
SiscoStMan(const casacore::String &name, const casacore::Record &spec)
This constructor is called by Casacore when it needs to create a SiscoStMan.
bool canAddRow() const final
Does the data manager allow to add rows?
Definition SiscoStMan.h:69
static casacore::DataManager * makeObject(const casacore::String &name, const casacore::Record &spec)
Create an object with given name and spec.
Definition SiscoStMan.h:60
void create64(casacore::rownr_t nRow) final
Let the storage manager create files as needed for a new table.
String: the storage and methods of handling collections of characters.
Definition String.h:223
bool Bool
Define the standard types used by Casacore.
uInt64 rownr_t
Define the type of a row number in a table.
this file contains all the compiler specific defines
Definition mainpage.dox:28
String name() const
Return the name of the field.
uInt64 rownr_t
Define the type of a row number in a table.
Definition aipsxtype.h:44
DataType dataType(const RecordFieldId &) const
Define real & complex conjugation for non-complex types and put comparisons into std namespace.
Definition Complex.h:350