------------------------------------------------------------------------------
| 157 | |
| 158 | //------------------------------------------------------------------------------ |
| 159 | int 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; |
nothing calls this directly
no test coverage detected