MCPcopy Create free account
hub / github.com/Kitware/VTK / operator()

Method operator()

Parallel/DIY/vtkDIYUtilities.cxx:75–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73
74 template <typename ArrayT>
75 void operator()(ArrayT* array)
76 {
77 using ValueType = vtk::GetAPIType<ArrayT>;
78
79 int numberOfComponents;
80 vtkIdType numberOfTuples;
81 std::string name;
82 diy::load(this->BB, numberOfComponents);
83 diy::load(this->BB, numberOfTuples);
84 diy::load(this->BB, name);
85
86 array->SetNumberOfComponents(numberOfComponents);
87 array->SetNumberOfTuples(numberOfTuples);
88
89 if (name != "_vtkArrayNoName")
90 {
91 array->SetName(name.c_str());
92 }
93
94 vtkNew<vtkAOSDataArrayTemplate<ValueType>> aosArray;
95 if (array->HasStandardMemoryLayout())
96 {
97 aosArray->ShallowCopy(array);
98 }
99 else
100 {
101 // create a temporary array for loading
102 aosArray->SetNumberOfComponents(numberOfComponents);
103 aosArray->SetNumberOfTuples(numberOfTuples);
104 }
105 ValueType* data = aosArray->GetPointer(0);
106
107 if (array->GetNumberOfValues())
108 {
109 diy::load(this->BB, data, array->GetNumberOfValues());
110 }
111
112 if (!array->HasStandardMemoryLayout())
113 {
114 // read the data into the non-standard array.
115 auto range = vtk::DataArrayTupleRange(array);
116
117 using TupleRef = typename decltype(range)::TupleReferenceType;
118 using ComponentRef = typename decltype(range)::ComponentReferenceType;
119
120 vtkIdType i(0);
121 for (TupleRef tpl : range)
122 {
123 for (ComponentRef comp : tpl)
124 {
125 comp = data[i++];
126 }
127 }
128
129 assert(i == numberOfComponents * numberOfTuples);
130 }
131 }
132

Callers

nothing calls this directly

Calls 10

loadFunction · 0.50
assertFunction · 0.50
SetNumberOfComponentsMethod · 0.45
SetNumberOfTuplesMethod · 0.45
SetNameMethod · 0.45
c_strMethod · 0.45
ShallowCopyMethod · 0.45
GetPointerMethod · 0.45
GetNumberOfValuesMethod · 0.45

Tested by

no test coverage detected