------------------------------------------------------------------------------
| 626 | |
| 627 | //------------------------------------------------------------------------------ |
| 628 | std::vector<vtkTypeUInt32> vtkObjectManager::GetAllDependencies(vtkTypeUInt32 identifier) |
| 629 | { |
| 630 | auto root = identifier; |
| 631 | std::deque<vtkTypeUInt32> traversealDeque; |
| 632 | std::unordered_set<vtkTypeUInt32> visited; |
| 633 | std::vector<vtkTypeUInt32> result; |
| 634 | traversealDeque.push_back(root); |
| 635 | while (!traversealDeque.empty()) |
| 636 | { |
| 637 | const auto front = traversealDeque.front(); |
| 638 | traversealDeque.pop_front(); |
| 639 | if (visited.insert(front).second && |
| 640 | (front != vtkObjectManager::ROOT())) // avoids placing the 0 in result |
| 641 | { |
| 642 | result.emplace_back(front); |
| 643 | } |
| 644 | for (auto& dep : this->Context->GetDirectDependencies(front)) |
| 645 | { |
| 646 | if (visited.count(dep) == 0) |
| 647 | { |
| 648 | traversealDeque.push_back(dep); |
| 649 | } |
| 650 | } |
| 651 | } |
| 652 | return result; |
| 653 | } |
| 654 | |
| 655 | //------------------------------------------------------------------------------ |
| 656 | vtkSmartPointer<vtkTypeUInt32Array> vtkObjectManager::GetAllDependenciesAsVTKDataArray( |