00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TABLES_SSMINDCOLUMN_H
00029 #define TABLES_SSMINDCOLUMN_H
00030
00031
00032
00033 #include <casacore/casa/aips.h>
00034 #include <casacore/tables/DataMan/SSMColumn.h>
00035 #include <casacore/tables/DataMan/StIndArray.h>
00036 #include <casacore/casa/Arrays/IPosition.h>
00037
00038 namespace casacore {
00039
00040
00041 class StManArrayFile;
00042 class AipsIO;
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 class SSMIndColumn : public SSMColumn
00094 {
00095 public:
00096
00097
00098 SSMIndColumn (SSMBase* aParent, int aDataType, uInt aColNr);
00099
00100
00101 ~SSMIndColumn();
00102
00103
00104
00105
00106 virtual void setMaxLength (uInt maxLength);
00107
00108
00109 virtual Bool canAccessSlice (Bool& reask) const;
00110
00111
00112 virtual void addRow (uInt aNewNrRows, uInt anOldNrRows, Bool doInit);
00113
00114
00115 virtual void setShapeColumn (const IPosition& aShape);
00116
00117
00118 virtual uInt ndim (uInt aRowNr);
00119
00120
00121
00122 void setShape (uInt aRowNr, const IPosition& aShape);
00123
00124
00125 virtual Bool isShapeDefined (uInt aRowNr);
00126
00127
00128 virtual IPosition shape (uInt aRowNr);
00129
00130
00131 Bool canChangeShape() const;
00132
00133
00134
00135
00136
00137 virtual void getArrayBoolV (uInt aRowNr, Array<Bool>* aDataPtr);
00138 virtual void getArrayuCharV (uInt aRowNr, Array<uChar>* aDataPtr);
00139 virtual void getArrayShortV (uInt aRowNr, Array<Short>* aDataPtr);
00140 virtual void getArrayuShortV (uInt aRowNr, Array<uShort>* aDataPtr);
00141 virtual void getArrayIntV (uInt aRowNr, Array<Int>* aDataPtr);
00142 virtual void getArrayuIntV (uInt aRowNr, Array<uInt>* aDataPtr);
00143 virtual void getArrayfloatV (uInt aRowNr, Array<float>* aDataPtr);
00144 virtual void getArraydoubleV (uInt aRowNr, Array<double>* aDataPtr);
00145 virtual void getArrayComplexV (uInt aRowNr, Array<Complex>* aDataPtr);
00146 virtual void getArrayDComplexV (uInt aRowNr, Array<DComplex>* aDataPtr);
00147 virtual void getArrayStringV (uInt aRowNr, Array<String>* aDataPtr);
00148
00149
00150
00151
00152
00153
00154 virtual void putArrayBoolV (uInt aRowNr,
00155 const Array<Bool>* aDataPtr);
00156 virtual void putArrayuCharV (uInt aRowNr,
00157 const Array<uChar>* aDataPtr);
00158 virtual void putArrayShortV (uInt aRowNr,
00159 const Array<Short>* aDataPtr);
00160 virtual void putArrayuShortV (uInt aRowNr,
00161 const Array<uShort>* aDataPtr);
00162 virtual void putArrayIntV (uInt aRowNr,
00163 const Array<Int>* aDataPtr);
00164 virtual void putArrayuIntV (uInt aRowNr,
00165 const Array<uInt>* aDataPtr);
00166 virtual void putArrayfloatV (uInt aRowNr,
00167 const Array<float>* aDataPtr);
00168 virtual void putArraydoubleV (uInt aRowNr,
00169 const Array<double>* aDataPtr);
00170 virtual void putArrayComplexV (uInt aRowNr,
00171 const Array<Complex>* aDataPtr);
00172 virtual void putArrayDComplexV (uInt aRowNr,
00173 const Array<DComplex>* aDataPtr);
00174 virtual void putArrayStringV (uInt aRowNr,
00175 const Array<String>* aDataPtr);
00176
00177
00178
00179
00180
00181
00182 virtual void getSliceBoolV (uInt aRowNr, const Slicer&,
00183 Array<Bool>* aDataPtr);
00184 virtual void getSliceuCharV (uInt aRowNr, const Slicer&,
00185 Array<uChar>* aDataPtr);
00186 virtual void getSliceShortV (uInt aRowNr, const Slicer&,
00187 Array<Short>* aDataPtr);
00188 virtual void getSliceuShortV (uInt aRowNr, const Slicer&,
00189 Array<uShort>* aDataPtr);
00190 virtual void getSliceIntV (uInt aRowNr, const Slicer&,
00191 Array<Int>* aDataPtr);
00192 virtual void getSliceuIntV (uInt aRowNr, const Slicer&,
00193 Array<uInt>* aDataPtr);
00194 virtual void getSlicefloatV (uInt aRowNr, const Slicer&,
00195 Array<float>* aDataPtr);
00196 virtual void getSlicedoubleV (uInt aRowNr, const Slicer&,
00197 Array<double>* aDataPtr);
00198 virtual void getSliceComplexV (uInt aRowNr, const Slicer&,
00199 Array<Complex>* aDataPtr);
00200 virtual void getSliceDComplexV (uInt aRowNr, const Slicer&,
00201 Array<DComplex>* aDataPtr);
00202 virtual void getSliceStringV (uInt aRowNr, const Slicer&,
00203 Array<String>* aDataPtr);
00204
00205
00206
00207
00208
00209
00210 virtual void putSliceBoolV (uInt aRowNr, const Slicer&,
00211 const Array<Bool>* aDataPtr);
00212 virtual void putSliceuCharV (uInt aRowNr, const Slicer&,
00213 const Array<uChar>* aDataPtr);
00214 virtual void putSliceShortV (uInt aRowNr, const Slicer&,
00215 const Array<Short>* aDataPtr);
00216 virtual void putSliceuShortV (uInt aRowNr, const Slicer&,
00217 const Array<uShort>* aDataPtr);
00218 virtual void putSliceIntV (uInt aRowNr, const Slicer&,
00219 const Array<Int>* aDataPtr);
00220 virtual void putSliceuIntV (uInt aRowNr, const Slicer&,
00221 const Array<uInt>* aDataPtr);
00222 virtual void putSlicefloatV (uInt aRowNr, const Slicer&,
00223 const Array<float>* aDataPtr);
00224 virtual void putSlicedoubleV (uInt aRowNr, const Slicer&,
00225 const Array<double>* aDataPtr);
00226 virtual void putSliceComplexV (uInt aRowNr, const Slicer&,
00227 const Array<Complex>* aDataPtr);
00228 virtual void putSliceDComplexV (uInt aRowNr, const Slicer&,
00229 const Array<DComplex>* aDataPtr);
00230 virtual void putSliceStringV (uInt aRowNr, const Slicer&,
00231 const Array<String>* aDataPtr);
00232
00233
00234
00235 virtual void doCreate (uInt aNrRows);
00236
00237
00238 virtual void getFile (uInt aNrRows);
00239
00240
00241 virtual void deleteRow(uInt aRowNr);
00242
00243
00244 private:
00245
00246 SSMIndColumn (const SSMIndColumn&);
00247
00248
00249 SSMIndColumn& operator= (const SSMIndColumn&);
00250
00251
00252
00253 void init();
00254
00255
00256
00257
00258 StIndArray* getShape (uInt aRowNr);
00259
00260
00261 StIndArray* getArrayPtr (uInt aRowNr);
00262
00263
00264
00265 IPosition itsFixedShape;
00266
00267 Bool isShapeFixed;
00268
00269 StManArrayFile* itsIosFile;
00270
00271 StIndArray itsIndArray;
00272 };
00273
00274
00275
00276 }
00277
00278 #endif