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 <numeric>
33 #include <casacore/casa/Arrays/Array.h>
34 #include <casacore/tables/DataMan/StManColumn.h>
35 #include <casacore/tables/Tables/RefRows.h>
36 
37 #include "Adios2StManImpl.h"
38 
39 
40 namespace casacore
41 {
42 
44 {
45 public:
47  int aDataType,
48  String aColName,
49  std::shared_ptr<adios2::IO> aAdiosIO);
50 
51  virtual Bool canAccessSlice (Bool& reask) const { reask = false; return true; };
52  virtual Bool canAccessColumnSlice (Bool& reask) const { reask = false; return true; };
53 
54  virtual void create(std::shared_ptr<adios2::Engine> aAdiosEngine,
55  char aOpenMode, size_t aReaderCacheRows) = 0;
56  virtual void setShapeColumn(const IPosition &aShape);
57  virtual IPosition shape(uInt aRowNr);
58  Bool canChangeShape() const;
59  void setShape (uInt aRowNr, const IPosition& aShape);
60 
61  int getDataTypeSize();
62  int getDataType();
64 
65  virtual void putScalarV(uInt aRowNr, const void *aDataPtr) = 0;
66  virtual void getScalarV(uInt aRowNr, void *aDataPtr) = 0;
67 
68  virtual void putBoolV(uInt aRowNr, const Bool *aDataPtr);
69  virtual void putuCharV(uInt aRowNr, const uChar *aDataPtr);
70  virtual void putShortV(uInt aRowNr, const Short *aDataPtr);
71  virtual void putuShortV(uInt aRowNr, const uShort *aDataPtr);
72  virtual void putIntV(uInt aRowNr, const Int *aDataPtr);
73  virtual void putuIntV(uInt aRowNr, const uInt *aDataPtr);
74  virtual void putInt64V(uInt aRowNr, const Int64 *aDataPtr);
75  virtual void putfloatV(uInt aRowNr, const Float *aDataPtr);
76  virtual void putdoubleV(uInt aRowNr, const Double *aDataPtr);
77  virtual void putComplexV(uInt aRowNr, const Complex *aDataPtr);
78  virtual void putDComplexV(uInt aRowNr, const DComplex *aDataPtr);
79  virtual void putStringV(uInt aRowNr, const String *aDataPtr);
80 
81  virtual void getBoolV(uInt aRowNr, Bool *aDataPtr);
82  virtual void getuCharV(uInt aRowNr, uChar *aDataPtr);
83  virtual void getShortV(uInt aRowNr, Short *aDataPtr);
84  virtual void getuShortV(uInt aRowNr, uShort *aDataPtr);
85  virtual void getIntV(uInt aRowNr, Int *aDataPtr);
86  virtual void getuIntV(uInt aRowNr, uInt *aDataPtr);
87  virtual void getInt64V(uInt aRowNr, Int64 *aDataPtr);
88  virtual void getfloatV(uInt aRowNr, Float *aDataPtr);
89  virtual void getdoubleV(uInt aRowNr, Double *aDataPtr);
90  virtual void getComplexV(uInt aRowNr, Complex *aDataPtr);
91  virtual void getDComplexV(uInt aRowNr, DComplex *aDataPtr);
92  virtual void getStringV(uInt aRowNr, String *aDataPtr);
93 
94  virtual void putSliceBoolV(uInt rownr, const Slicer& ns, const Array<Bool>* dataPtr);
95  virtual void putSliceuCharV(uInt rownr, const Slicer& ns, const Array<uChar>* dataPtr);
96  virtual void putSliceShortV(uInt rownr, const Slicer& ns, const Array<Short>* dataPtr);
97  virtual void putSliceuShortV(uInt rownr, const Slicer& ns, const Array<uShort>* dataPtr);
98  virtual void putSliceIntV(uInt rownr, const Slicer& ns, const Array<Int>* dataPtr);
99  virtual void putSliceuIntV(uInt rownr, const Slicer& ns, const Array<uInt>* dataPtr);
100  virtual void putSlicefloatV(uInt rownr, const Slicer& ns, const Array<float>* dataPtr);
101  virtual void putSlicedoubleV(uInt rownr, const Slicer& ns, const Array<double>* dataPtr);
102  virtual void putSliceComplexV(uInt rownr, const Slicer& ns, const Array<Complex>* dataPtr);
103  virtual void putSliceDComplexV(uInt rownr, const Slicer& ns, const Array<DComplex>* dataPtr);
104  virtual void putSliceStringV(uInt rownr, const Slicer& ns, const Array<String>* dataPtr);
105 
106  virtual void getSliceBoolV(uInt rownr, const Slicer& ns, Array<Bool>* dataPtr);
107  virtual void getSliceuCharV(uInt rownr, const Slicer& ns, Array<uChar>* dataPtr);
108  virtual void getSliceShortV(uInt rownr, const Slicer& ns, Array<Short>* dataPtr);
109  virtual void getSliceuShortV(uInt rownr, const Slicer& ns, Array<uShort>* dataPtr);
110  virtual void getSliceIntV(uInt rownr, const Slicer& ns, Array<Int>* dataPtr);
111  virtual void getSliceuIntV(uInt rownr, const Slicer& ns, Array<uInt>* dataPtr);
112  virtual void getSlicefloatV(uInt rownr, const Slicer& ns, Array<float>* dataPtr);
113  virtual void getSlicedoubleV(uInt rownr, const Slicer& ns, Array<double>* dataPtr);
114  virtual void getSliceComplexV(uInt rownr, const Slicer& ns, Array<Complex>* dataPtr);
115  virtual void getSliceDComplexV(uInt rownr, const Slicer& ns, Array<DComplex>* dataPtr);
116  virtual void getSliceStringV(uInt rownr, const Slicer& ns, Array<String>* dataPtr);
117 
118 
119 protected:
120  void scalarVToSelection(uInt rownr);
121  void arrayVToSelection(uInt rownr);
122  void sliceVToSelection(uInt rownr, const Slicer &ns);
123  void columnSliceVToSelection(const Slicer &ns);
124  void columnSliceCellsVToSelection(const RefRows &rows, const Slicer &ns);
125  void columnSliceCellsVToSelection(uInt row_start, uInt row_end, const Slicer &ns);
126 
128 
131  std::unordered_map<uInt, IPosition> itsCasaShapes;
133 
134  std::shared_ptr<adios2::IO> itsAdiosIO;
135  std::shared_ptr<adios2::Engine> itsAdiosEngine;
137  std::string itsAdiosDataType;
139  adios2::Dims itsAdiosStart = {0};
140  adios2::Dims itsAdiosCount = {1};
141 }; // class Adios2StManColumn
142 
143 
144 template <class T>
146 {
147 public:
148 
150  Adios2StMan::impl *aParent,
151  int aDataType,
152  String aColName,
153  std::shared_ptr<adios2::IO> aAdiosIO)
154  : Adios2StManColumn(aParent, aDataType, aColName, aAdiosIO)
155  {
156  }
157 
158  void create(std::shared_ptr<adios2::Engine> aAdiosEngine, char aOpenMode, size_t aReaderCacheRows)
159  {
160  itsAdiosEngine = aAdiosEngine;
161  itsAdiosOpenMode = aOpenMode;
162  itsReadCacheMaxRows = aReaderCacheRows;
163  itsAdiosVariable = itsAdiosIO->InquireVariable<T>(itsColumnName);
164  if(aOpenMode == 'r')
165  {
166  size_t cacheSize = std::accumulate(
167  itsAdiosShape.begin() + 1,
168  itsAdiosShape.end(),
170  std::multiplies<size_t>());
171  itsReadCache.resize(cacheSize);
172  }
173  itsArraySize = std::accumulate(
174  itsAdiosShape.begin() + 1,
175  itsAdiosShape.end(),
176  1,
177  std::multiplies<size_t>());
178  }
179 
180  virtual void putArrayV(uInt rownr, const void *dataPtr)
181  {
182  arrayVToSelection(rownr);
183  toAdios(dataPtr);
184  }
185 
186  virtual void getArrayV(uInt rownr, void *dataPtr)
187  {
188  arrayVToSelection(rownr);
189  if(itsReadCacheMaxRows > 0)
190  {
192  {
195  fromAdios(itsReadCache.data());
196  }
197  Bool deleteIt;
198  auto *arrayPtr = asArrayPtr(dataPtr);
199  T *data = arrayPtr->getStorage(deleteIt);
200  size_t index = itsArraySize * (itsAdiosStart[0] - itsReadCacheStartRow);
201  size_t length = sizeof(T) * itsArraySize;
202  std::memcpy(data, itsReadCache.data() + index, length);
203  arrayPtr->putStorage(data, deleteIt);
204  }
205  else
206  {
207  fromAdios(dataPtr);
208  }
209  }
210 
211  virtual void putScalarV(uInt rownr, const void *dataPtr)
212  {
213  scalarVToSelection(rownr);
214  toAdios(reinterpret_cast<const T *>(dataPtr));
215  }
216 
217  virtual void getScalarV(uInt aRowNr, void *data)
218  {
219  scalarVToSelection(aRowNr);
220  fromAdios(reinterpret_cast<T *>(data));
221  }
222 
223  virtual void putArrayColumnCellsV (const RefRows& rownrs, const void* dataPtr)
224  {
225  if(rownrs.isSliced())
226  {
227  rownrs.convert();
228  }
229  Bool deleteIt;
230  auto *arrayPtr = asArrayPtr(dataPtr);
231  const T *data = arrayPtr->getStorage(deleteIt);
232  itsAdiosCount[0] = 1;
233  for (size_t i = 1; i < itsAdiosShape.size(); ++i)
234  {
235  itsAdiosStart[i] = 0;
237  }
238  for(uInt i = 0; i < rownrs.rowVector().size(); ++i)
239  {
240  itsAdiosStart[0] = rownrs.rowVector()[i];
241  toAdios(data + i * itsCasaShape.nelements());
242  }
243  arrayPtr->freeStorage(data, deleteIt);
244  }
245 
246  virtual void getArrayColumnCellsV (const RefRows& rownrs, void* dataPtr)
247  {
248  if(rownrs.isSliced())
249  {
250  rownrs.convert();
251  }
252  Bool deleteIt;
253  auto *arrayPtr = asArrayPtr(dataPtr);
254  T *data = arrayPtr->getStorage(deleteIt);
255  itsAdiosCount[0] = 1;
256  for (size_t i = 1; i < itsAdiosShape.size(); ++i)
257  {
258  itsAdiosStart[i] = 0;
260  }
261  for(uInt i = 0; i < rownrs.rowVector().size(); ++i)
262  {
263  itsAdiosStart[0] = rownrs.rowVector()[i];
264  fromAdios(data + i * itsCasaShape.nelements());
265  }
266  arrayPtr->putStorage(data, deleteIt);
267  }
268 
269  virtual void getSliceV(uInt aRowNr, const Slicer &ns, void *dataPtr)
270  {
271  sliceVToSelection(aRowNr, ns);
272  fromAdios(dataPtr);
273  }
274 
275  virtual void putSliceV(uInt aRowNr, const Slicer &ns, const void *dataPtr)
276  {
277  sliceVToSelection(aRowNr, ns);
278  toAdios(dataPtr);
279  }
280 
281  virtual void getArrayColumnV(void *dataPtr)
282  {
283  for(auto &i:itsAdiosStart){
284  i=0;
285  }
286  fromAdios(dataPtr);
287  }
288 
289  virtual void putColumnSliceV(const Slicer &ns, const void *dataPtr)
290  {
292  toAdios(dataPtr);
293  }
294 
295  virtual void getColumnSliceV(const Slicer &ns, void *dataPtr)
296  {
298  fromAdios(dataPtr);
299  }
300 
301  virtual void getColumnSliceCellsV(const RefRows& rownrs,
302  const Slicer& slicer, void* dataPtr)
303  {
304  columnSliceCellsVToSelection(rownrs, slicer);
305  fromAdios(dataPtr);
306  }
307 
308  virtual void putColumnSliceCellsV (const RefRows& rownrs,
309  const Slicer& slicer, const void* dataPtr)
310  {
311  columnSliceCellsVToSelection(rownrs, slicer);
312  toAdios(dataPtr);
313  }
314 
315 private:
316  const String itsStringArrayBarrier = "ADIOS2BARRIER";
317  adios2::Variable<T> itsAdiosVariable;
319  size_t itsReadCacheRows = 0;
321  size_t itsArraySize;
322  std::vector<T> itsReadCache;
323 
324  Array<T> *asArrayPtr(void *dataPtr) const
325  {
326  return reinterpret_cast<Array<T>*>(dataPtr);
327  }
328 
329  const Array<T> *asArrayPtr(const void *dataPtr) const
330  {
331  return reinterpret_cast<const Array<T>*>(dataPtr);
332  }
333 
334  void toAdios(const T *data)
335  {
336  if (!itsAdiosVariable)
337  {
338  itsAdiosVariable = itsAdiosIO->DefineVariable<T>(
342  itsAdiosCount);
343  }
344  else
345  {
347  }
348  itsAdiosEngine->Put<T>(itsAdiosVariable, data, adios2::Mode::Sync);
349  }
350 
351  void fromAdios(T *data)
352  {
354  itsAdiosEngine->Get<T>(itsAdiosVariable, data, adios2::Mode::Sync);
355  }
356 
357  void toAdios(const void *dataPtr)
358  {
359  Bool deleteIt;
360  auto *arrayPtr = asArrayPtr(dataPtr);
361  const T *data = arrayPtr->getStorage(deleteIt);
362  toAdios(data);
363  arrayPtr->freeStorage (data, deleteIt);
364  }
365 
366  void fromAdios(void *dataPtr)
367  {
368  Bool deleteIt;
369  auto *arrayPtr = asArrayPtr(dataPtr);
370  T *data = arrayPtr->getStorage(deleteIt);
371  fromAdios(data);
372  arrayPtr->putStorage(data, deleteIt);
373  }
374 
375 }; // class Adios2StManColumnT
376 
377 } // namespace casacore
378 
379 #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::Adios2StManColumnT::getColumnSliceV
virtual void getColumnSliceV(const Slicer &ns, void *dataPtr)
Get a section of all arrays in the column.
Definition: Adios2StManColumn.h:295
casacore::Adios2StManColumn::getSlicefloatV
virtual void getSlicefloatV(uInt rownr, const Slicer &ns, Array< float > *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::Adios2StManColumnT::itsReadCacheStartRow
size_t itsReadCacheStartRow
Definition: Adios2StManColumn.h:318
casacore::RefRows::isSliced
Bool isSliced() const
Represents the vector a slice?
Definition: RefRows.h:136
casacore::Adios2StManColumn::itsAdiosStart
adios2::Dims itsAdiosStart
Definition: Adios2StManColumn.h:139
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::isShapeFixed
Bool isShapeFixed
Definition: Adios2StManColumn.h:132
casacore::Adios2StManColumnT::asArrayPtr
const Array< T > * asArrayPtr(const void *dataPtr) const
Definition: Adios2StManColumn.h:329
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, size_t aReaderCacheRows)=0
casacore::Adios2StManColumn::putfloatV
virtual void putfloatV(uInt aRowNr, const Float *aDataPtr)
casacore::uChar
unsigned char uChar
Definition: aipstype.h:47
casacore::Adios2StManColumn::putScalarV
virtual void putScalarV(uInt aRowNr, const void *aDataPtr)=0
casacore::Adios2StManColumnT::asArrayPtr
Array< T > * asArrayPtr(void *dataPtr) const
Definition: Adios2StManColumn.h:324
casacore::Adios2StManColumn::sliceVToSelection
void sliceVToSelection(uInt rownr, const Slicer &ns)
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::itsAdiosCount
adios2::Dims itsAdiosCount
Definition: Adios2StManColumn.h:140
casacore::Adios2StManColumn::getSliceComplexV
virtual void getSliceComplexV(uInt rownr, const Slicer &ns, Array< Complex > *dataPtr)
casacore::Adios2StManColumn::itsColumnName
String itsColumnName
Definition: Adios2StManColumn.h:129
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:269
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:301
casacore::Adios2StManColumnT::putScalarV
virtual void putScalarV(uInt rownr, const void *dataPtr)
Definition: Adios2StManColumn.h:211
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:281
casacore::Adios2StManColumn::getInt64V
virtual void getInt64V(uInt aRowNr, Int64 *aDataPtr)
casacore::Adios2StManColumnT::itsStringArrayBarrier
const String itsStringArrayBarrier
Definition: Adios2StManColumn.h:316
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::Adios2StManColumnT::itsReadCacheMaxRows
size_t itsReadCacheMaxRows
Definition: Adios2StManColumn.h:320
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:134
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:308
casacore::uShort
unsigned short uShort
Definition: aipstype.h:49
casacore::Double
double Double
Definition: aipstype.h:55
casacore::RefRows
Class holding the row numbers in a RefTable.
Definition: RefRows.h:85
Adios2StManImpl.h
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::Adios2StManColumnT::itsArraySize
size_t itsArraySize
Definition: Adios2StManColumn.h:321
casacore::Adios2StManColumn::itsCasaShapes
std::unordered_map< uInt, IPosition > itsCasaShapes
Definition: Adios2StManColumn.h:131
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:275
casacore::Adios2StManColumn::getDataType
int getDataType()
casacore::Adios2StManColumn::getSliceuCharV
virtual void getSliceuCharV(uInt rownr, const Slicer &ns, Array< uChar > *dataPtr)
casacore::Adios2StManColumn
Definition: Adios2StManColumn.h:43
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::Adios2StManColumnT::getScalarV
virtual void getScalarV(uInt aRowNr, void *data)
Definition: Adios2StManColumn.h:217
casacore::Int
int Int
Definition: aipstype.h:50
casacore
this file contains all the compiler specific defines
Definition: mainpage.dox:28
casacore::Adios2StManColumnT::create
void create(std::shared_ptr< adios2::Engine > aAdiosEngine, char aOpenMode, size_t aReaderCacheRows)
Definition: Adios2StManColumn.h:158
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:51
casacore::Adios2StManColumn::putDComplexV
virtual void putDComplexV(uInt aRowNr, const DComplex *aDataPtr)
casacore::Adios2StManColumn::getScalarV
virtual void getScalarV(uInt aRowNr, void *aDataPtr)=0
casacore::length
LatticeExprNode length(const LatticeExprNode &expr, const LatticeExprNode &axis)
2-argument function to get the length of an axis.
casacore::Adios2StManColumnT::itsAdiosVariable
adios2::Variable< T > itsAdiosVariable
Definition: Adios2StManColumn.h:317
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::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::itsAdiosDataType
std::string itsAdiosDataType
Definition: Adios2StManColumn.h:137
casacore::Adios2StManColumnT::itsReadCache
std::vector< T > itsReadCache
Definition: Adios2StManColumn.h:322
casacore::Adios2StManColumnT
Definition: Adios2StManColumn.h:145
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:246
casacore::Adios2StManColumn::itsCasaShape
IPosition itsCasaShape
Definition: Adios2StManColumn.h:130
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::Int64
long long Int64
Define the extra non-standard types used by Casacore (like proposed uSize, Size)
Definition: aipsxtype.h:38
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:52
casacore::Adios2StManColumnT::toAdios
void toAdios(const T *data)
Definition: Adios2StManColumn.h:334
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:366
casacore::Adios2StManColumnT::fromAdios
void fromAdios(T *data)
Definition: Adios2StManColumn.h:351
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::itsAdiosOpenMode
char itsAdiosOpenMode
Definition: Adios2StManColumn.h:136
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:357
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:127
casacore::Adios2StMan::impl
Definition: Adios2StManImpl.h:41
casacore::Adios2StManColumnT::itsReadCacheRows
size_t itsReadCacheRows
Definition: Adios2StManColumn.h:319
casacore::Adios2StManColumn::itsAdiosShape
adios2::Dims itsAdiosShape
Definition: Adios2StManColumn.h:138
casacore::Adios2StManColumnT::putArrayColumnCellsV
virtual void putArrayColumnCellsV(const RefRows &rownrs, const void *dataPtr)
Put some array values in the column.
Definition: Adios2StManColumn.h:223
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:180
casacore::Adios2StManColumnT::Adios2StManColumnT
Adios2StManColumnT(Adios2StMan::impl *aParent, int aDataType, String aColName, std::shared_ptr< adios2::IO > aAdiosIO)
Definition: Adios2StManColumn.h:149
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:289
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:135
casacore::Adios2StManColumn::putSlicedoubleV
virtual void putSlicedoubleV(uInt rownr, const Slicer &ns, const Array< double > *dataPtr)
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:186