SSMColumn.h
Go to the documentation of this file.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_SSMCOLUMN_H
00029 #define TABLES_SSMCOLUMN_H
00030
00031
00032
00033 #include <casacore/casa/aips.h>
00034 #include <casacore/tables/DataMan/StManColumn.h>
00035 #include <casacore/tables/DataMan/SSMBase.h>
00036 #include <casacore/casa/Arrays/IPosition.h>
00037 #include <casacore/casa/Containers/Block.h>
00038 #include <casacore/casa/OS/Conversion.h>
00039
00040 namespace casacore {
00041
00042
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
00094
00095
00096
00097
00098
00099 class SSMColumn : public StManColumn
00100 {
00101 public:
00102
00103
00104
00105 SSMColumn (SSMBase* aParent, int aDataType, uInt aColNr);
00106
00107 virtual ~SSMColumn();
00108
00109
00110
00111
00112 virtual void setShapeColumn (const IPosition& aShape);
00113
00114
00115
00116
00117 virtual void setMaxLength (uInt maxLength);
00118
00119
00120 virtual uInt ndim (uInt aRowNr);
00121
00122
00123 virtual IPosition shape (uInt aRowNr);
00124
00125
00126
00127 virtual void doCreate (uInt aNrRows);
00128
00129
00130 virtual void getFile (uInt aNrRows);
00131
00132
00133
00134 void resync (uInt aNrRow);
00135
00136
00137
00138 virtual void getBoolV (uInt aRowNr, Bool* aDataPtr);
00139 virtual void getuCharV (uInt aRowNr, uChar* aDataPtr);
00140 virtual void getShortV (uInt aRowNr, Short* aDataPtr);
00141 virtual void getuShortV (uInt aRowNr, uShort* aDataPtr);
00142 virtual void getIntV (uInt aRowNr, Int* aDataPtr);
00143 virtual void getuIntV (uInt aRowNr, uInt* aDataPtr);
00144 virtual void getfloatV (uInt aRowNr, float* aDataPtr);
00145 virtual void getdoubleV (uInt aRowNr, double* aDataPtr);
00146 virtual void getComplexV (uInt aRowNr, Complex* aDataPtr);
00147 virtual void getDComplexV (uInt aRowNr, DComplex* aDataPtr);
00148 virtual void getStringV (uInt aRowNr, String* aDataPtr);
00149
00150
00151
00152
00153
00154 virtual void putBoolV (uInt aRowNr, const Bool* aDataPtr);
00155 virtual void putuCharV (uInt aRowNr, const uChar* aDataPtr);
00156 virtual void putShortV (uInt aRowNr, const Short* aDataPtr);
00157 virtual void putuShortV (uInt aRowNr, const uShort* aDataPtr);
00158 virtual void putIntV (uInt aRowNr, const Int* aDataPtr);
00159 virtual void putuIntV (uInt aRowNr, const uInt* aDataPtr);
00160 virtual void putfloatV (uInt aRowNr, const float* aDataPtr);
00161 virtual void putdoubleV (uInt aRowNr, const double* aDataPtr);
00162 virtual void putComplexV (uInt aRowNr, const Complex* aDataPtr);
00163 virtual void putDComplexV (uInt aRowNr, const DComplex* aDataPtr);
00164 virtual void putStringV (uInt aRowNr, const String* aDataPtr);
00165
00166
00167
00168
00169 virtual void getScalarColumnBoolV (Vector<Bool>* aDataPtr);
00170 virtual void getScalarColumnuCharV (Vector<uChar>* aDataPtr);
00171 virtual void getScalarColumnShortV (Vector<Short>* aDataPtr);
00172 virtual void getScalarColumnuShortV (Vector<uShort>* aDataPtr);
00173 virtual void getScalarColumnIntV (Vector<Int>* aDataPtr);
00174 virtual void getScalarColumnuIntV (Vector<uInt>* aDataPtr);
00175 virtual void getScalarColumnfloatV (Vector<float>* aDataPtr);
00176 virtual void getScalarColumndoubleV (Vector<double>* aDataPtr);
00177 virtual void getScalarColumnComplexV (Vector<Complex>* aDataPtr);
00178 virtual void getScalarColumnDComplexV (Vector<DComplex>* aDataPtr);
00179 virtual void getScalarColumnStringV (Vector<String>* aDataPtr);
00180
00181
00182
00183
00184
00185 virtual void putScalarColumnBoolV (const Vector<Bool>* aDataPtr);
00186 virtual void putScalarColumnuCharV (const Vector<uChar>* aDataPtr);
00187 virtual void putScalarColumnShortV (const Vector<Short>* aDataPtr);
00188 virtual void putScalarColumnuShortV (const Vector<uShort>* aDataPtr);
00189 virtual void putScalarColumnIntV (const Vector<Int>* aDataPtr);
00190 virtual void putScalarColumnuIntV (const Vector<uInt>* aDataPtr);
00191 virtual void putScalarColumnfloatV (const Vector<float>* aDataPtr);
00192 virtual void putScalarColumndoubleV (const Vector<double>* aDataPtr);
00193 virtual void putScalarColumnComplexV (const Vector<Complex>* aDataPtr);
00194 virtual void putScalarColumnDComplexV (const Vector<DComplex>* aDataPtr);
00195 virtual void putScalarColumnStringV (const Vector<String>* aDataPtr);
00196
00197
00198
00199
00200 virtual void addRow (uInt aNewNrRows, uInt anOldNrRows, Bool doInit);
00201
00202
00203
00204 virtual void deleteRow (uInt aRowNr);
00205
00206
00207 uInt getExternalSizeBytes() const;
00208
00209
00210 uInt getExternalSizeBits() const;
00211
00212
00213 uInt getColNr();
00214
00215
00216 void setColNr (uInt aColNr);
00217
00218
00219
00220 void removeColumn();
00221
00222 protected:
00223
00224 void shiftRows (char* aValue, uInt rowNr, uInt startRow, uInt endRow);
00225
00226
00227 void getValue (uInt aRowNr);
00228
00229
00230
00231
00232
00233 Char* getRowValue (Int* data, uInt aRowNr);
00234
00235
00236 void putValue (uInt aRowNr, const void* aValue);
00237
00238
00239
00240
00241 void putValueShortString (uInt aRowNr, const void* aValue,
00242 const String& string);
00243
00244
00245
00246 void getColumnValue (void* anArray, uInt aNrRows);
00247
00248
00249
00250 void putColumnValue (const void* anArray, uInt aNrRows);
00251
00252
00253
00254 SSMBase* itsSSMPtr;
00255
00256 uInt itsExternalSizeBytes;
00257 uInt itsExternalSizeBits;
00258
00259 uInt itsColNr;
00260
00261 IPosition itsShape;
00262
00263 uInt itsMaxLen;
00264
00265 uInt itsNrElem;
00266
00267
00268
00269 uInt itsNrCopy;
00270
00271 uInt itsLocalSize;
00272
00273 void* itsData;
00274
00275 Conversion::ValueFunction* itsWriteFunc;
00276
00277 Conversion::ValueFunction* itsReadFunc;
00278
00279 private:
00280
00281 SSMColumn (const SSMColumn&);
00282
00283
00284 SSMColumn& operator= (const SSMColumn&);
00285
00286
00287
00288
00289 void init();
00290
00291
00292 char* getDataPtr();
00293 };
00294
00295
00296 inline uInt SSMColumn::getExternalSizeBytes() const
00297 {
00298 return itsExternalSizeBytes;
00299 }
00300
00301 inline uInt SSMColumn::getExternalSizeBits() const
00302 {
00303 return itsExternalSizeBits;
00304 }
00305
00306 inline char* SSMColumn::getDataPtr()
00307 {
00308 if (itsData == 0) {
00309 itsData = new char[itsSSMPtr->getRowsPerBucket(itsColNr) * itsLocalSize];
00310 }
00311 return static_cast<char*>(itsData);
00312 }
00313
00314 inline uInt SSMColumn::getColNr()
00315 {
00316 return itsColNr;
00317 }
00318
00319 inline void SSMColumn::setColNr (uInt aColNr)
00320 {
00321 itsColNr = aColNr;
00322 }
00323
00324
00325
00326 }
00327
00328 #endif