----------------------------------------------------------------------------
| 229 | |
| 230 | //---------------------------------------------------------------------------- |
| 231 | bool ConvertDataArrayToMCArray(vtkDataArray* dataArray, int offset, int stride, |
| 232 | conduit_cpp::Node& conduitNode, int arraySize = -1, bool external = true) |
| 233 | { |
| 234 | stride = std::max(stride, 1); |
| 235 | |
| 236 | conduit_index_t numberOfElements; |
| 237 | if (arraySize == -1) |
| 238 | { |
| 239 | numberOfElements = dataArray->GetNumberOfValues() / stride; |
| 240 | } |
| 241 | else |
| 242 | { |
| 243 | numberOfElements = arraySize / stride; |
| 244 | } |
| 245 | |
| 246 | int dataType = dataArray->GetDataType(); |
| 247 | int dataTypeSize = dataArray->GetDataTypeSize(); |
| 248 | int arrayType = dataArray->GetArrayType(); |
| 249 | |
| 250 | if (arrayType != vtkArrayTypes::VTK_AOS_DATA_ARRAY && |
| 251 | arrayType != vtkArrayTypes::VTK_SOA_DATA_ARRAY) |
| 252 | { |
| 253 | vtkLog(ERROR, |
| 254 | "Unsupported data array type: " << dataArray->GetArrayTypeAsString() << " for array " |
| 255 | << dataArray->GetName()); |
| 256 | return false; |
| 257 | } |
| 258 | |
| 259 | // The code below uses the legacy GetVoidPointer on purpose to get zero copy. |
| 260 | bool is_supported = true; |
| 261 | if (::IsSignedIntegralType(dataType)) |
| 262 | { |
| 263 | switch (dataType) |
| 264 | { |
| 265 | vtkTemplateMacro(switch (dataTypeSize) { |
| 266 | case 1: |
| 267 | conduit_set_array( |
| 268 | conduitNode, dataArray, int8, VTK_TT, numberOfElements, offset, stride, external); |
| 269 | break; |
| 270 | |
| 271 | case 2: |
| 272 | conduit_set_array( |
| 273 | conduitNode, dataArray, int16, VTK_TT, numberOfElements, offset, stride, external); |
| 274 | break; |
| 275 | |
| 276 | case 4: |
| 277 | conduit_set_array( |
| 278 | conduitNode, dataArray, int32, VTK_TT, numberOfElements, offset, stride, external); |
| 279 | break; |
| 280 | |
| 281 | case 8: |
| 282 | conduit_set_array( |
| 283 | conduitNode, dataArray, int64, VTK_TT, numberOfElements, offset, stride, external); |
| 284 | break; |
| 285 | |
| 286 | default: |
| 287 | is_supported = false; |
| 288 | }); |
no test coverage detected