casa
$Rev:20696$
|
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.
casa::MSMIndColumn::MSMIndColumn | ( | MSMBase * | , |
int | dataType | ||
) |
Create a column of the given type.
Frees up the storage.
casa::MSMIndColumn::MSMIndColumn | ( | const MSMIndColumn & | ) | [private] |
Forbid copy constructor.
Bool casa::MSMIndColumn::canAccessSlice | ( | Bool & | reask | ) | const [virtual] |
It can handle access to a slice in a cell.
Reimplemented from casa::DataManagerColumn.
Bool casa::MSMIndColumn::canChangeShape | ( | ) | const [virtual] |
This storage manager can handle changing array shapes.
Reimplemented from casa::DataManagerColumn.
const IPosition& casa::MSMIndColumn::columnShape | ( | ) | const [inline] |
void casa::MSMIndColumn::deleteArray | ( | uInt | rownr | ) | [private] |
Delete the array in the given row.
void casa::MSMIndColumn::getArrayBoolV | ( | uInt | rownr, |
Array< Bool > * | dataPtr | ||
) | [virtual] |
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 casa::StManColumn.
void casa::MSMIndColumn::getArrayComplexV | ( | uInt | rownr, |
Array< Complex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayDComplexV | ( | uInt | rownr, |
Array< DComplex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArraydoubleV | ( | uInt | rownr, |
Array< double > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayfloatV | ( | uInt | rownr, |
Array< float > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayIntV | ( | uInt | rownr, |
Array< Int > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayShortV | ( | uInt | rownr, |
Array< Short > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayStringV | ( | uInt | rownr, |
Array< String > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayuCharV | ( | uInt | rownr, |
Array< uChar > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayuIntV | ( | uInt | rownr, |
Array< uInt > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getArrayuShortV | ( | uInt | rownr, |
Array< uShort > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void* casa::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.
Data* casa::MSMIndColumn::getShape | ( | uInt | rownr | ) | [private] |
void casa::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 casa::StManColumn.
void casa::MSMIndColumn::getSliceComplexV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< Complex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceDComplexV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< DComplex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSlicedoubleV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< double > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSlicefloatV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< float > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceIntV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< Int > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceShortV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< Short > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceStringV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< String > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceuCharV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< uChar > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceuIntV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< uInt > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::getSliceuShortV | ( | uInt | rownr, |
const Slicer & | , | ||
Array< uShort > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
Bool casa::MSMIndColumn::isShapeDefined | ( | uInt | rownr | ) | [virtual] |
Is the shape defined (i.e.
is there an array) in this row?
Reimplemented from casa::DataManagerColumn.
uInt casa::MSMIndColumn::ndim | ( | uInt | rownr | ) | [virtual] |
Get the dimensionality of the item in the given row.
0 is returned if there is no array.
Reimplemented from casa::DataManagerColumn.
MSMIndColumn& casa::MSMIndColumn::operator= | ( | const MSMIndColumn & | ) | [private] |
Forbid assignment.
void casa::MSMIndColumn::putArrayBoolV | ( | uInt | rownr, |
const Array< Bool > * | dataPtr | ||
) | [virtual] |
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 casa::StManColumn.
void casa::MSMIndColumn::putArrayComplexV | ( | uInt | rownr, |
const Array< Complex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayDComplexV | ( | uInt | rownr, |
const Array< DComplex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArraydoubleV | ( | uInt | rownr, |
const Array< double > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayfloatV | ( | uInt | rownr, |
const Array< float > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayIntV | ( | uInt | rownr, |
const Array< Int > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayShortV | ( | uInt | rownr, |
const Array< Short > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayStringV | ( | uInt | rownr, |
const Array< String > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayuCharV | ( | uInt | rownr, |
const Array< uChar > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayuIntV | ( | uInt | rownr, |
const Array< uInt > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putArrayuShortV | ( | uInt | rownr, |
const Array< uShort > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::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 casa::StManColumn.
void casa::MSMIndColumn::putSliceComplexV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< Complex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceDComplexV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< DComplex > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSlicedoubleV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< double > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSlicefloatV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< float > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceIntV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< Int > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceShortV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< Short > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceStringV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< String > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceuCharV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< uChar > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceuIntV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< uInt > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::putSliceuShortV | ( | uInt | rownr, |
const Slicer & | , | ||
const Array< uShort > * | dataPtr | ||
) | [virtual] |
Reimplemented from casa::StManColumn.
void casa::MSMIndColumn::remove | ( | uInt | rownr | ) | [virtual] |
Remove the value in the given row.
This will result in lost file space.
Reimplemented from casa::MSMColumn.
void casa::MSMIndColumn::setShape | ( | uInt | rownr, |
const IPosition & | shape | ||
) | [virtual] |
Set the shape of the array in the given row and allocate the array in the file.
Reimplemented from casa::DataManagerColumn.
void casa::MSMIndColumn::setShapeColumn | ( | const IPosition & | shape | ) | [virtual] |
Set the (fixed) shape of the arrays in the entire column.
Reimplemented from casa::DataManagerColumn.
IPosition casa::MSMIndColumn::shape | ( | uInt | rownr | ) | [virtual] |
Get the shape of the array in the given row.
An zero-length IPosition is returned if there is no array.
Reimplemented from casa::DataManagerColumn.
uInt casa::MSMIndColumn::elemSize_p [private] |
The size of an array element.
Definition at line 215 of file MSMIndColumn.h.
IPosition casa::MSMIndColumn::fixedShape_p [private] |
The shape of all arrays in case it is fixed.
Definition at line 213 of file MSMIndColumn.h.
Referenced by columnShape().
uInt casa::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().