1#ifndef CASACORE_STOKES_I_STORAGE_MANAGER_H_
2#define CASACORE_STOKES_I_STORAGE_MANAGER_H_
4#include <casacore/tables/DataMan/DataManager.h>
6#include <casacore/casa/Containers/Record.h>
10#ifndef DOXYGEN_SHOULD_SKIP_THIS
14#ifndef DOXYGEN_SHOULD_SKIP_THIS
20class StokesIStManColumn;
void register_stokesistman()
Abstract base class for a data manager.
Base class for columns of the StokesIStMan.
The Stokes I storage manager behaves like a full set of (4) polarizations but only stores the Stokes ...
casacore::DataManagerColumn * makeDirArrColumn(const casacore::String &name, int dataType, const casacore::String &dataTypeID) final
Create a direct array column.
casacore::Bool flush(casacore::AipsIO &, casacore::Bool doFsync) final
Flush and optionally fsync the data.
casacore::DataManagerColumn * makeIndArrColumn(const casacore::String &name, int dataType, const casacore::String &dataTypeID) final
Create an indirect array column.
StokesIStMan(const StokesIStMan &source)
Copy constructor that initializes a storage manager with similar specs.
static constexpr size_t kHeaderSize
casacore::DataManager * clone() const final
Make a clone of the derived object.
casacore::rownr_t resync64(casacore::rownr_t nRow) final
Resync the data by rereading cached data from the file.
void reopenRW() final
Reopen the storage manager files for read/write.
StokesIStMan(const casacore::String &name, const casacore::Record &spec)
This constructor is called by Casacore when it needs to create a StokesIStMan.
casacore::String dataManagerType() const final
Return the type name of the data manager (in fact its class name).
void prepare() final
Prepare the columns, let the data manager initialize itself further.
static constexpr const char kMagicHeaderTag[8]
casacore::Record dataManagerSpec() const final
Return a record containing data manager specifications.
void removeRow64(casacore::rownr_t row_nr) final
Delete a row from all columns.
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.
casacore::Bool canRemoveColumn() const final
Does the data manager allow to delete columns? (default no)
void create64(casacore::rownr_t nRow) final
Let the storage manager create files as needed for a new table.
static casacore::DataManager * makeObject(const casacore::String &name, const casacore::Record &spec)
Create an object with given name and spec.
void addRow64(casacore::rownr_t nrrow) final
Add rows to the storage manager.
casacore::Bool canRemoveRow() const final
Does the data manager allow to delete rows? (default no)
static void registerClass()
This function makes the StokesIStMan known to Casacore.
void deleteManager() final
The data manager will be deleted (because all its columns are requested to be deleted).
casacore::Bool canAddRow() const final
Does the data manager allow to add rows? (default no)
void removeColumn(casacore::DataManagerColumn *) final
Remove a column from the data file.
BufferedColumnarFile file_
uint64_t CalculateAndUpdateStride()
void addColumn(casacore::DataManagerColumn *) final
Do the final addition of a column.
casacore::rownr_t open64(casacore::rownr_t nRow, casacore::AipsIO &) final
Open the storage manager file for an existing table.
casacore::Bool canAddColumn() const final
Does the data manager allow to add columns? (default no)
std::vector< std::unique_ptr< StokesIStManColumn > > columns_
The item-type needs to be a pointer, because casacore::StManColumn does not have move construct/assig...
String: the storage and methods of handling collections of characters.
this file contains all the compiler specific defines
bool Bool
Define the standard types used by Casacore.
uInt64 rownr_t
Define the type of a row number in a table.
Define real & complex conjugation for non-complex types and put comparisons into std namespace.