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

Method WriteComposite

IO/ParallelXML/vtkXMLPMultiBlockDataWriter.cxx:159–243  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

157
158//------------------------------------------------------------------------------
159int vtkXMLPMultiBlockDataWriter::WriteComposite(
160 vtkCompositeDataSet* compositeData, vtkXMLDataElement* parentXML, int& currentFileIndex)
161{
162 if (!(compositeData->IsA("vtkMultiBlockDataSet") || compositeData->IsA("vtkMultiPieceDataSet")))
163 {
164 vtkErrorMacro("Unsupported composite dataset type: " << compositeData->GetClassName() << ".");
165 return 0;
166 }
167
168 // Write each input.
169 vtkSmartPointer<vtkDataObjectTreeIterator> iter;
170 iter.TakeReference(vtkDataObjectTreeIterator::SafeDownCast(compositeData->NewIterator()));
171 iter->VisitOnlyLeavesOff();
172 iter->TraverseSubTreeOff();
173 iter->SkipEmptyNodesOff();
174
175 int retVal = 0;
176 int indexCounter = 0;
177 for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem(), indexCounter++)
178 {
179 vtkDataObject* curDO = iter->GetCurrentDataObject();
180 const char* name = nullptr;
181 if (iter->HasCurrentMetaData())
182 {
183 name = iter->GetCurrentMetaData()->Get(vtkCompositeDataSet::NAME());
184 }
185
186 if (curDO && curDO->IsA("vtkCompositeDataSet"))
187 {
188 // if node is a supported composite dataset
189 // note in structure file and recurse.
190 vtkXMLDataElement* tag = vtkXMLDataElement::New();
191
192 if (curDO->IsA("vtkMultiPieceDataSet"))
193 {
194 tag->SetName("Piece");
195 tag->SetIntAttribute("index", indexCounter);
196
197 if (name)
198 {
199 tag->SetAttribute("name", name);
200 }
201 }
202 else if (curDO->IsA("vtkMultiBlockDataSet"))
203 {
204 tag->SetName("Block");
205 tag->SetIntAttribute("index", indexCounter);
206
207 if (name)
208 {
209 tag->SetAttribute("name", name);
210 }
211 }
212 vtkCompositeDataSet* curCD = vtkCompositeDataSet::SafeDownCast(curDO);
213 if (this->WriteComposite(curCD, tag, currentFileIndex))
214 {
215 parentXML->AddNestedElement(tag);
216 retVal = 1;

Callers

nothing calls this directly

Calls 15

IsAMethod · 0.80
SetIntAttributeMethod · 0.80
AddNestedElementMethod · 0.80
DeleteMethod · 0.65
NewFunction · 0.50
GetClassNameMethod · 0.45
TakeReferenceMethod · 0.45
NewIteratorMethod · 0.45
InitTraversalMethod · 0.45
IsDoneWithTraversalMethod · 0.45
GoToNextItemMethod · 0.45

Tested by

no test coverage detected