VTK
ArrayConverters.h
Go to the documentation of this file.
1 //=============================================================================
2 //
3 // Copyright (c) Kitware, Inc.
4 // All rights reserved.
5 // See LICENSE.txt for details.
6 //
7 // This software is distributed WITHOUT ANY WARRANTY; without even
8 // the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9 // PURPOSE. See the above copyright notice for more information.
10 //
11 // Copyright 2012 Sandia Corporation.
12 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
13 // the U.S. Government retains certain rights in this software.
14 //
15 //=============================================================================
16 
17 #ifndef vtkmlib_ArrayConverters_h
18 #define vtkmlib_ArrayConverters_h
19 
20 #include "vtkAcceleratorsVTKmModule.h" //required for correct implementation
21 #include "vtkmConfig.h" //required for general vtkm setup
22 
23 #include <vtkm/cont/Field.h>
24 
25 #include <type_traits> // for std::underlying_type
26 
27 class vtkDataArray;
28 class vtkDataSet;
29 class vtkPoints;
30 
31 namespace vtkm {
32 namespace cont {
33 class DataSet;
34 class CoordinateSystem;
35 }
36 }
37 
38 namespace tovtkm {
39 
40 enum class FieldsFlag
41 {
42  None = 0x0,
43  Points = 0x1,
44  Cells = 0x2,
45 
47 };
48 
49 VTKACCELERATORSVTKM_EXPORT
50 void ProcessFields(vtkDataSet *input, vtkm::cont::DataSet &dataset,
51  tovtkm::FieldsFlag fields);
52 
53 // determine the type and call the proper Convert routine
54 VTKACCELERATORSVTKM_EXPORT
55 vtkm::cont::Field Convert(vtkDataArray* input, int association);
56 }
57 
58 namespace fromvtkm {
59 
60 VTKACCELERATORSVTKM_EXPORT
61 vtkDataArray* Convert(const vtkm::cont::Field& input);
62 
63 VTKACCELERATORSVTKM_EXPORT
64 vtkPoints* Convert(const vtkm::cont::CoordinateSystem& input);
65 
66 VTKACCELERATORSVTKM_EXPORT
67 bool ConvertArrays(const vtkm::cont::DataSet& input, vtkDataSet* output);
68 }
69 
71  const tovtkm::FieldsFlag &b)
72 {
74  return static_cast<tovtkm::FieldsFlag>(static_cast<T>(a) & static_cast<T>(b));
75 }
76 
78  const tovtkm::FieldsFlag &b)
79 {
81  return static_cast<tovtkm::FieldsFlag>(static_cast<T>(a) | static_cast<T>(b));
82 }
83 
84 #endif // vtkmlib_ArrayConverters_h
tovtkm::FieldsFlag operator &(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
VTKACCELERATORSVTKM_EXPORT bool ConvertArrays(const vtkm::cont::DataSet &input, vtkDataSet *output)
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
VTKACCELERATORSVTKM_EXPORT vtkDataArray * Convert(const vtkm::cont::Field &input)
tovtkm::FieldsFlag operator|(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
VTKACCELERATORSVTKM_EXPORT void ProcessFields(vtkDataSet *input, vtkm::cont::DataSet &dataset, tovtkm::FieldsFlag fields)
represent and manipulate 3D points
Definition: vtkPoints.h:39
VTKACCELERATORSVTKM_EXPORT vtkm::cont::Field Convert(vtkDataArray *input, int association)