SENSEI
A frame work for generic in situ analytics
svtkHAMRDataArrayImpl.h
1 #ifndef svtkHAMRDataArrayImpl_h
2 #define svtkHAMRDataArrayImpl_h
3 
4 #include <svtkCallbackCommand.h>
5 #include <svtkCommand.h>
6 
7 /** Delete callback. In order to safely zero-copy data from a svtkHAMRDataArray
8  * into a svtkAOSDataArrayTemplate the svtkAOSDataArrayTemplate needs to hold a
9  * reference to svtkHAMRDataArray. This reference can be released when the
10  * svtkAOSDataArrayTemplate is deleted. We will register this callback for the
11  * delete event with SVTK. The clinet data will the the svtkHAMRDataArray
12  * instance.
13  */
14 static inline
15 void svtkHAMRDataArrayDelete(svtkObject *, unsigned long, void *clientData, void *)
16 {
17  svtkObject *heldRef = (svtkObject*)clientData;
18  heldRef->Delete();
19 }
20 
21 
22 
23 
24 // --------------------------------------------------------------------------
25 template<typename T>
27 {
28 }
29 
30 // --------------------------------------------------------------------------
31 template<typename T>
33 {
34  delete this->Data;
35 }
36 
37 // --------------------------------------------------------------------------
38 template<typename T>
40 {
41  return new svtkHAMRDataArray<T>;
42 }
43 
44 // --------------------------------------------------------------------------
45 template<typename T>
47 {
48  return svtkHAMRDataArray<T>::New(da, svtkAllocator::malloc,
49  svtkStream(), svtkStreamMode::sync_host);
50 }
51 
52 // --------------------------------------------------------------------------
53 template<typename T>
55  svtkAllocator alloc, svtkStream stream, svtkStreamMode streamMode)
56 {
57  if (!da)
58  {
59  std::cerr << __FILE__ << ":" << __LINE__ << std::endl
60  << "ERROR: Can't copy construct a nullptr" << std::endl;
61  return nullptr;
62  }
63 
64  long numTups = da->GetNumberOfTuples();
65  long numComps = da->GetNumberOfComponents();
66  const char *name = da->GetName();
67 
68  switch (da->GetDataType())
69  {
70  svtkTemplateMacro(
71  if (dynamic_cast<svtkHAMRDataArray<SVTK_TT>*>(da))
72  {
73  auto tDa = static_cast<svtkHAMRDataArray<SVTK_TT>*>(da);
74 
76 
77  inst->Data = new hamr::buffer<T>(alloc, stream, streamMode, *tDa->Data);
78  inst->MaxId = numTups - 1;
79  inst->NumberOfComponents = numComps;
80  inst->SetName(name);
81 
82  return inst;
83  }
84  else if (dynamic_cast<svtkAOSDataArrayTemplate<SVTK_TT>*>(da))
85  {
86  auto tDa = static_cast<svtkAOSDataArrayTemplate<SVTK_TT>*>(da);
87 
89 
90  inst->Data = new hamr::buffer<T>(alloc, stream, streamMode, numTups*numComps);
91  inst->Data->set(0, tDa->GetPointer(0), 0, numTups);
92  inst->MaxId = numTups - 1;
93  inst->NumberOfComponents = numComps;
94  inst->SetName(name);
95 
96  return inst;
97  }
98  );
99  default:
100  {
101  std::cerr << __FILE__ << ":" << __LINE__ << std::endl
102  << "ERROR: Unsupported array type " << da->GetClassName() << std::endl;
103  }
104  }
105  return nullptr;
106 }
107 
108 // --------------------------------------------------------------------------
109 template<typename T>
111  size_t numTuples, int numComps, svtkAllocator alloc, svtkStream stream,
112  svtkStreamMode streamMode)
113 {
114  assert(numComps > 0);
115 
117  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode, numTuples*numComps);
118  tmp->MaxId = numTuples - 1;
119  tmp->NumberOfComponents = numComps;
120  tmp->SetName(name.c_str());
121 
122  return tmp;
123 }
124 
125 // --------------------------------------------------------------------------
126 template<typename T>
128  size_t numTuples, int numComps, svtkAllocator alloc, svtkStream stream,
129  svtkStreamMode streamMode, const T &initVal)
130 {
131  assert(numComps > 0);
132 
134  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode, numTuples*numComps, initVal);
135  tmp->MaxId = numTuples - 1;
136  tmp->NumberOfComponents = numComps;
137  tmp->SetName(name.c_str());
138 
139  return tmp;
140 }
141 
142 // --------------------------------------------------------------------------
143 template<typename T>
144 svtkHAMRDataArray<T> *svtkHAMRDataArray<T>::New(const std::string &name, T *data,
145  size_t numTuples, int numComps, svtkAllocator alloc, svtkStream stream,
146  svtkStreamMode streamMode, int owner, int take)
147 {
148  assert(numComps > 0);
149 
151 
152  if (take)
153  {
154  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode,
155  numTuples*numComps, owner, data);
156  }
157  else
158  {
159  std::shared_ptr<T> dataPtr(data, [](void*){});
160 
161  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode,
162  numTuples*numComps, owner, dataPtr);
163  }
164 
165  tmp->MaxId = numTuples - 1;
166  tmp->NumberOfComponents = numComps;
167  tmp->SetName(name.c_str());
168 
169  return tmp;
170 }
171 
172 // --------------------------------------------------------------------------
173 template<typename T>
175  const std::shared_ptr<T> &data, size_t numTuples, int numComps,
176  svtkAllocator alloc, svtkStream stream, svtkStreamMode streamMode,
177  int owner)
178 {
179  assert(numComps > 0);
180 
182 
183  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode,
184  numTuples*numComps, owner, data);
185 
186  tmp->MaxId = numTuples - 1;
187  tmp->NumberOfComponents = numComps;
188  tmp->SetName(name.c_str());
189 
190  return tmp;
191 }
192 
193 // --------------------------------------------------------------------------
194 template<typename T>
195 template <typename deleter_t>
196 svtkHAMRDataArray<T> *svtkHAMRDataArray<T>::New(const std::string &name,
197  T *data, size_t numTuples, int numComps, svtkAllocator alloc,
198  svtkStream stream, svtkStreamMode streamMode, int owner, deleter_t deleter)
199 {
200  assert(numComps > 0);
201 
203 
204  tmp->Data = new hamr::buffer<T>(alloc, stream, streamMode,
205  numTuples*numComps, owner, data, deleter);
206 
207  tmp->MaxId = numTuples - 1;
208  tmp->SetNumberOfComponents(numComps);
209  tmp->SetName(name.c_str());
210 
211  return tmp;
212 }
213 
214 // --------------------------------------------------------------------------
215 template<typename T>
216 void svtkHAMRDataArray<T>::SetData(T *data, size_t numTuples,
217  int numComps, svtkAllocator alloc, svtkStream stream,
218  svtkStreamMode streamMode, int owner)
219 {
220  assert(numComps > 0);
221 
222  delete this->Data;
223 
224  this->Data = new hamr::buffer<T>(alloc, stream, streamMode,
225  numTuples*numComps, owner, data);
226 
227  this->MaxId = numTuples - 1;
228  this->NumberOfComponents = numComps;
229 }
230 
231 // --------------------------------------------------------------------------
232 template<typename T>
233 void svtkHAMRDataArray<T>::SetData(const std::shared_ptr<T> &data,
234  size_t numTuples, int numComps, svtkAllocator alloc, svtkStream stream,
235  svtkStreamMode streamMode, int owner)
236 {
237  assert(numComps > 0);
238 
239  delete this->Data;
240 
241  this->Data = new hamr::buffer<T>(alloc, stream, streamMode,
242  numTuples*numComps, owner, data);
243 
244  this->MaxId = numTuples - 1;
245  this->NumberOfComponents = numComps;
246 }
247 
248 // --------------------------------------------------------------------------
249 template<typename T>
250 template <typename deleter_t>
251 void svtkHAMRDataArray<T>::SetData(T *data, size_t numTuples, int numComps,
252  svtkAllocator alloc, svtkStream stream, svtkStreamMode streamMode,
253  int owner, deleter_t deleter)
254 {
255  assert(numComps > 0);
256 
257  delete this->Data;
258 
259  this->Data = new hamr::buffer<T>(alloc, stream, streamMode,
260  numTuples*numComps, owner, data, deleter);
261 
262  this->MaxId = numTuples - 1;
263  this->SetNumberOfComponents(numComps);
264 }
265 
266 // TODO - in the zero-copy case below the VTK array should hold a reference to this
267 #define AsSvtkDataArrayImpl(_cls_t, _cpp_t) \
268  if (std::is_same<_cls_t, _cpp_t>::value) \
269  { \
270  int nComps = this->GetNumberOfComponents(); \
271  size_t nTups = this->GetNumberOfTuples(); \
272  \
273  svtkAOSDataArrayTemplate<_cpp_t> *tmp = \
274  svtkAOSDataArrayTemplate<_cpp_t>::New(); \
275  \
276  tmp->SetNumberOfComponents(nComps); \
277  tmp->SetName(this->GetName()); \
278  \
279  if (this->Data->host_accessible()) \
280  { \
281  /* zero-copy from CPU to VTK */ \
282  tmp->SetVoidArray(this->Data->data(), nTups, 1, 0); \
283  } \
284  else \
285  { \
286  /* deep-copy from the GPU to VTK */ \
287  tmp->SetNumberOfTuples(nTups); \
288  T *ptr = (T*)tmp->GetVoidPointer(0); \
289  this->Data->get(0, ptr, 0, nTups*nComps); \
290  } \
291  \
292  return tmp; \
293  }
294 
295 // --------------------------------------------------------------------------
296 template<typename T>
297 svtkAOSDataArrayTemplate<T> *svtkHAMRDataArray<T>::AsSvtkAOSDataArray(int zeroCopy)
298 {
299  int nComps = this->GetNumberOfComponents();
300  size_t nTups = this->GetNumberOfTuples();
301 
302  svtkAOSDataArrayTemplate<T> *tmp =
303  svtkAOSDataArrayTemplate<T>::New();
304 
305  tmp->SetNumberOfComponents(nComps);
306  tmp->SetName(this->GetName());
307 
308  if (zeroCopy && this->Data->host_accessible())
309  {
310  // zero-copy from HAMR to VTK can only occur when data is accessible on the
311  // CPU since VTK arrays are CPU only
312  tmp->SetVoidArray(this->Data->data(), nTups, 1, 0);
313 
314  // hold a reference to the HAMR data array.
315  this->Register(nullptr);
316 
317  // register a callback to release the held reference when the SVTK array
318  // signals it is finished
319  svtkCallbackCommand *cc = svtkCallbackCommand::New();
320  cc->SetCallback(svtkHAMRDataArrayDelete);
321  cc->SetClientData(this);
322 
323  tmp->AddObserver(svtkCommand::DeleteEvent, cc);
324  cc->Delete();
325  }
326  else
327  {
328  // the data is not accessible on the CPU or a deep-copy weas requested
329  tmp->SetNumberOfTuples(nTups);
330  T *ptr = (T*)tmp->GetVoidPointer(0);
331  this->Data->get(0, ptr, 0, nTups*nComps);
332  }
333 
334  return tmp;
335 }
336 
337 // --------------------------------------------------------------------------
338 template<typename T>
339 svtkArrayIterator* svtkHAMRDataArray<T>::NewIterator()
340 {
341  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
342  abort();
343  return nullptr;
344 }
345 
346 // --------------------------------------------------------------------------
347 template<typename T>
349 {
350  if (std::is_same<T, double>::value)
351  {
352  return SVTK_DOUBLE;
353  }
354  else if (std::is_same<T, float>::value)
355  {
356  return SVTK_FLOAT;
357  }
358  else if (std::is_same<T, long long>::value)
359  {
360  return SVTK_LONG_LONG;
361  }
362  else if (std::is_same<T, long>::value)
363  {
364  return SVTK_LONG;
365  }
366  else if (std::is_same<T, int>::value)
367  {
368  return SVTK_INT;
369  }
370  else if (std::is_same<T, short>::value)
371  {
372  return SVTK_SHORT;
373  }
374  else if (std::is_same<T, char>::value)
375  {
376  return SVTK_CHAR;
377  }
378  else if (std::is_same<T, unsigned long long>::value)
379  {
380  return SVTK_UNSIGNED_LONG_LONG;
381  }
382  else if (std::is_same<T, unsigned long>::value)
383  {
384  return SVTK_UNSIGNED_LONG;
385  }
386  else if (std::is_same<T, unsigned int>::value)
387  {
388  return SVTK_UNSIGNED_INT;
389  }
390  else if (std::is_same<T, unsigned short>::value)
391  {
392  return SVTK_UNSIGNED_SHORT;
393  }
394  else if (std::is_same<T, unsigned char>::value)
395  {
396  return SVTK_UNSIGNED_CHAR;
397  }
398  else
399  {
400  svtkErrorMacro("No SVTK type for T");
401  abort();
402  return -1;
403  }
404 }
405 
406 // --------------------------------------------------------------------------
407 template<typename T>
409 {
410  return sizeof(T);
411 }
412 
413 /*
414 // --------------------------------------------------------------------------
415 template<typename T>
416 bool svtkHAMRDataArray<T>::HasStandardMemoryLayout() const
417 {
418  return false;
419 }
420 */
421 /*
422 // --------------------------------------------------------------------------
423 template<typename T>
424 svtkTypeBool svtkHAMRDataArray<T>::Allocate(svtkIdType size, svtkIdType ext)
425 {
426  (void) ext;
427  if (this->Data)
428  {
429  delete this->Data;
430  }
431 
432  this->Data = new hamr::buffer<T>(hamr::buffer_allocator::malloc, size);
433 
434  return true;
435 }
436 */
437 
438 // --------------------------------------------------------------------------
439 template<typename T>
440 svtkTypeBool svtkHAMRDataArray<T>::Resize(svtkIdType numTuples)
441 {
442  this->Data->resize(numTuples*this->NumberOfComponents);
443  return true;
444 }
445 
446 /*
447 // --------------------------------------------------------------------------
448 template<typename T>
449 void svtkHAMRDataArray<T>::SetNumberOfComponents(int numComps)
450 {
451  this->NumberOfComponents = numComps;
452 }
453 */
454 
455 // --------------------------------------------------------------------------
456 template<typename T>
457 void svtkHAMRDataArray<T>::SetNumberOfTuples(svtkIdType numTuples, svtkAllocator alloc)
458 {
459  if (!this->Data)
460  {
461  this->Data = new hamr::buffer<T>(alloc, numTuples*this->NumberOfComponents);
462  }
463  else
464  {
465  this->Data->move(alloc);
466  this->Data->resize(numTuples);
467  }
468 
469  this->MaxId = numTuples - 1;
470 }
471 
472 // --------------------------------------------------------------------------
473 template<typename T>
474 void svtkHAMRDataArray<T>::SetNumberOfTuples(svtkIdType numTuples)
475 {
476  this->SetNumberOfTuples(numTuples, hamr::buffer_allocator::malloc);
477 }
478 
479 
480 
481 
482 
483 
484 // --------------------------------------------------------------------------
485 template <typename T>
486 svtkTypeBool svtkHAMRDataArray<T>::Allocate(svtkIdType numValues, svtkIdType ext)
487 {
488  (void)numValues;
489  (void)ext;
490  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
491  abort();
492  return false;
493 }
494 
495 // --------------------------------------------------------------------------
496 template <typename T>
498 {
499  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
500  abort();
501 }
502 
503 /*
504 // --------------------------------------------------------------------------
505 template <typename T>
506 int svtkHAMRDataArray<T>::GetDataType() const
507 {
508  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
509  abort();
510  return 0;
511 }
512 
513 
514 // --------------------------------------------------------------------------
515 template <typename T>
516 int svtkHAMRDataArray<T>::GetDataTypeSize() const
517 {
518  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
519  abort();
520  return 0;
521 }
522 */
523 
524 // --------------------------------------------------------------------------
525 template <typename T>
527 {
528  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
529  abort();
530  return 0;
531 }
532 
533 // --------------------------------------------------------------------------
534 template <typename T>
535 void svtkHAMRDataArray<T>::SetTuple(svtkIdType dstTupleIdx, svtkIdType srcTupleIdx, svtkAbstractArray* source)
536 {
537  (void)dstTupleIdx;
538  (void)srcTupleIdx;
539  (void)source;
540  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
541  abort();
542 }
543 
544 // --------------------------------------------------------------------------
545 template <typename T>
546 void svtkHAMRDataArray<T>::InsertTuple(svtkIdType dstTupleIdx, svtkIdType srcTupleIdx, svtkAbstractArray* source)
547 {
548  (void)dstTupleIdx;
549  (void)srcTupleIdx;
550  (void)source;
551  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
552  abort();
553 }
554 
555 // --------------------------------------------------------------------------
556 template <typename T>
557 void svtkHAMRDataArray<T>::InsertTuples(svtkIdList* dstIds, svtkIdList* srcIds, svtkAbstractArray* source)
558 {
559  (void)dstIds;
560  (void)srcIds;
561  (void)source;
562  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
563  abort();
564 }
565 
566 // --------------------------------------------------------------------------
567 template <typename T>
568 void svtkHAMRDataArray<T>::InsertTuples(svtkIdType dstStart, svtkIdType n, svtkIdType srcStart, svtkAbstractArray* source)
569 {
570  (void)dstStart;
571  (void)n;
572  (void)srcStart;
573  (void)source;
574  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
575  abort();
576 }
577 
578 // --------------------------------------------------------------------------
579 template <typename T>
580 svtkIdType svtkHAMRDataArray<T>::InsertNextTuple(svtkIdType srcTupleIdx, svtkAbstractArray* source)
581 {
582  (void)srcTupleIdx;
583  (void)source;
584  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
585  abort();
586 }
587 
588 // --------------------------------------------------------------------------
589 template <typename T>
590 void svtkHAMRDataArray<T>::GetTuples(svtkIdList* tupleIds, svtkAbstractArray* output)
591 {
592  (void)tupleIds;
593  (void)output;
594  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
595  abort();
596 }
597 
598 // --------------------------------------------------------------------------
599 template <typename T>
600 void svtkHAMRDataArray<T>::GetTuples(svtkIdType p1, svtkIdType p2, svtkAbstractArray* output)
601 {
602  (void)p1;
603  (void)p2;
604  (void)output;
605  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
606  abort();
607 }
608 
609 // --------------------------------------------------------------------------
610 template <typename T>
612 {
613  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
614  abort();
615  return true;
616 }
617 
618 // --------------------------------------------------------------------------
619 template <typename T>
620 void* svtkHAMRDataArray<T>::GetVoidPointer(svtkIdType valueIdx)
621 {
622  /* could be handled in the case data is host accessible like this, but would
623  * fail if that's not the case so we'll disallow this for now
624  if (this->Data->host_accessible())
625  return this->Data->data() + valueIdx;
626  */
627  (void)valueIdx;
628  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
629  abort();
630  return nullptr;
631 }
632 
633 // --------------------------------------------------------------------------
634 template <typename T>
635 void svtkHAMRDataArray<T>::DeepCopy(svtkAbstractArray* da)
636 {
637  (void)da;
638  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
639  abort();
640 }
641 
642 // --------------------------------------------------------------------------
643 template <typename T>
644 void svtkHAMRDataArray<T>::InterpolateTuple(svtkIdType dstTupleIdx, svtkIdList* ptIndices, svtkAbstractArray* source, double* weights)
645 {
646  (void)dstTupleIdx;
647  (void)ptIndices;
648  (void)source;
649  (void)weights;
650  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
651  abort();
652 }
653 
654 // --------------------------------------------------------------------------
655 template <typename T>
656 void svtkHAMRDataArray<T>::InterpolateTuple(svtkIdType dstTupleIdx, svtkIdType srcTupleIdx1, svtkAbstractArray* source1, svtkIdType srcTupleIdx2, svtkAbstractArray* source2, double t)
657 {
658  (void)dstTupleIdx;
659  (void)srcTupleIdx1;
660  (void)source1;
661  (void)srcTupleIdx2;
662  (void)source2;
663  (void)t;
664  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
665  abort();
666 }
667 
668 // --------------------------------------------------------------------------
669 template <typename T>
671 {
672  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
673  abort();
674 }
675 
676 // --------------------------------------------------------------------------
677 template <typename T>
678 void svtkHAMRDataArray<T>::SetVoidArray(void* array, svtkIdType size, int save)
679 {
680  (void)array;
681  (void)size;
682  (void)save;
683  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
684  abort();
685 }
686 
687 // --------------------------------------------------------------------------
688 template <typename T>
689 void svtkHAMRDataArray<T>::SetVoidArray(void* array, svtkIdType size, int save, int deleteMethod)
690 {
691  (void)array;
692  (void)size;
693  (void)save;
694  (void)deleteMethod;
695  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
696  abort();
697 }
698 
699 // --------------------------------------------------------------------------
700 template <typename T>
701 void svtkHAMRDataArray<T>::SetArrayFreeFunction(void (*callback)(void*))
702 {
703  (void)callback;
704  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
705  abort();
706 }
707 
708 // --------------------------------------------------------------------------
709 template <typename T>
711 {
712  (void)out_ptr;
713  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
714  abort();
715 }
716 
717 // --------------------------------------------------------------------------
718 template <typename T>
719 unsigned long svtkHAMRDataArray<T>::GetActualMemorySize() const
720 {
721  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
722  abort();
723  return 0;
724 }
725 
726 // --------------------------------------------------------------------------
727 template <typename T>
729 {
730  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
731  abort();
732  return 0;
733 }
734 
735 // --------------------------------------------------------------------------
736 template <typename T>
737 svtkIdType svtkHAMRDataArray<T>::LookupValue(svtkVariant value)
738 {
739  (void)value;
740  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
741  abort();
742 }
743 
744 // --------------------------------------------------------------------------
745 template <typename T>
746 void svtkHAMRDataArray<T>::LookupValue(svtkVariant value, svtkIdList* valueIds)
747 {
748  (void)value;
749  (void)valueIds;
750  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
751  abort();
752 }
753 
754 // --------------------------------------------------------------------------
755 template <typename T>
756 svtkVariant svtkHAMRDataArray<T>::GetVariantValue(svtkIdType valueIdx)
757 {
758  (void)valueIdx;
759  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
760  abort();
761 }
762 
763 // --------------------------------------------------------------------------
764 template <typename T>
765 void svtkHAMRDataArray<T>::InsertVariantValue(svtkIdType valueIdx, svtkVariant value)
766 {
767  (void)valueIdx;
768  (void)value;
769  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
770  abort();
771 }
772 
773 // --------------------------------------------------------------------------
774 template <typename T>
775 void svtkHAMRDataArray<T>::SetVariantValue(svtkIdType valueIdx, svtkVariant value)
776 {
777  (void)valueIdx;
778  (void)value;
779  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
780  abort();
781 }
782 
783 // --------------------------------------------------------------------------
784 template <typename T>
786 {
787  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
788  abort();
789 }
790 
791 // --------------------------------------------------------------------------
792 template <typename T>
794 {
795  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
796  abort();
797 }
798 
799 // --------------------------------------------------------------------------
800 template <typename T>
801 void svtkHAMRDataArray<T>::GetProminentComponentValues(int comp, svtkVariantArray* values, double uncertainty, double minimumProminence)
802 {
803  (void)comp;
804  (void)values;
805  (void)uncertainty;
806  (void)minimumProminence;
807  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
808  abort();
809 }
810 
811 // --------------------------------------------------------------------------
812 template <typename T>
813 int svtkHAMRDataArray<T>::CopyInformation(svtkInformation* infoFrom, int deep)
814 {
815  (void)infoFrom;
816  (void)deep;
817  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
818  abort();
819  return 0;
820 }
821 
822 // --------------------------------------------------------------------------
823 template <typename T>
824 double* svtkHAMRDataArray<T>::GetTuple(svtkIdType tupleIdx)
825 {
826  (void)tupleIdx;
827  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
828  abort();
829  return nullptr;
830 }
831 
832 // --------------------------------------------------------------------------
833 template <typename T>
834 void svtkHAMRDataArray<T>::GetTuple(svtkIdType tupleIdx, double* tuple)
835 {
836  (void)tupleIdx;
837  (void)tuple;
838  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
839  abort();
840 }
841 
842 // --------------------------------------------------------------------------
843 template <typename T>
844 void svtkHAMRDataArray<T>::SetTuple(svtkIdType tupleIdx, const float* tuple)
845 {
846  (void)tupleIdx;
847  (void)tuple;
848  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
849  abort();
850 }
851 
852 // --------------------------------------------------------------------------
853 template <typename T>
854 void svtkHAMRDataArray<T>::SetTuple(svtkIdType tupleIdx, const double* tuple)
855 {
856  (void)tupleIdx;
857  (void)tuple;
858  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
859  abort();
860 }
861 
862 // --------------------------------------------------------------------------
863 template <typename T>
864 void svtkHAMRDataArray<T>::InsertTuple(svtkIdType tupleIdx, const float* tuple)
865 {
866  (void)tupleIdx;
867  (void)tuple;
868  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
869  abort();
870 }
871 
872 // --------------------------------------------------------------------------
873 template <typename T>
874 void svtkHAMRDataArray<T>::InsertTuple(svtkIdType tupleIdx, const double* tuple)
875 {
876  (void)tupleIdx;
877  (void)tuple;
878  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
879  abort();
880 }
881 
882 // --------------------------------------------------------------------------
883 template <typename T>
884 svtkIdType svtkHAMRDataArray<T>::InsertNextTuple(const float* tuple)
885 {
886  (void)tuple;
887  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
888  abort();
889  return 0;
890 }
891 
892 // --------------------------------------------------------------------------
893 template <typename T>
894 svtkIdType svtkHAMRDataArray<T>::InsertNextTuple(const double* tuple)
895 {
896  (void)tuple;
897  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
898  abort();
899 }
900 
901 // --------------------------------------------------------------------------
902 template <typename T>
903 void svtkHAMRDataArray<T>::RemoveTuple(svtkIdType tupleIdx)
904 {
905  (void)tupleIdx;
906  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
907  abort();
908 }
909 
910 // --------------------------------------------------------------------------
911 template <typename T>
913 {
914  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
915  abort();
916 }
917 
918 // --------------------------------------------------------------------------
919 template <typename T>
920 double svtkHAMRDataArray<T>::GetComponent(svtkIdType tupleIdx, int compIdx)
921 {
922  (void)tupleIdx;
923  (void)compIdx;
924  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
925  abort();
926  return 0.;
927 }
928 
929 // --------------------------------------------------------------------------
930 template <typename T>
931 void svtkHAMRDataArray<T>::SetComponent(svtkIdType tupleIdx, int compIdx, double value)
932 {
933  (void)tupleIdx;
934  (void)compIdx;
935  (void)value;
936  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
937  abort();
938 }
939 
940 // --------------------------------------------------------------------------
941 template <typename T>
942 void svtkHAMRDataArray<T>::InsertComponent(svtkIdType tupleIdx, int compIdx, double value)
943 {
944  (void)tupleIdx;
945  (void)compIdx;
946  (void)value;
947  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
948  abort();
949 }
950 
951 // --------------------------------------------------------------------------
952 template <typename T>
953 void svtkHAMRDataArray<T>::GetData( svtkIdType tupleMin, svtkIdType tupleMax, int compMin, int compMax, svtkDoubleArray* data)
954 {
955  (void)tupleMin;
956  (void)tupleMax;
957  (void)compMin;
958  (void)compMax;
959  (void)data;
960  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
961  abort();
962 }
963 
964 // --------------------------------------------------------------------------
965 template <typename T>
967 {
968  (void)da;
969  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
970  abort();
971 }
972 
973 // --------------------------------------------------------------------------
974 template <typename T>
976 {
977  (void)other;
978  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
979  abort();
980 }
981 
982 // --------------------------------------------------------------------------
983 template <typename T>
984 void svtkHAMRDataArray<T>::FillComponent(int compIdx, double value)
985 {
986  (void)compIdx;
987  (void)value;
988  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
989  abort();
990 }
991 
992 // --------------------------------------------------------------------------
993 template <typename T>
994 void svtkHAMRDataArray<T>::Fill(double value)
995 {
996  (void)value;
997  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
998  abort();
999 }
1000 
1001 // --------------------------------------------------------------------------
1002 template <typename T>
1003 void svtkHAMRDataArray<T>::CopyComponent(int dstComponent, svtkDataArray* src, int srcComponent)
1004 {
1005  (void)dstComponent;
1006  (void)src;
1007  (void)srcComponent;
1008  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
1009  abort();
1010 }
1011 
1012 // --------------------------------------------------------------------------
1013 template <typename T>
1014 void* svtkHAMRDataArray<T>::WriteVoidPointer(svtkIdType valueIdx, svtkIdType numValues)
1015 {
1016  (void)valueIdx;
1017  (void)numValues;
1018  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
1019  abort();
1020 }
1021 
1022 // --------------------------------------------------------------------------
1023 template <typename T>
1025 {
1026  svtkErrorMacro(<< "Method \"" << __FUNCTION__ << "\" not implemented.");
1027  abort();
1028 }
1029 
1030 // --------------------------------------------------------------------------
1031 template <typename T>
1033 {
1034  return DataArray;
1035 }
1036 
1037 // ----------------------------------------------------------------------------
1038 template <typename T>
1039 void svtkHAMRDataArray<T>::PrintSelf(ostream& os, svtkIndent indent)
1040 {
1041  (void) os;
1042  (void) indent;
1043 
1044  std::cerr << "this->Data = ";
1045  if (this->Data)
1046  {
1047  this->Data->print();
1048  }
1049  else
1050  {
1051  std::cerr << "nullptr";
1052  }
1053 }
1054 
1055 #endif
int Initialize(MPI_Comm comm, const std::string &fileName, InTransitDataAdaptor *&dataAdaptor)
Creates a sensei::ConfigurableAnalysis adaptor and sensei::InTransitDataAdaptor based on a SENSEI XML...
void SetData(T *data, size_t numTuples, int numComps, svtkAllocator alloc, svtkStream stream, svtkStreamMode streamMode, int owner)
zero-copy the passed data.
Definition: svtkHAMRDataArrayImpl.h:216
void SetNumberOfTuples(svtkIdType numTuples) override
sets the current size and may change the capacity of the array
Definition: svtkHAMRDataArrayImpl.h:474
An accelerator aware container for array based data.
Definition: svtkHAMRDataArray.h:62
svtkTypeBool Resize(svtkIdType numTuples) override
resize the container using the current allocator
Definition: svtkHAMRDataArrayImpl.h:440
T * GetData()
fast access to the internally managed memory.
Definition: svtkHAMRDataArray.h:253
svtkAOSDataArrayTemplate< T > * AsSvtkAOSDataArray(int zeroCopy)
Convert to an svtkAOSDataArrayTemplate instance.
Definition: svtkHAMRDataArrayImpl.h:297
static svtkHAMRDataArray * New()
construct a new instance that is uninitiazed.
Definition: svtkHAMRDataArrayImpl.h:39