| 171 | { |
| 172 | template <typename ArrayType> |
| 173 | void operator()(ArrayType* array, vtkIdType tupleIdx, diy::MemoryBuffer& buffer) const |
| 174 | { |
| 175 | auto tuple = vtk::DataArrayTupleRange(array)[tupleIdx]; |
| 176 | using CompRefT = typename std::iterator_traits<decltype(tuple.begin())>::reference; |
| 177 | // Need value type for diy::load template resolution |
| 178 | using ValueT = typename std::iterator_traits<decltype(tuple.begin())>::value_type; |
| 179 | for (CompRefT compRef : tuple) |
| 180 | { |
| 181 | ValueT val; |
| 182 | diy::load(buffer, val); |
| 183 | compRef = val; |
| 184 | } |
| 185 | } |
| 186 | }; |
| 187 | |
| 188 | inline void DeserializeFieldData(diy::MemoryBuffer& bb, vtkFieldData* field, vtkIdType tuple) |