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_MSMCOLUMN_H
00029 #define TABLES_MSMCOLUMN_H
00030
00031
00032
00033 #include <casacore/casa/aips.h>
00034 #include <casacore/tables/DataMan/DataManager.h>
00035 #include <casacore/tables/DataMan/StManColumn.h>
00036 #include <casacore/casa/Containers/Block.h>
00037 #include <casacore/casa/BasicSL/Complex.h>
00038 #include <casacore/casa/Arrays/IPosition.h>
00039 #include <casacore/casa/BasicSL/String.h>
00040
00041 namespace casacore {
00042
00043
00044 class MSMBase;
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
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 class MSMColumn: public StManColumn
00105 {
00106 public:
00107
00108
00109 MSMColumn (MSMBase* smptr, int dataType, Bool byPtr);
00110
00111
00112 virtual ~MSMColumn();
00113
00114
00115
00116
00117
00118 void getBoolV (uInt rownr, Bool* dataPtr);
00119 void getuCharV (uInt rownr, uChar* dataPtr);
00120 void getShortV (uInt rownr, Short* dataPtr);
00121 void getuShortV (uInt rownr, uShort* dataPtr);
00122 void getIntV (uInt rownr, Int* dataPtr);
00123 void getuIntV (uInt rownr, uInt* dataPtr);
00124 void getfloatV (uInt rownr, float* dataPtr);
00125 void getdoubleV (uInt rownr, double* dataPtr);
00126 void getComplexV (uInt rownr, Complex* dataPtr);
00127 void getDComplexV (uInt rownr, DComplex* dataPtr);
00128 void getStringV (uInt rownr, String* dataPtr);
00129
00130
00131
00132
00133
00134
00135 void putBoolV (uInt rownr, const Bool* dataPtr);
00136 void putuCharV (uInt rownr, const uChar* dataPtr);
00137 void putShortV (uInt rownr, const Short* dataPtr);
00138 void putuShortV (uInt rownr, const uShort* dataPtr);
00139 void putIntV (uInt rownr, const Int* dataPtr);
00140 void putuIntV (uInt rownr, const uInt* dataPtr);
00141 void putfloatV (uInt rownr, const float* dataPtr);
00142 void putdoubleV (uInt rownr, const double* dataPtr);
00143 void putComplexV (uInt rownr, const Complex* dataPtr);
00144 void putDComplexV (uInt rownr, const DComplex* dataPtr);
00145 void putStringV (uInt rownr, const String* dataPtr);
00146
00147
00148
00149
00150
00151
00152
00153
00154 uInt getBlockBoolV (uInt rownr, uInt nrmax, Bool* dataPtr);
00155 uInt getBlockuCharV (uInt rownr, uInt nrmax, uChar* dataPtr);
00156 uInt getBlockShortV (uInt rownr, uInt nrmax, Short* dataPtr);
00157 uInt getBlockuShortV (uInt rownr, uInt nrmax, uShort* dataPtr);
00158 uInt getBlockIntV (uInt rownr, uInt nrmax, Int* dataPtr);
00159 uInt getBlockuIntV (uInt rownr, uInt nrmax, uInt* dataPtr);
00160 uInt getBlockfloatV (uInt rownr, uInt nrmax, float* dataPtr);
00161 uInt getBlockdoubleV (uInt rownr, uInt nrmax, double* dataPtr);
00162 uInt getBlockComplexV (uInt rownr, uInt nrmax, Complex* dataPtr);
00163 uInt getBlockDComplexV (uInt rownr, uInt nrmax, DComplex* dataPtr);
00164 uInt getBlockStringV (uInt rownr, uInt nrmax, String* dataPtr);
00165
00166
00167
00168
00169
00170
00171
00172
00173 void putBlockBoolV (uInt rownr, uInt nrmax, const Bool* dataPtr);
00174 void putBlockuCharV (uInt rownr, uInt nrmax, const uChar* dataPtr);
00175 void putBlockShortV (uInt rownr, uInt nrmax, const Short* dataPtr);
00176 void putBlockuShortV (uInt rownr, uInt nrmax, const uShort* dataPtr);
00177 void putBlockIntV (uInt rownr, uInt nrmax, const Int* dataPtr);
00178 void putBlockuIntV (uInt rownr, uInt nrmax, const uInt* dataPtr);
00179 void putBlockfloatV (uInt rownr, uInt nrmax, const float* dataPtr);
00180 void putBlockdoubleV (uInt rownr, uInt nrmax, const double* dataPtr);
00181 void putBlockComplexV (uInt rownr, uInt nrmax, const Complex* dataPtr);
00182 void putBlockDComplexV (uInt rownr, uInt nrmax, const DComplex* dataPtr);
00183 void putBlockStringV (uInt rownr, uInt nrmax, const String* dataPtr);
00184
00185
00186
00187
00188
00189
00190
00191 virtual void getScalarColumnCellsBoolV (const RefRows& rownrs,
00192 Vector<Bool>* dataPtr);
00193 virtual void getScalarColumnCellsuCharV (const RefRows& rownrs,
00194 Vector<uChar>* dataPtr);
00195 virtual void getScalarColumnCellsShortV (const RefRows& rownrs,
00196 Vector<Short>* dataPtr);
00197 virtual void getScalarColumnCellsuShortV (const RefRows& rownrs,
00198 Vector<uShort>* dataPtr);
00199 virtual void getScalarColumnCellsIntV (const RefRows& rownrs,
00200 Vector<Int>* dataPtr);
00201 virtual void getScalarColumnCellsuIntV (const RefRows& rownrs,
00202 Vector<uInt>* dataPtr);
00203 virtual void getScalarColumnCellsfloatV (const RefRows& rownrs,
00204 Vector<float>* dataPtr);
00205 virtual void getScalarColumnCellsdoubleV (const RefRows& rownrs,
00206 Vector<double>* dataPtr);
00207 virtual void getScalarColumnCellsComplexV (const RefRows& rownrs,
00208 Vector<Complex>* dataPtr);
00209 virtual void getScalarColumnCellsDComplexV (const RefRows& rownrs,
00210 Vector<DComplex>* dataPtr);
00211 virtual void getScalarColumnCellsStringV (const RefRows& rownrs,
00212 Vector<String>* dataPtr);
00213
00214
00215
00216 virtual void addRow (uInt newNrrow, uInt oldNrrow);
00217
00218
00219
00220 void resize (uInt nrval);
00221
00222
00223
00224 virtual void remove (uInt rownr);
00225
00226
00227
00228 virtual void doCreate (uInt nrrow);
00229
00230
00231 virtual Bool ok() const;
00232
00233 protected:
00234 MSMBase* stmanPtr_p;
00235
00236 int dtype_p;
00237
00238 Bool byPtr_p;
00239
00240 uInt nralloc_p;
00241
00242 uInt nrext_p;
00243
00244 Block<void*> data_p;
00245
00246 Block<uInt> ncum_p;
00247
00248
00249
00250 uInt findExt (uInt rownr, Bool setCache);
00251
00252
00253
00254
00255
00256 uInt nextExt (void*& ext, uInt& extnr, uInt nrmax) const;
00257
00258
00259 void* allocData (uInt nrval, Bool byPtr);
00260
00261
00262
00263
00264 void deleteAll();
00265
00266
00267 void deleteData (void* datap, Bool byPtr);
00268
00269
00270
00271
00272 void removeData (void* datap, uInt inx, uInt nrvalAfter);
00273
00274
00275 void initData (void* datap, uInt nrval);
00276
00277
00278
00279 void* getArrayPtr (uInt rownr);
00280
00281
00282
00283 void putArrayPtr (uInt rownr, void* dataPtr);
00284
00285 private:
00286
00287 MSMColumn (const MSMColumn&);
00288
00289
00290 MSMColumn& operator= (const MSMColumn&);
00291 };
00292
00293
00294
00295 }
00296
00297 #endif