casacore
Adios2StManColumn.h
Go to the documentation of this file.
1 //# Adios2StManColumn.h: A Column in the ADIOS2 Storage Manager
2 //# Copyright (C) 2018
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //# $Id$
27 
28 #ifndef ADIOS2STMANCOLUMN_H
29 #define ADIOS2STMANCOLUMN_H
30 
31 #include <unordered_map>
32 #include <casacore/casa/Arrays/Array.h>
33 #include <casacore/tables/DataMan/StManColumn.h>
34 #include <casacore/tables/Tables/RefRows.h>
35 
36 #include "Adios2StManImpl.h"
37 
38 
39 namespace casacore
40 {
41 
43 {
44 public:
45  Adios2StManColumn(Adios2StMan::impl *aParent, int aDataType, String aColName, std::shared_ptr<adios2::IO> aAdiosIO);
46 
47  virtual Bool canAccessSlice (Bool& reask) const { reask = false; return true; };
48  virtual Bool canAccessColumnSlice (Bool& reask) const { reask = false; return true; };
49 
50  virtual void create(std::shared_ptr<adios2::Engine> aAdiosEngine,
51  char aOpenMode) = 0;
52  virtual void setShapeColumn(const IPosition &aShape);
53  virtual IPosition shape(uInt aRowNr);
54  Bool canChangeShape() const;
55  void setShape (uInt aRowNr, const IPosition& aShape);
56 
57  int getDataTypeSize();
58  int getDataType();
60 
61  virtual void putScalarV(uInt aRowNr, const void *aDataPtr) = 0;
62  virtual void getScalarV(uInt aRowNr, void *aDataPtr) = 0;
63  virtual void getScalarColumnCellsV(const RefRows &rownrs, void *dataPtr) = 0;
64  virtual void putScalarColumnCellsV(const RefRows &rownrs, const void *dataPtr) = 0;
65 
66  virtual void putBoolV(uInt aRowNr, const Bool *aDataPtr);
67  virtual void putuCharV(uInt aRowNr, const uChar *aDataPtr);
68  virtual void putShortV(uInt aRowNr, const Short *aDataPtr);
69  virtual void putuShortV(uInt aRowNr, const uShort *aDataPtr);
70  virtual void putIntV(uInt aRowNr, const Int *aDataPtr);
71  virtual void putuIntV(uInt aRowNr, const uInt *aDataPtr);
72  virtual void putInt64V(uInt aRowNr, const Int64 *aDataPtr);
73  virtual void putfloatV(uInt aRowNr, const Float *aDataPtr);
74  virtual void putdoubleV(uInt aRowNr, const Double *aDataPtr);
75  virtual void putComplexV(uInt aRowNr, const Complex *aDataPtr);
76  virtual void putDComplexV(uInt aRowNr, const DComplex *aDataPtr);
77  virtual void putStringV(uInt aRowNr, const String *aDataPtr);
78 
79  virtual void getBoolV(uInt aRowNr, Bool *aDataPtr);
80  virtual void getuCharV(uInt aRowNr, uChar *aDataPtr);
81  virtual void getShortV(uInt aRowNr, Short *aDataPtr);
82  virtual void getuShortV(uInt aRowNr, uShort *aDataPtr);
83  virtual void getIntV(uInt aRowNr, Int *aDataPtr);
84  virtual void getuIntV(uInt aRowNr, uInt *aDataPtr);
85  virtual void getInt64V(uInt aRowNr, Int64 *aDataPtr);
86  virtual void getfloatV(uInt aRowNr, Float *aDataPtr);
87  virtual void getdoubleV(uInt aRowNr, Double *aDataPtr);
88  virtual void getComplexV(uInt aRowNr, Complex *aDataPtr);
89  virtual void getDComplexV(uInt aRowNr, DComplex *aDataPtr);
90  virtual void getStringV(uInt aRowNr, String *aDataPtr);
91 
92  virtual void getScalarColumnCellsBoolV(const RefRows& rownrs, Vector<Bool>* dataPtr);
93  virtual void getScalarColumnCellsuCharV(const RefRows& rownrs, Vector<uChar>* dataPtr);
94  virtual void getScalarColumnCellsShortV(const RefRows& rownrs, Vector<Short>* dataPtr);
95  virtual void getScalarColumnCellsuShortV(const RefRows& rownrs, Vector<uShort>* dataPtr);
96  virtual void getScalarColumnCellsIntV(const RefRows& rownrs, Vector<Int>* dataPtr);
97  virtual void getScalarColumnCellsuIntV(const RefRows& rownrs, Vector<uInt>* dataPtr);
98  virtual void getScalarColumnCellsInt64V(const RefRows& rownrs, Vector<Int64>* dataPtr);
99  virtual void getScalarColumnCellsfloatV(const RefRows& rownrs, Vector<float>* dataPtr);
100  virtual void getScalarColumnCellsdoubleV(const RefRows& rownrs, Vector<double>* dataPtr);
101  virtual void getScalarColumnCellsComplexV(const RefRows& rownrs, Vector<Complex>* dataPtr);
102  virtual void getScalarColumnCellsDComplexV(const RefRows& rownrs, Vector<DComplex>* dataPtr);
103 
104  virtual void putScalarColumnCellsBoolV(const RefRows& rownrs, const Vector<Bool>* dataPtr);
105  virtual void putScalarColumnCellsuCharV(const RefRows& rownrs, const Vector<uChar>* dataPtr);
106  virtual void putScalarColumnCellsShortV(const RefRows& rownrs, const Vector<Short>* dataPtr);
107  virtual void putScalarColumnCellsuShortV(const RefRows& rownrs, const Vector<uShort>* dataPtr);
108  virtual void putScalarColumnCellsIntV(const RefRows& rownrs, const Vector<Int>* dataPtr);
109  virtual void putScalarColumnCellsuIntV(const RefRows& rownrs, const Vector<uInt>* dataPtr);
110  virtual void putScalarColumnCellsInt64V(const RefRows& rownrs, const Vector<Int64>* dataPtr);
111  virtual void putScalarColumnCellsfloatV(const RefRows& rownrs, const Vector<float>* dataPtr);
112  virtual void putScalarColumnCellsdoubleV(const RefRows& rownrs, const Vector<double>* dataPtr);
113  virtual void putScalarColumnCellsComplexV(const RefRows& rownrs, const Vector<Complex>* dataPtr);
114  virtual void putScalarColumnCellsDComplexV(const RefRows& rownrs, const Vector<DComplex>* dataPtr);
115 
116  virtual void putSliceBoolV(uInt rownr, const Slicer& ns, const Array<Bool>* dataPtr);
117  virtual void putSliceuCharV(uInt rownr, const Slicer& ns, const Array<uChar>* dataPtr);
118  virtual void putSliceShortV(uInt rownr, const Slicer& ns, const Array<Short>* dataPtr);
119  virtual void putSliceuShortV(uInt rownr, const Slicer& ns, const Array<uShort>* dataPtr);
120  virtual void putSliceIntV(uInt rownr, const Slicer& ns, const Array<Int>* dataPtr);
121  virtual void putSliceuIntV(uInt rownr, const Slicer& ns, const Array<uInt>* dataPtr);
122  virtual void putSlicefloatV(uInt rownr, const Slicer& ns, const Array<float>* dataPtr);
123  virtual void putSlicedoubleV(uInt rownr, const Slicer& ns, const Array<double>* dataPtr);
124  virtual void putSliceComplexV(uInt rownr, const Slicer& ns, const Array<Complex>* dataPtr);
125  virtual void putSliceDComplexV(uInt rownr, const Slicer& ns, const Array<DComplex>* dataPtr);
126  virtual void putSliceStringV(uInt rownr, const Slicer& ns, const Array<String>* dataPtr);
127 
128  virtual void getSliceBoolV(uInt rownr, const Slicer& ns, Array<Bool>* dataPtr);
129  virtual void getSliceuCharV(uInt rownr, const Slicer& ns, Array<uChar>* dataPtr);
130  virtual void getSliceShortV(uInt rownr, const Slicer& ns, Array<Short>* dataPtr);
131  virtual void getSliceuShortV(uInt rownr, const Slicer& ns, Array<uShort>* dataPtr);
132  virtual void getSliceIntV(uInt rownr, const Slicer& ns, Array<Int>* dataPtr);
133  virtual void getSliceuIntV(uInt rownr, const Slicer& ns, Array<uInt>* dataPtr);
134  virtual void getSlicefloatV(uInt rownr, const Slicer& ns, Array<float>* dataPtr);
135  virtual void getSlicedoubleV(uInt rownr, const Slicer& ns, Array<double>* dataPtr);
136  virtual void getSliceComplexV(uInt rownr, const Slicer& ns, Array<Complex>* dataPtr);
137  virtual void getSliceDComplexV(uInt rownr, const Slicer& ns, Array<DComplex>* dataPtr);
138  virtual void getSliceStringV(uInt rownr, const Slicer& ns, Array<String>* dataPtr);
139 
140 
141 protected:
142  void scalarVToSelection(uInt rownr);
143  void arrayVToSelection(uInt rownr);
144  void scalarColumnCellsVToSelection(const RefRows &rownrs);
145  void sliceVToSelection(uInt rownr, const Slicer &ns);
146  void columnSliceVToSelection(const Slicer &ns);
147  void columnSliceCellsVToSelection(const RefRows &rows, const Slicer &ns);
148  void columnSliceCellsVToSelection(uInt row_start, uInt row_end, const Slicer &ns);
149 
151 
154  std::unordered_map<uInt, IPosition> itsCasaShapes;
156 
157  std::shared_ptr<adios2::IO> itsAdiosIO;
158  std::shared_ptr<adios2::Engine> itsAdiosEngine;
159  std::string itsAdiosDataType;
161  adios2::Dims itsAdiosStart = {0};
162  adios2::Dims itsAdiosCount = {1};
163 }; // class Adios2StManColumn
164 
165 
166 template <class T>
168 {
169 public:
170 
172  Adios2StMan::impl *aParent,
173  int aDataType,
174  String aColName,
175  std::shared_ptr<adios2::IO> aAdiosIO)
176  : Adios2StManColumn(aParent, aDataType, aColName, aAdiosIO)
177  {
178  }
179 
180  void create(std::shared_ptr<adios2::Engine> aAdiosEngine, char aOpenMode)
181  {
182  itsAdiosEngine = aAdiosEngine;
183  itsAdiosVariable = itsAdiosIO->InquireVariable<T>(itsColumnName);
184  if (!itsAdiosVariable && aOpenMode == 'w')
185  {
186  itsAdiosVariable = itsAdiosIO->DefineVariable<T>(
190  itsAdiosCount);
191  }
192  }
193 
194  virtual void putArrayV(uInt rownr, const void *dataPtr)
195  {
196  arrayVToSelection(rownr);
197  toAdios(dataPtr);
198  }
199 
200  virtual void getArrayV(uInt rownr, void *dataPtr)
201  {
202  arrayVToSelection(rownr);
203  fromAdios(dataPtr);
204  }
205 
206  virtual void putScalarV(uInt rownr, const void *dataPtr)
207  {
208  scalarVToSelection(rownr);
209  toAdios(reinterpret_cast<const T *>(dataPtr));
210  }
211 
212  virtual void getScalarV(uInt aRowNr, void *data)
213  {
214  scalarVToSelection(aRowNr);
215  fromAdios(reinterpret_cast<T *>(data));
216  }
217 
218  virtual void getScalarColumnCellsV(const RefRows &rownrs, void *dataPtr)
219  {
221  fromAdios(dataPtr);
222  }
223 
224  virtual void putScalarColumnCellsV(const RefRows &rownrs, const void *dataPtr)
225  {
227  toAdios(dataPtr);
228  }
229 
230  virtual void putArrayColumnCellsV (const RefRows& rownrs, const void* dataPtr)
231  {
232  if(rownrs.isSliced())
233  {
234  rownrs.convert();
235  }
236  Bool deleteIt;
237  auto *arrayPtr = asArrayPtr(dataPtr);
238  const T *data = arrayPtr->getStorage(deleteIt);
239  itsAdiosCount[0] = 1;
240  for (size_t i = 1; i < itsAdiosShape.size(); ++i)
241  {
242  itsAdiosStart[i] = 0;
244  }
245  for(uInt i = 0; i < rownrs.rowVector().size(); ++i)
246  {
247  itsAdiosStart[0] = rownrs.rowVector()[i];
248  toAdios(data + i * itsCasaShape.nelements());
249  }
250  arrayPtr->freeStorage(data, deleteIt);
251  }
252 
253  virtual void getArrayColumnCellsV (const RefRows& rownrs, void* dataPtr)
254  {
255  if(rownrs.isSliced())
256  {
257  rownrs.convert();
258  }
259  Bool deleteIt;
260  auto *arrayPtr = asArrayPtr(dataPtr);
261  T *data = arrayPtr->getStorage(deleteIt);
262  itsAdiosCount[0] = 1;
263  for (size_t i = 1; i < itsAdiosShape.size(); ++i)
264  {
265  itsAdiosStart[i] = 0;
267  }
268  for(uInt i = 0; i < rownrs.rowVector().size(); ++i)
269  {
270  itsAdiosStart[0] = rownrs.rowVector()[i];
271  fromAdios(data + i * itsCasaShape.nelements());
272  }
273  arrayPtr->putStorage(data, deleteIt);
274  }
275 
276  virtual void getSliceV(uInt aRowNr, const Slicer &ns, void *dataPtr)
277  {
278  sliceVToSelection(aRowNr, ns);
279  fromAdios(dataPtr);
280  }
281 
282  virtual void putSliceV(uInt aRowNr, const Slicer &ns, const void *dataPtr)
283  {
284  sliceVToSelection(aRowNr, ns);
285  toAdios(dataPtr);
286  }
287 
288  virtual void getArrayColumnV(void *dataPtr)
289  {
290  for(auto &i:itsAdiosStart){
291  i=0;
292  }
293  fromAdios(dataPtr);
294  }
295 
296  virtual void putColumnSliceV(const Slicer &ns, const void *dataPtr)
297  {
299  toAdios(dataPtr);
300  }
301 
302  virtual void getColumnSliceV(const Slicer &ns, void *dataPtr)
303  {
305  fromAdios(dataPtr);
306  }
307 
308  virtual void getColumnSliceCellsV(const RefRows& rownrs,
309  const Slicer& slicer, void* dataPtr)
310  {
311  columnSliceCellsVToSelection(rownrs, slicer);
312  fromAdios(dataPtr);
313  }
314 
315  virtual void putColumnSliceCellsV (const RefRows& rownrs,
316  const Slicer& slicer, const void* dataPtr)
317  {
318  columnSliceCellsVToSelection(rownrs, slicer);
319  toAdios(dataPtr);
320  }
321 
322 private:
323  adios2::Variable<T> itsAdiosVariable;
324  const String itsStringArrayBarrier = "ADIOS2BARRIER";
325 
326  Array<T> *asArrayPtr(void *dataPtr) const
327  {
328  return reinterpret_cast<Array<T>*>(dataPtr);
329  }
330 
331  const Array<T> *asArrayPtr(const void *dataPtr) const
332  {
333  return reinterpret_cast<const Array<T>*>(dataPtr);
334  }
335 
336  void toAdios(const T *data)
337  {
339  itsAdiosEngine->Put<T>(itsAdiosVariable, data, adios2::Mode::Sync);
340  }
341 
342  void fromAdios(T *data)
343  {
345  itsAdiosEngine->Get<T>(itsAdiosVariable, data, adios2::Mode::Sync);
346  }
347 
348  void toAdios(const void *dataPtr)
349  {
350  Bool deleteIt;
351  auto *arrayPtr = asArrayPtr(dataPtr);
352  const T *data = arrayPtr->getStorage(deleteIt);
353  toAdios(data);
354  arrayPtr->freeStorage (data, deleteIt);
355  }
356 
357  void fromAdios(void *dataPtr)
358  {
359  Bool deleteIt;
360  auto *arrayPtr = asArrayPtr(dataPtr);
361  T *data = arrayPtr->getStorage(deleteIt);
362  fromAdios(data);
363  arrayPtr->putStorage(data, deleteIt);
364  }
365 
366 }; // class Adios2StManColumnT
367 
368 } // namespace casacore
369 
370 #endif // ADIOS2STMANCOLUMN_H
casacore::RefRows::rowVector
const Vector< uInt > & rowVector() const
Get the row vector as is (thus sliced if the object contains slices).
Definition: RefRows.h:142
casacore::Adios2StManColumn::getBoolV
virtual void getBoolV(uInt aRowNr, Bool *aDataPtr)
Get the scalar value in the given row.
casacore::Slicer
Specify which elements to extract from an n-dimensional array.
Definition: Slicer.h:289
casacore::Adios2StManColumn::getScalarColumnCellsdoubleV
virtual void getScalarColumnCellsdoubleV(const RefRows &rownrs, Vector< double > *dataPtr)
casacore::Adios2StManColumnT::getColumnSliceV
virtual void getColumnSliceV(const Slicer &ns, void *dataPtr)
Get a section of all arrays in the column.
Definition: Adios2StManColumn.h:302
casacore::Adios2StManColumn::getSlicefloatV
virtual void getSlicefloatV(uInt rownr, const Slicer &ns, Array< float > *dataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsuShortV
virtual void getScalarColumnCellsuShortV(const RefRows &rownrs, Vector< uShort > *dataPtr)
casacore::IPosition
A Vector of integers, for indexing into Array<T> objects.
Definition: IPosition.h:119
casacore::Adios2StManColumn::putBoolV
virtual void putBoolV(uInt aRowNr, const Bool *aDataPtr)
Put the scalar value into the given row.
casacore::Adios2StManColumn::getColumnName
String getColumnName()
casacore::RefRows::isSliced
Bool isSliced() const
Represents the vector a slice?
Definition: RefRows.h:136
casacore::Adios2StManColumn::itsAdiosStart
adios2::Dims itsAdiosStart
Definition: Adios2StManColumn.h:161
casacore::Adios2StManColumn::putSliceuIntV
virtual void putSliceuIntV(uInt rownr, const Slicer &ns, const Array< uInt > *dataPtr)
casacore::Adios2StManColumn::setShape
void setShape(uInt aRowNr, const IPosition &aShape)
Set the shape of an (variable-shaped) array in the given row.
casacore::Adios2StManColumn::getScalarColumnCellsV
virtual void getScalarColumnCellsV(const RefRows &rownrs, void *dataPtr)=0
Get some scalar values in the column.
casacore::Adios2StManColumn::isShapeFixed
Bool isShapeFixed
Definition: Adios2StManColumn.h:155
casacore::Adios2StManColumnT::asArrayPtr
const Array< T > * asArrayPtr(const void *dataPtr) const
Definition: Adios2StManColumn.h:331
casacore::Adios2StManColumn::Adios2StManColumn
Adios2StManColumn(Adios2StMan::impl *aParent, int aDataType, String aColName, std::shared_ptr< adios2::IO > aAdiosIO)
casacore::Adios2StManColumn::getSliceShortV
virtual void getSliceShortV(uInt rownr, const Slicer &ns, Array< Short > *dataPtr)
casacore::Adios2StManColumn::getSliceuShortV
virtual void getSliceuShortV(uInt rownr, const Slicer &ns, Array< uShort > *dataPtr)
casacore::Adios2StManColumn::columnSliceCellsVToSelection
void columnSliceCellsVToSelection(const RefRows &rows, const Slicer &ns)
casacore::Adios2StManColumn::getSliceDComplexV
virtual void getSliceDComplexV(uInt rownr, const Slicer &ns, Array< DComplex > *dataPtr)
Complexfwd_global_functions_Complexfwd::casacore::DComplex
std::complex< Double > DComplex
Definition: Complexfwd.h:50
casacore::Adios2StManColumn::canChangeShape
Bool canChangeShape() const
Can the data manager handle chaging the shape of an existing array? Default is no.
casacore::Adios2StManColumn::create
virtual void create(std::shared_ptr< adios2::Engine > aAdiosEngine, char aOpenMode)=0
casacore::Adios2StManColumn::putfloatV
virtual void putfloatV(uInt aRowNr, const Float *aDataPtr)
casacore::Adios2StManColumn::putScalarColumnCellsComplexV
virtual void putScalarColumnCellsComplexV(const RefRows &rownrs, const Vector< Complex > *dataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsuCharV
virtual void getScalarColumnCellsuCharV(const RefRows &rownrs, Vector< uChar > *dataPtr)
casacore::uChar
unsigned char uChar
Definition: aipstype.h:47
casacore::Adios2StManColumn::putScalarV
virtual void putScalarV(uInt aRowNr, const void *aDataPtr)=0
casacore::Adios2StManColumnT::create
void create(std::shared_ptr< adios2::Engine > aAdiosEngine, char aOpenMode)
Definition: Adios2StManColumn.h:180
casacore::Adios2StManColumnT::asArrayPtr
Array< T > * asArrayPtr(void *dataPtr) const
Definition: Adios2StManColumn.h:326
casacore::Adios2StManColumn::sliceVToSelection
void sliceVToSelection(uInt rownr, const Slicer &ns)
casacore::Adios2StManColumn::putScalarColumnCellsBoolV
virtual void putScalarColumnCellsBoolV(const RefRows &rownrs, const Vector< Bool > *dataPtr)
Put the scalar values into some cells of the column.
casacore::Adios2StManColumn::putScalarColumnCellsInt64V
virtual void putScalarColumnCellsInt64V(const RefRows &rownrs, const Vector< Int64 > *dataPtr)
casacore::Adios2StManColumn::putStringV
virtual void putStringV(uInt aRowNr, const String *aDataPtr)
casacore::Adios2StManColumn::setShapeColumn
virtual void setShapeColumn(const IPosition &aShape)
Set the shape of all (fixed-shaped) arrays in the column.
casacore::Adios2StManColumn::putSliceShortV
virtual void putSliceShortV(uInt rownr, const Slicer &ns, const Array< Short > *dataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsInt64V
virtual void getScalarColumnCellsInt64V(const RefRows &rownrs, Vector< Int64 > *dataPtr)
casacore::Adios2StManColumn::itsAdiosCount
adios2::Dims itsAdiosCount
Definition: Adios2StManColumn.h:162
casacore::Adios2StManColumn::getSliceComplexV
virtual void getSliceComplexV(uInt rownr, const Slicer &ns, Array< Complex > *dataPtr)
casacore::Adios2StManColumn::itsColumnName
String itsColumnName
Definition: Adios2StManColumn.h:152
casacore::Adios2StManColumnT::getSliceV
virtual void getSliceV(uInt aRowNr, const Slicer &ns, void *dataPtr)
Get a section of the array in the given row.
Definition: Adios2StManColumn.h:276
casacore::Adios2StManColumnT::getColumnSliceCellsV
virtual void getColumnSliceCellsV(const RefRows &rownrs, const Slicer &slicer, void *dataPtr)
Get a section of some arrays in the column.
Definition: Adios2StManColumn.h:308
casacore::Adios2StManColumnT::putScalarV
virtual void putScalarV(uInt rownr, const void *dataPtr)
Definition: Adios2StManColumn.h:206
casacore::Adios2StManColumn::putInt64V
virtual void putInt64V(uInt aRowNr, const Int64 *aDataPtr)
casacore::Adios2StManColumnT::getArrayColumnV
virtual void getArrayColumnV(void *dataPtr)
Get all array values in the column.
Definition: Adios2StManColumn.h:288
casacore::Adios2StManColumn::getInt64V
virtual void getInt64V(uInt aRowNr, Int64 *aDataPtr)
casacore::Adios2StManColumnT::itsStringArrayBarrier
const String itsStringArrayBarrier
Definition: Adios2StManColumn.h:324
casacore::Adios2StManColumn::getIntV
virtual void getIntV(uInt aRowNr, Int *aDataPtr)
casacore::Adios2StManColumn::putSliceIntV
virtual void putSliceIntV(uInt rownr, const Slicer &ns, const Array< Int > *dataPtr)
casacore::Adios2StManColumn::putSliceuShortV
virtual void putSliceuShortV(uInt rownr, const Slicer &ns, const Array< uShort > *dataPtr)
casacore::Adios2StManColumn::getuIntV
virtual void getuIntV(uInt aRowNr, uInt *aDataPtr)
casacore::RefRows::convert
Vector< uInt > convert(const Vector< uInt > &rootRownrs) const
Convert this object to a Vector<uInt> by applying the given row numbers.
casacore::Adios2StManColumn::getDComplexV
virtual void getDComplexV(uInt aRowNr, DComplex *aDataPtr)
casacore::StManColumn
Base table column storage manager class.
Definition: StManColumn.h:102
casacore::Adios2StManColumn::itsAdiosIO
std::shared_ptr< adios2::IO > itsAdiosIO
Definition: Adios2StManColumn.h:157
casacore::Adios2StManColumn::arrayVToSelection
void arrayVToSelection(uInt rownr)
casacore::Float
float Float
Definition: aipstype.h:54
casacore::Adios2StManColumnT::putColumnSliceCellsV
virtual void putColumnSliceCellsV(const RefRows &rownrs, const Slicer &slicer, const void *dataPtr)
Put into a section of some arrays in the column.
Definition: Adios2StManColumn.h:315
casacore::Adios2StManColumn::getScalarColumnCellsfloatV
virtual void getScalarColumnCellsfloatV(const RefRows &rownrs, Vector< float > *dataPtr)
casacore::uShort
unsigned short uShort
Definition: aipstype.h:49
casacore::Double
double Double
Definition: aipstype.h:55
casacore::ArrayBase::size
size_t size() const
Definition: ArrayBase.h:101
casacore::RefRows
Class holding the row numbers in a RefTable.
Definition: RefRows.h:85
Adios2StManImpl.h
casacore::Adios2StManColumn::getScalarColumnCellsBoolV
virtual void getScalarColumnCellsBoolV(const RefRows &rownrs, Vector< Bool > *dataPtr)
Get the scalar values in some cells of the column.
casacore::Adios2StManColumn::putSliceDComplexV
virtual void putSliceDComplexV(uInt rownr, const Slicer &ns, const Array< DComplex > *dataPtr)
casacore::max
LatticeExprNode max(const LatticeExprNode &left, const LatticeExprNode &right)
casacore::Adios2StManColumn::getdoubleV
virtual void getdoubleV(uInt aRowNr, Double *aDataPtr)
casacore::uInt
unsigned int uInt
Definition: aipstype.h:51
casacore::Adios2StManColumn::getScalarColumnCellsShortV
virtual void getScalarColumnCellsShortV(const RefRows &rownrs, Vector< Short > *dataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsDComplexV
virtual void getScalarColumnCellsDComplexV(const RefRows &rownrs, Vector< DComplex > *dataPtr)
casacore::Adios2StManColumn::itsCasaShapes
std::unordered_map< uInt, IPosition > itsCasaShapes
Definition: Adios2StManColumn.h:154
casacore::Adios2StManColumnT::putSliceV
virtual void putSliceV(uInt aRowNr, const Slicer &ns, const void *dataPtr)
Put into a section of the array in the given row.
Definition: Adios2StManColumn.h:282
casacore::Adios2StManColumn::getDataType
int getDataType()
casacore::Adios2StManColumn::getSliceuCharV
virtual void getSliceuCharV(uInt rownr, const Slicer &ns, Array< uChar > *dataPtr)
casacore::Adios2StManColumnT::putScalarColumnCellsV
virtual void putScalarColumnCellsV(const RefRows &rownrs, const void *dataPtr)
Put some scalar values in the column.
Definition: Adios2StManColumn.h:224
casacore::Adios2StManColumn
Definition: Adios2StManColumn.h:42
casacore::Adios2StManColumn::putScalarColumnCellsuCharV
virtual void putScalarColumnCellsuCharV(const RefRows &rownrs, const Vector< uChar > *dataPtr)
casacore::Adios2StManColumn::scalarColumnCellsVToSelection
void scalarColumnCellsVToSelection(const RefRows &rownrs)
casacore::Adios2StManColumn::getScalarColumnCellsuIntV
virtual void getScalarColumnCellsuIntV(const RefRows &rownrs, Vector< uInt > *dataPtr)
casacore::Adios2StManColumn::shape
virtual IPosition shape(uInt aRowNr)
Get the shape of the item in the given row.
casacore::Adios2StManColumn::getShortV
virtual void getShortV(uInt aRowNr, Short *aDataPtr)
casacore::Adios2StManColumn::getSlicedoubleV
virtual void getSlicedoubleV(uInt rownr, const Slicer &ns, Array< double > *dataPtr)
casacore::Adios2StManColumn::putScalarColumnCellsDComplexV
virtual void putScalarColumnCellsDComplexV(const RefRows &rownrs, const Vector< DComplex > *dataPtr)
casacore::Adios2StManColumnT::getScalarV
virtual void getScalarV(uInt aRowNr, void *data)
Definition: Adios2StManColumn.h:212
casacore::Int
int Int
Definition: aipstype.h:50
casacore
this file contains all the compiler specific defines
Definition: mainpage.dox:28
casacore::Adios2StManColumn::getComplexV
virtual void getComplexV(uInt aRowNr, Complex *aDataPtr)
casacore::Adios2StManColumn::canAccessSlice
virtual Bool canAccessSlice(Bool &reask) const
Can the column data manager handle access to a cell slice? If not, the caller should do slicing itsel...
Definition: Adios2StManColumn.h:47
casacore::Adios2StManColumn::putDComplexV
virtual void putDComplexV(uInt aRowNr, const DComplex *aDataPtr)
casacore::Adios2StManColumn::getScalarV
virtual void getScalarV(uInt aRowNr, void *aDataPtr)=0
casacore::Adios2StManColumnT::itsAdiosVariable
adios2::Variable< T > itsAdiosVariable
Definition: Adios2StManColumn.h:323
casacore::IPosition::nelements
uInt nelements() const
The number of elements in this IPosition.
Definition: IPosition.h:544
casacore::Adios2StManColumn::getfloatV
virtual void getfloatV(uInt aRowNr, Float *aDataPtr)
casacore::Adios2StManColumn::putScalarColumnCellsuIntV
virtual void putScalarColumnCellsuIntV(const RefRows &rownrs, const Vector< uInt > *dataPtr)
casacore::Adios2StManColumn::getSliceIntV
virtual void getSliceIntV(uInt rownr, const Slicer &ns, Array< Int > *dataPtr)
casacore::Adios2StManColumn::putShortV
virtual void putShortV(uInt aRowNr, const Short *aDataPtr)
casacore::Adios2StManColumn::putScalarColumnCellsuShortV
virtual void putScalarColumnCellsuShortV(const RefRows &rownrs, const Vector< uShort > *dataPtr)
casacore::Adios2StManColumn::itsAdiosDataType
std::string itsAdiosDataType
Definition: Adios2StManColumn.h:159
casacore::Adios2StManColumnT
Definition: Adios2StManColumn.h:167
casacore::Adios2StManColumn::getuCharV
virtual void getuCharV(uInt aRowNr, uChar *aDataPtr)
casacore::Adios2StManColumnT::getArrayColumnCellsV
virtual void getArrayColumnCellsV(const RefRows &rownrs, void *dataPtr)
Get some array values in the column.
Definition: Adios2StManColumn.h:253
casacore::Adios2StManColumn::itsCasaShape
IPosition itsCasaShape
Definition: Adios2StManColumn.h:153
casacore::Adios2StManColumn::columnSliceVToSelection
void columnSliceVToSelection(const Slicer &ns)
casacore::Adios2StManColumn::putIntV
virtual void putIntV(uInt aRowNr, const Int *aDataPtr)
casacore::Adios2StManColumn::getuShortV
virtual void getuShortV(uInt aRowNr, uShort *aDataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsComplexV
virtual void getScalarColumnCellsComplexV(const RefRows &rownrs, Vector< Complex > *dataPtr)
casacore::Int64
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
Definition: aipsxtype.h:38
casacore::Adios2StManColumnT::getScalarColumnCellsV
virtual void getScalarColumnCellsV(const RefRows &rownrs, void *dataPtr)
Get some scalar values in the column.
Definition: Adios2StManColumn.h:218
casacore::Adios2StManColumn::canAccessColumnSlice
virtual Bool canAccessColumnSlice(Bool &reask) const
Can the column data manager handle access to a column slice? If not, the caller should access the col...
Definition: Adios2StManColumn.h:48
casacore::Adios2StManColumnT::toAdios
void toAdios(const T *data)
Definition: Adios2StManColumn.h:336
casacore::Array< Bool >
casacore::Adios2StManColumn::putuIntV
virtual void putuIntV(uInt aRowNr, const uInt *aDataPtr)
casacore::Adios2StManColumn::getStringV
virtual void getStringV(uInt aRowNr, String *aDataPtr)
casacore::Adios2StManColumn::getSliceuIntV
virtual void getSliceuIntV(uInt rownr, const Slicer &ns, Array< uInt > *dataPtr)
casacore::String
String: the storage and methods of handling collections of characters.
Definition: String.h:223
casacore::Adios2StManColumnT::fromAdios
void fromAdios(void *dataPtr)
Definition: Adios2StManColumn.h:357
casacore::Adios2StManColumn::putScalarColumnCellsShortV
virtual void putScalarColumnCellsShortV(const RefRows &rownrs, const Vector< Short > *dataPtr)
casacore::Adios2StManColumnT::fromAdios
void fromAdios(T *data)
Definition: Adios2StManColumn.h:342
casacore::Adios2StManColumn::getSliceStringV
virtual void getSliceStringV(uInt rownr, const Slicer &ns, Array< String > *dataPtr)
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
Complexfwd_global_functions_Complexfwd::casacore::Complex
std::complex< Float > Complex
Definition: Complexfwd.h:49
casacore::Adios2StManColumn::getSliceBoolV
virtual void getSliceBoolV(uInt rownr, const Slicer &ns, Array< Bool > *dataPtr)
Get the array value in the given row.
casacore::Adios2StManColumn::putSliceComplexV
virtual void putSliceComplexV(uInt rownr, const Slicer &ns, const Array< Complex > *dataPtr)
casacore::Adios2StManColumn::putSliceStringV
virtual void putSliceStringV(uInt rownr, const Slicer &ns, const Array< String > *dataPtr)
casacore::Adios2StManColumn::putSliceuCharV
virtual void putSliceuCharV(uInt rownr, const Slicer &ns, const Array< uChar > *dataPtr)
casacore::Adios2StManColumn::scalarVToSelection
void scalarVToSelection(uInt rownr)
casacore::Adios2StManColumn::putuShortV
virtual void putuShortV(uInt aRowNr, const uShort *aDataPtr)
casacore::Short
short Short
Definition: aipstype.h:48
casacore::Adios2StManColumn::putuCharV
virtual void putuCharV(uInt aRowNr, const uChar *aDataPtr)
casacore::Adios2StManColumnT::toAdios
void toAdios(const void *dataPtr)
Definition: Adios2StManColumn.h:348
casacore::Adios2StManColumn::putScalarColumnCellsdoubleV
virtual void putScalarColumnCellsdoubleV(const RefRows &rownrs, const Vector< double > *dataPtr)
casacore::Vector< Bool >
casacore::Adios2StManColumn::putComplexV
virtual void putComplexV(uInt aRowNr, const Complex *aDataPtr)
casacore::Adios2StManColumn::putdoubleV
virtual void putdoubleV(uInt aRowNr, const Double *aDataPtr)
casacore::Adios2StManColumn::itsStManPtr
Adios2StMan::impl * itsStManPtr
Definition: Adios2StManColumn.h:150
casacore::Adios2StMan::impl
Definition: Adios2StManImpl.h:41
casacore::Adios2StManColumn::itsAdiosShape
adios2::Dims itsAdiosShape
Definition: Adios2StManColumn.h:160
casacore::Adios2StManColumnT::putArrayColumnCellsV
virtual void putArrayColumnCellsV(const RefRows &rownrs, const void *dataPtr)
Put some array values in the column.
Definition: Adios2StManColumn.h:230
casacore::Adios2StManColumn::putSliceBoolV
virtual void putSliceBoolV(uInt rownr, const Slicer &ns, const Array< Bool > *dataPtr)
Put the array value into the given row.
casacore::Adios2StManColumnT::putArrayV
virtual void putArrayV(uInt rownr, const void *dataPtr)
Put the array value into the given row.
Definition: Adios2StManColumn.h:194
casacore::Adios2StManColumnT::Adios2StManColumnT
Adios2StManColumnT(Adios2StMan::impl *aParent, int aDataType, String aColName, std::shared_ptr< adios2::IO > aAdiosIO)
Definition: Adios2StManColumn.h:171
casacore::Adios2StManColumn::putScalarColumnCellsIntV
virtual void putScalarColumnCellsIntV(const RefRows &rownrs, const Vector< Int > *dataPtr)
casacore::Adios2StManColumnT::putColumnSliceV
virtual void putColumnSliceV(const Slicer &ns, const void *dataPtr)
Put into a section of all arrays in the column.
Definition: Adios2StManColumn.h:296
casacore::Adios2StManColumn::putSlicefloatV
virtual void putSlicefloatV(uInt rownr, const Slicer &ns, const Array< float > *dataPtr)
casacore::Adios2StManColumn::itsAdiosEngine
std::shared_ptr< adios2::Engine > itsAdiosEngine
Definition: Adios2StManColumn.h:158
casacore::Adios2StManColumn::putScalarColumnCellsfloatV
virtual void putScalarColumnCellsfloatV(const RefRows &rownrs, const Vector< float > *dataPtr)
casacore::Adios2StManColumn::getScalarColumnCellsIntV
virtual void getScalarColumnCellsIntV(const RefRows &rownrs, Vector< Int > *dataPtr)
casacore::Adios2StManColumn::putSlicedoubleV
virtual void putSlicedoubleV(uInt rownr, const Slicer &ns, const Array< double > *dataPtr)
casacore::Adios2StManColumn::putScalarColumnCellsV
virtual void putScalarColumnCellsV(const RefRows &rownrs, const void *dataPtr)=0
Put some scalar values in the column.
casacore::Adios2StManColumn::getDataTypeSize
int getDataTypeSize()
casacore::Adios2StManColumnT::getArrayV
virtual void getArrayV(uInt rownr, void *dataPtr)
Get the array value in the given row.
Definition: Adios2StManColumn.h:200