Mmeory storage manager for variable shaped table arrays. More...
#include <MSMIndColumn.h>
Classes | |
class | Data |
Public Member Functions | |
MSMIndColumn (MSMBase *, int dataType) | |
Create a column of the given type. | |
~MSMIndColumn () | |
Frees up the storage. | |
Bool | canAccessSlice (Bool &reask) const |
It can handle access to a slice in a cell. | |
void | setShapeColumn (const IPosition &shape) |
Set the (fixed) shape of the arrays in the entire column. | |
const IPosition & | columnShape () const |
Get the column shape. | |
void | setShape (uInt rownr, const IPosition &shape) |
Set the shape of the array in the given row and allocate the array in the file. | |
Bool | isShapeDefined (uInt rownr) |
Is the shape defined (i.e. | |
uInt | ndim (uInt rownr) |
Get the dimensionality of the item in the given row. | |
IPosition | shape (uInt rownr) |
Get the shape of the array in the given row. | |
Bool | canChangeShape () const |
This storage manager can handle changing array shapes. | |
void | getArrayBoolV (uInt rownr, Array< Bool > *dataPtr) |
Get an array value in the given row. | |
void | getArrayuCharV (uInt rownr, Array< uChar > *dataPtr) |
void | getArrayShortV (uInt rownr, Array< Short > *dataPtr) |
void | getArrayuShortV (uInt rownr, Array< uShort > *dataPtr) |
void | getArrayIntV (uInt rownr, Array< Int > *dataPtr) |
void | getArrayuIntV (uInt rownr, Array< uInt > *dataPtr) |
void | getArrayfloatV (uInt rownr, Array< float > *dataPtr) |
void | getArraydoubleV (uInt rownr, Array< double > *dataPtr) |
void | getArrayComplexV (uInt rownr, Array< Complex > *dataPtr) |
void | getArrayDComplexV (uInt rownr, Array< DComplex > *dataPtr) |
void | getArrayStringV (uInt rownr, Array< String > *dataPtr) |
void | putArrayBoolV (uInt rownr, const Array< Bool > *dataPtr) |
Put an array value into the given row. | |
void | putArrayuCharV (uInt rownr, const Array< uChar > *dataPtr) |
void | putArrayShortV (uInt rownr, const Array< Short > *dataPtr) |
void | putArrayuShortV (uInt rownr, const Array< uShort > *dataPtr) |
void | putArrayIntV (uInt rownr, const Array< Int > *dataPtr) |
void | putArrayuIntV (uInt rownr, const Array< uInt > *dataPtr) |
void | putArrayfloatV (uInt rownr, const Array< float > *dataPtr) |
void | putArraydoubleV (uInt rownr, const Array< double > *dataPtr) |
void | putArrayComplexV (uInt rownr, const Array< Complex > *dataPtr) |
void | putArrayDComplexV (uInt rownr, const Array< DComplex > *dataPtr) |
void | putArrayStringV (uInt rownr, const Array< String > *dataPtr) |
void | getSliceBoolV (uInt rownr, const Slicer &, Array< Bool > *dataPtr) |
Get a section of the array in the given row. | |
void | getSliceuCharV (uInt rownr, const Slicer &, Array< uChar > *dataPtr) |
void | getSliceShortV (uInt rownr, const Slicer &, Array< Short > *dataPtr) |
void | getSliceuShortV (uInt rownr, const Slicer &, Array< uShort > *dataPtr) |
void | getSliceIntV (uInt rownr, const Slicer &, Array< Int > *dataPtr) |
void | getSliceuIntV (uInt rownr, const Slicer &, Array< uInt > *dataPtr) |
void | getSlicefloatV (uInt rownr, const Slicer &, Array< float > *dataPtr) |
void | getSlicedoubleV (uInt rownr, const Slicer &, Array< double > *dataPtr) |
void | getSliceComplexV (uInt rownr, const Slicer &, Array< Complex > *dataPtr) |
void | getSliceDComplexV (uInt rownr, const Slicer &, Array< DComplex > *dataPtr) |
void | getSliceStringV (uInt rownr, const Slicer &, Array< String > *dataPtr) |
void | putSliceBoolV (uInt rownr, const Slicer &, const Array< Bool > *dataPtr) |
Put into a section of the array in the given row. | |
void | putSliceuCharV (uInt rownr, const Slicer &, const Array< uChar > *dataPtr) |
void | putSliceShortV (uInt rownr, const Slicer &, const Array< Short > *dataPtr) |
void | putSliceuShortV (uInt rownr, const Slicer &, const Array< uShort > *dataPtr) |
void | putSliceIntV (uInt rownr, const Slicer &, const Array< Int > *dataPtr) |
void | putSliceuIntV (uInt rownr, const Slicer &, const Array< uInt > *dataPtr) |
void | putSlicefloatV (uInt rownr, const Slicer &, const Array< float > *dataPtr) |
void | putSlicedoubleV (uInt rownr, const Slicer &, const Array< double > *dataPtr) |
void | putSliceComplexV (uInt rownr, const Slicer &, const Array< Complex > *dataPtr) |
void | putSliceDComplexV (uInt rownr, const Slicer &, const Array< DComplex > *dataPtr) |
void | putSliceStringV (uInt rownr, const Slicer &, const Array< String > *dataPtr) |
void | remove (uInt rownr) |
Remove the value in the given row. | |
Private Member Functions | |
void | deleteArray (uInt rownr) |
Delete the array in the given row. | |
Data * | getShape (uInt rownr) |
Read the shape at the given row. | |
void * | getDataPtr (uInt rownr) |
Get a pointer to the data array. | |
MSMIndColumn (const MSMIndColumn &) | |
Forbid copy constructor. | |
MSMIndColumn & | operator= (const MSMIndColumn &) |
Forbid assignment. | |
Private Attributes | |
IPosition | fixedShape_p |
The shape of all arrays in case it is fixed. | |
uInt | elemSize_p |
The size of an array element. | |
uInt | startSize_p |
The size at the start of the data (for the IPosition). |
Mmeory storage manager for variable shaped table arrays.
Internal
StManColumnArrayAipsIO handles indirect arrays in a table column.
An array (or section of an array) is only read when needed. It, however, caches the array shape using the helper class StIndArray. Pointers to these objects are maintained using the standard StManColumnAipsIO facilities. When the column gets written, the offsets in the StManArrayFile file get written. Those will be read back when the column is read in.
When a row gets deleted or when the array gets bigger, the file space is lost. This storage manager is a simple one and no attempts are done to make it smart.
Definition at line 76 of file MSMIndColumn.h.
casacore::MSMIndColumn::MSMIndColumn | ( | MSMBase * | , | |
int | dataType | |||
) |
Create a column of the given type.
casacore::MSMIndColumn::~MSMIndColumn | ( | ) |
Frees up the storage.
casacore::MSMIndColumn::MSMIndColumn | ( | const MSMIndColumn & | ) | [private] |
Forbid copy constructor.
It can handle access to a slice in a cell.
Reimplemented from casacore::DataManagerColumn.
Bool casacore::MSMIndColumn::canChangeShape | ( | ) | const [virtual] |
This storage manager can handle changing array shapes.
Reimplemented from casacore::DataManagerColumn.
const IPosition& casacore::MSMIndColumn::columnShape | ( | ) | const [inline] |
void casacore::MSMIndColumn::deleteArray | ( | uInt | rownr | ) | [private] |
Delete the array in the given row.
Get an array value in the given row.
The buffer pointed to by dataPtr has to have the correct length (which is guaranteed by the ArrayColumn get function).
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getArrayDComplexV | ( | uInt | rownr, | |
Array< DComplex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
void* casacore::MSMIndColumn::getDataPtr | ( | uInt | rownr | ) | [inline, private] |
Get a pointer to the data array.
Definition at line 228 of file MSMIndColumn.h.
References getShape(), and startSize_p.
void casacore::MSMIndColumn::getSliceBoolV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< Bool > * | dataPtr | |||
) | [virtual] |
Get a section of the array in the given row.
The buffer pointed to by dataPtr has to have the correct length (which is guaranteed by the ArrayColumn getSlice function).
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceComplexV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< Complex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceDComplexV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< DComplex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSlicedoubleV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< double > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSlicefloatV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< float > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceIntV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< Int > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceShortV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< Short > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceStringV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< String > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceuCharV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< uChar > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceuIntV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< uInt > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::getSliceuShortV | ( | uInt | rownr, | |
const Slicer & | , | |||
Array< uShort > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
Is the shape defined (i.e.
is there an array) in this row?
Reimplemented from casacore::DataManagerColumn.
Get the dimensionality of the item in the given row.
0 is returned if there is no array.
Reimplemented from casacore::DataManagerColumn.
MSMIndColumn& casacore::MSMIndColumn::operator= | ( | const MSMIndColumn & | ) | [private] |
Forbid assignment.
Reimplemented from casacore::MSMColumn.
Put an array value into the given row.
The buffer pointed to by dataPtr has to have the correct length (which is guaranteed by the ArrayColumn put function).
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayComplexV | ( | uInt | rownr, | |
const Array< Complex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayDComplexV | ( | uInt | rownr, | |
const Array< DComplex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArraydoubleV | ( | uInt | rownr, | |
const Array< double > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayfloatV | ( | uInt | rownr, | |
const Array< float > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayShortV | ( | uInt | rownr, | |
const Array< Short > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayStringV | ( | uInt | rownr, | |
const Array< String > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayuCharV | ( | uInt | rownr, | |
const Array< uChar > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putArrayuShortV | ( | uInt | rownr, | |
const Array< uShort > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceBoolV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< Bool > * | dataPtr | |||
) | [virtual] |
Put into a section of the array in the given row.
The buffer pointed to by dataPtr has to have the correct length (which is guaranteed by the ArrayColumn putSlice function).
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceComplexV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< Complex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceDComplexV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< DComplex > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSlicedoubleV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< double > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSlicefloatV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< float > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceIntV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< Int > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceShortV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< Short > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceStringV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< String > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceuCharV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< uChar > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceuIntV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< uInt > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::putSliceuShortV | ( | uInt | rownr, | |
const Slicer & | , | |||
const Array< uShort > * | dataPtr | |||
) | [virtual] |
Reimplemented from casacore::StManColumn.
void casacore::MSMIndColumn::remove | ( | uInt | rownr | ) | [virtual] |
Remove the value in the given row.
This will result in lost file space.
Reimplemented from casacore::MSMColumn.
Set the shape of the array in the given row and allocate the array in the file.
Reimplemented from casacore::DataManagerColumn.
void casacore::MSMIndColumn::setShapeColumn | ( | const IPosition & | shape | ) | [virtual] |
Set the (fixed) shape of the arrays in the entire column.
Reimplemented from casacore::DataManagerColumn.
Get the shape of the array in the given row.
An zero-length IPosition is returned if there is no array.
Reimplemented from casacore::DataManagerColumn.
uInt casacore::MSMIndColumn::elemSize_p [private] |
The size of an array element.
Definition at line 215 of file MSMIndColumn.h.
The shape of all arrays in case it is fixed.
Definition at line 213 of file MSMIndColumn.h.
Referenced by columnShape().
uInt casacore::MSMIndColumn::startSize_p [private] |
The size at the start of the data (for the IPosition).
Definition at line 217 of file MSMIndColumn.h.
Referenced by getDataPtr().