MCPcopy Create free account
hub / github.com/Kitware/VTK / RequestData

Method RequestData

Filters/Parallel/vtkCleanArrays.cxx:329–437  ·  view source on GitHub ↗

----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

327
328//----------------------------------------------------------------------------
329int 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 }

Callers

nothing calls this directly

Calls 15

vtkShallowCopyFunction · 0.85
vtkSkipAttributeTypeFunction · 0.85
GetNumberOfProcessesMethod · 0.80
GetDataFunction · 0.50
TakeReferenceMethod · 0.45
NewIteratorMethod · 0.45
InitTraversalMethod · 0.45
IsDoneWithTraversalMethod · 0.45
GoToNextItemMethod · 0.45
GetCurrentDataObjectMethod · 0.45
GetNumberOfElementsMethod · 0.45
InitializeMethod · 0.45

Tested by

no test coverage detected