1 /*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkPartitionedDataSet.cxx
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14 =========================================================================*/
15 #include "vtkPartitionedDataSet.h"
16
17 #include "vtkDataSet.h"
18 #include "vtkInformation.h"
19 #include "vtkInformationVector.h"
20 #include "vtkObjectFactory.h"
21
22 vtkStandardNewMacro(vtkPartitionedDataSet);
23 //------------------------------------------------------------------------------
24 vtkPartitionedDataSet::vtkPartitionedDataSet() = default;
25
26 //------------------------------------------------------------------------------
27 vtkPartitionedDataSet::~vtkPartitionedDataSet() = default;
28
29 //------------------------------------------------------------------------------
GetData(vtkInformation * info)30 vtkPartitionedDataSet* vtkPartitionedDataSet::GetData(vtkInformation* info)
31 {
32 return info ? vtkPartitionedDataSet::SafeDownCast(info->Get(DATA_OBJECT())) : nullptr;
33 }
34
35 //------------------------------------------------------------------------------
GetData(vtkInformationVector * v,int i)36 vtkPartitionedDataSet* vtkPartitionedDataSet::GetData(vtkInformationVector* v, int i)
37 {
38 return vtkPartitionedDataSet::GetData(v->GetInformationObject(i));
39 }
40
41 //------------------------------------------------------------------------------
SetNumberOfPartitions(unsigned int numPartitions)42 void vtkPartitionedDataSet::SetNumberOfPartitions(unsigned int numPartitions)
43 {
44 this->Superclass::SetNumberOfChildren(numPartitions);
45 }
46
47 //------------------------------------------------------------------------------
GetNumberOfPartitions()48 unsigned int vtkPartitionedDataSet::GetNumberOfPartitions()
49 {
50 return this->Superclass::GetNumberOfChildren();
51 }
52
53 //------------------------------------------------------------------------------
GetPartition(unsigned int idx)54 vtkDataSet* vtkPartitionedDataSet::GetPartition(unsigned int idx)
55 {
56 return vtkDataSet::SafeDownCast(this->GetPartitionAsDataObject(idx));
57 }
58
59 //------------------------------------------------------------------------------
GetPartitionAsDataObject(unsigned int idx)60 vtkDataObject* vtkPartitionedDataSet::GetPartitionAsDataObject(unsigned int idx)
61 {
62 return this->Superclass::GetChild(idx);
63 }
64
65 //------------------------------------------------------------------------------
SetPartition(unsigned int idx,vtkDataObject * partition)66 void vtkPartitionedDataSet::SetPartition(unsigned int idx, vtkDataObject* partition)
67 {
68 if (partition && partition->IsA("vtkCompositeDataSet"))
69 {
70 vtkErrorMacro("Partition cannot be a vtkCompositeDataSet.");
71 return;
72 }
73
74 this->Superclass::SetChild(idx, partition);
75 }
76
77 //------------------------------------------------------------------------------
RemoveNullPartitions()78 void vtkPartitionedDataSet::RemoveNullPartitions()
79 {
80 unsigned int next = 0;
81 for (unsigned int cc = 0; cc < this->GetNumberOfPartitions(); ++cc)
82 {
83 auto ds = this->GetPartition(cc);
84 if (ds)
85 {
86 if (next < cc)
87 {
88 this->SetPartition(next, ds);
89 if (this->HasChildMetaData(cc))
90 {
91 this->SetChildMetaData(next, this->GetChildMetaData(cc));
92 }
93 this->SetPartition(cc, nullptr);
94 this->SetChildMetaData(cc, nullptr);
95 }
96 next++;
97 }
98 }
99 this->SetNumberOfPartitions(next);
100 }
101
102 //------------------------------------------------------------------------------
PrintSelf(ostream & os,vtkIndent indent)103 void vtkPartitionedDataSet::PrintSelf(ostream& os, vtkIndent indent)
104 {
105 this->Superclass::PrintSelf(os, indent);
106 }
107