28 #ifndef TABLES_TILEDSTMAN_H
29 #define TABLES_TILEDSTMAN_H
49 template<
class T>
class Vector;
163 uInt maxNrPixelsPerTile = 32768);
167 uInt maxNrPixelsPerTile = 32768);
267 uInt& localTileLength)
const;
312 const char* external,
const Block<uInt>& externalOffset,
341 const String& dataTypeID);
344 const String& dataTypeID);
347 const String& dataTypeID);
393 Bool mustExist)
const;
409 const Record& values)
const;
417 const Record& values)
const;
429 const Record& values)
const;
A Vector of integers, for indexing into Array<T> objects.
DataManagerColumn * makeDirArrColumn(const String &name, int dataType, const String &dataTypeID)
Create a direct array column.
void headerFilePut(AipsIO &headerFile, uInt nrCube)
Write the data into the header file.
PtrBlock< TSMColumn * > idColSet_p
The assembly of all id columns.
PtrBlock< TSMColumn * > colSet_p
The assembly of all columns.
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
Bool canReallocateColumns() const
The TiledStMan wants to do reallocateColumn.
virtual TSMCube * singleHypercube()
Test if only one hypercube is used by this storage manager.
std::vector< double > Vector
Bool canAddRow() const
Does the storage manager allow to add rows? (yes)
virtual Bool canChangeShape() const
Can the tiled storage manager handle changing array shapes? The default is no (but TiledCellStMan can...
TSMCube * makeTSMCube(TSMFile *file, const IPosition &cubeShape, const IPosition &tileShape, const Record &values, Int64 fileOffset=-1)
Make the correct TSMCube type (depending on tsmOption()).
TiledStMan & operator=(const TiledStMan &)
Forbid assignment.
uInt nrdim_p
The dimensionality of the hypercolumn.
void checkCubeShape(const TSMCube *hypercube, const IPosition &cubeShape) const
Check the shape to be set for a hypercube.
DataManagerColumn * makeIndArrColumn(const String &name, int dataType, const String &dataTypeID)
Create an indirect array column.
virtual Bool hasMultiFileSupport() const
The data manager supports use of MultiFile.
Tiled hypercube in a table.
AipsIO is the object persistency mechanism of Casacore.
uInt calcCacheSize(uInt rownr, const IPosition &sliceShape, const IPosition &windowStart, const IPosition &windowLength, const IPosition &axisPath) const
Calculate the cache size (in buckets) for accessing the hypercube containing the given row...
void headerFileGet(AipsIO &headerFile, uInt tabNrrow, Bool firstTime, Int extraNdim)
Read the data from the header file.
Abstract base class for a column in a data manager.
virtual void resync(uInt nrrow)
Resync the storage manager with the new file contents.
virtual void setupCheck(const TableDesc &tableDesc, const Vector< String > &dataNames) const
Function setup calls this function to allow the derived class to check specific information.
virtual void open(uInt nrrow, AipsIO &)
Open the storage manager for an existing table.
void initCoordinates(TSMCube *hypercube)
Initialize the new coordinates for the given cube.
PtrBlock< TSMDataColumn * > dataCols_p
The assembly of all data columns.
Base class for Tiled Storage Manager classes.
virtual Bool canAccessColumn(Bool &reask) const
Can the tiled storage manager access an entire column.
uInt bucketSize(uInt rownr) const
Get the bucket size (in bytes) of the hypercube in the given row.
Bool flushCaches(Bool fsync)
Flush the caches of all hypercubes.
int coordinateDataType(const String &columnName) const
Get the data type of the coordinate column with the given name.
void showCacheStatistics(ostream &os) const
Show the statistics of all caches used.
void checkAddHypercube(const IPosition &cubeShape, const Record &values) const
Check if the hypercube to be added is correctly defined.
ABSTRACT CLASSES Abstract class for colors Any implementation of color should be able to provide a hexadecimal form of the if a human readable name(i.e."black").In many places throughout the plotter
const TSMCube * getHypercube(uInt rownr) const
Get the hypercube in which the given row is stored.
uInt addedNrrow(const IPosition &shape, uInt incrInLastDim) const
Determine how many rows need to be added for an extension (in the last dimension) of a hypercube with...
virtual void setProperties(const Record &spec)
Modify data manager properties.
DataManagerColumn * makeScalarColumn(const String &name, int dataType, const String &dataTypeID)
Create a column in the storage manager on behalf of a table column.
void createFile(uInt index)
Create a TSMFile object and store its pointer at the given index in the block.
A data column in Tiled Storage Manager.
PtrBlock< TSMColumn * > coordColSet_p
The assembly of all coordinate columns.
void setDataManagerName(const String &newHypercolumnName)
IPosition fixedCellShape_p
The fixed cell shape.
void headerFileClose(AipsIO *headerFile)
Close the header file.
uInt nrCoordVector_p
The number of vector coordinates.
virtual Record dataManagerSpec() const
Return a record containing data manager specifications.
uInt nrCoordVector() const
Get the number of coordinate vectors.
virtual void reopenRW()
Reopen all files used in this storage manager for read/write access.
AipsIO * headerFileCreate()
Create the TSM header file.
virtual const TableDesc & getDesc() const
Get the table description needed for the hypercolumn description.
TSMFile * getFile(uInt sequenceNumber)
Get the TSMFile object with the given sequence number.
void checkCoordinatesShapes(const TSMCube *hypercube, const IPosition &cubeShape) const
Check if the cube shape matches that of defined coordinates.
uInt nhypercubes() const
Return the number of hypercubes.
DataManagerColumn * reallocateColumn(DataManagerColumn *column)
Reallocate the column object if it is part of this data manager.
PtrBlock< TSMFile * > fileSet_p
The assembly of all TSMFile objects.
uInt persMaxCacheSize_p
The persistent maximum cache size (in MiB) for a hypercube.
void checkValues(const PtrBlock< TSMColumn * > &colSet, const Record &values) const
Check if values are given in the record for all columns in the block.
Bool userSetCache(uInt rownr) const
Determine if the user set the cache size (using setCacheSize).
virtual void readHeader(uInt nrrow, Bool firstTime)=0
Let a derived class read the header info.
A hierarchical collection of named fields of various types.
bool Bool
Define the standard types used by Casacore.
Bool dataChanged_p
Has any data changed since the last flush?
void setDataChanged()
Set the flag to "data has changed since last flush".
TiledStMan()
Create a TiledStMan.
virtual String dataManagerName() const
Get the name given to the storage manager.
void writeTile(char *external, const Block< uInt > &externalOffset, const char *local, const Block< uInt > &localOffset, uInt nrpixels)
Write a tile after converting the data to external format.
String hypercolumnName_p
The name of the hypercolumn.
const TSMDataColumn * getDataColumn(uInt colnr) const
Get pointer to data column object.
void setPersMaxCacheSize(uInt nMiB)
Set the persistent maximum cache size (in MiB).
File object for Tiled Storage Manager.
void setHypercubeCacheSize(uInt hypercube, uInt nbuckets, Bool forceSmaller)
Sets the cache size using the hypercube instead of the row number.
void setCacheSize(uInt rownr, const IPosition &sliceShape, const IPosition &windowStart, const IPosition &windowLength, const IPosition &axisPath, Bool forceSmaller)
Set the cache size using the calcCacheSize function mentioned above.
A drop-in replacement for Block<T*>.
TableExprNode shape(const TableExprNode &array)
Function operating on any scalar or array resulting in a Double array containing the shape...
uInt nrow() const
Get the nr of rows in this storage manager.
Int getCubeIndex(const Record &idValues) const
Get the index of the hypercube with the given id-values.
virtual void setMaximumCacheSize(uInt nMiB)
Set the maximum cache size (in MiB) in a non-persistent way.
const TSMCube * getTSMCube(uInt hypercube) const
Get the given hypercube.
void setup(Int extraNdim=-1)
Set up the TiledStMan variables from the table description.
const IPosition & hypercubeShape(uInt rownr) const
Get the hypercube shape of the data in the given row.
static IPosition makeTileShape(const IPosition &hypercubeShape, Double tolerance=0.5, uInt maxNrPixelsPerTile=32768)
Derive the tile shape from the hypercube shape for the given number of pixels per tile...
PtrBlock< TSMCube * > cubeSet_p
The assembly of all TSMCube objects.
AipsIO * headerFileOpen()
Open the TSM header file.
void checkCoordinates(const PtrBlock< TSMColumn * > &coordColSet, const IPosition &cubeShape, const Record &values) const
Check if the coordinate values are correct.
uInt nrrow_p
The number of rows in the columns.
Abstract base class for a data manager.
virtual IPosition defaultTileShape() const
Get the default tile shape.
virtual void deleteManager()
The data manager will be deleted (because all its columns are requested to be deleted).
uInt maximumCacheSize() const
Get the current maximum cache size (in MiB (MibiByte)).
String: the storage and methods of handling collections of characters.
uInt getLengthOffset(uInt nrPixels, Block< uInt > &dataOffset, Block< uInt > &localOffset, uInt &localTileLength) const
Get the length of the data for the given number of pixels.
Define the structure of a Casacore table.
PtrBlock< TSMColumn * > dataColSet_p
const IPosition & tileShape(uInt rownr) const
Get the tile shape of the data in the given row.
virtual void setShape(uInt rownr, TSMCube *hypercube, const IPosition &shape, const IPosition &tileShape)
Set the shape and tile shape of a hypercube.
void checkShapeColumn(const IPosition &shape) const
Check if the shapes of FixedShape data and coordinate columns match.
TSMCube * makeHypercube(const IPosition &cubeShape, const IPosition &tileShape, const Record &values)
Make a new TSMCube object.
uInt cacheSize(uInt rownr) const
Get the current cache size (in buckets) for the hypercube in the given row.
void readTile(char *local, const Block< uInt > &localOffset, const char *external, const Block< uInt > &externalOffset, uInt nrpixels)
Read a tile and convert the data to local format.
void emptyCaches()
Empty the caches used by the hypercubes in this storage manager.
uInt getBindings(const Vector< String > &columnNames, PtrBlock< TSMColumn * > &colSet, Bool mustExist) const
Get the bindings of the columns with the given names.
int arrayDataType(int dataType) const
Convert the scalar data type to an array data type.
uInt maxCacheSize_p
The actual maximum cache size for a hypercube (in MiB).
virtual Record getProperties() const
Get data manager properties that can be modified.
Defines nreal time structures used by the VLA table filler.
#define casacore
<X11/Intrinsic.h> #defines true, false, casacore::Bool, and String.