----------------------------------------------------------------------------
| 327 | |
| 328 | //---------------------------------------------------------------------------- |
| 329 | int vtkCleanArrays::RequestData( |
| 330 | vtkInformation*, vtkInformationVector** inputVector, vtkInformationVector* outputVector) |
| 331 | { |
| 332 | vtkDataObject* inputDO = vtkDataObject::GetData(inputVector[0], 0); |
| 333 | vtkDataObject* outputDO = vtkDataObject::GetData(outputVector, 0); |
| 334 | vtkShallowCopy(outputDO, inputDO); |
| 335 | vtkCompositeDataSet* outputCD = vtkCompositeDataSet::SafeDownCast(outputDO); |
| 336 | |
| 337 | vtkMultiProcessController* controller = this->Controller; |
| 338 | if ((!controller || controller->GetNumberOfProcesses() <= 1) && outputCD == nullptr) |
| 339 | { |
| 340 | // Nothing to do since not running in parallel or on composite datasets. |
| 341 | return 1; |
| 342 | } |
| 343 | |
| 344 | // Build the array sets for all attribute types across all blocks (if any). |
| 345 | vtkCleanArrays::vtkArraySet arraySets[vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES]; |
| 346 | if (outputCD) |
| 347 | { |
| 348 | vtkSmartPointer<vtkCompositeDataIterator> iter; |
| 349 | iter.TakeReference(outputCD->NewIterator()); |
| 350 | for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem()) |
| 351 | { |
| 352 | vtkDataObject* dobj = iter->GetCurrentDataObject(); |
| 353 | for (int attr = 0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++) |
| 354 | { |
| 355 | if (vtkSkipAttributeType(attr)) |
| 356 | { |
| 357 | continue; |
| 358 | } |
| 359 | if (dobj->GetNumberOfElements(attr) > 0) |
| 360 | { |
| 361 | vtkCleanArrays::vtkArraySet myset; |
| 362 | myset.Initialize(dobj->GetAttributesAsFieldData(attr)); |
| 363 | if (this->FillPartialArrays) |
| 364 | { |
| 365 | arraySets[attr].Union(myset); |
| 366 | } |
| 367 | else |
| 368 | { |
| 369 | arraySets[attr].Intersection(myset); |
| 370 | } |
| 371 | } |
| 372 | } |
| 373 | } |
| 374 | } |
| 375 | else |
| 376 | { |
| 377 | for (int attr = 0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++) |
| 378 | { |
| 379 | if (vtkSkipAttributeType(attr)) |
| 380 | { |
| 381 | continue; |
| 382 | } |
| 383 | if (outputDO->GetNumberOfElements(attr) > 0) |
| 384 | { |
| 385 | arraySets[attr].Initialize(outputDO->GetAttributesAsFieldData(attr)); |
| 386 | } |
nothing calls this directly
no test coverage detected