----------------------------------------------------------------------------
| 25 | |
| 26 | //---------------------------------------------------------------------------- |
| 27 | std::string vtkXMLCompositeDataSetWriterHelper::WriteDataSet( |
| 28 | const std::string& path, const std::string& prefix, vtkDataObject* data) |
| 29 | { |
| 30 | if (!data) |
| 31 | { |
| 32 | return {}; |
| 33 | } |
| 34 | |
| 35 | bool isEmpty = true; |
| 36 | for (int attrType = vtkDataObject::POINT; |
| 37 | attrType < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES && isEmpty; ++attrType) |
| 38 | { |
| 39 | isEmpty = (data->GetNumberOfElements(attrType) == 0); |
| 40 | } |
| 41 | |
| 42 | if (auto* statModel = vtkStatisticalModel::SafeDownCast(data)) |
| 43 | { |
| 44 | isEmpty &= statModel->IsEmpty(); |
| 45 | } |
| 46 | |
| 47 | if (isEmpty) |
| 48 | { |
| 49 | return {}; |
| 50 | } |
| 51 | |
| 52 | auto writer = this->GetWriter(data->GetDataObjectType()); |
| 53 | if (!writer) |
| 54 | { |
| 55 | vtkLogF(WARNING, "skipping dataset of unsupported type '%s'.", data->GetClassName()); |
| 56 | return {}; |
| 57 | } |
| 58 | |
| 59 | std::string fname = prefix + "." + writer->GetDefaultFileExtension(); |
| 60 | writer->SetInputDataObject(data); |
| 61 | writer->SetFileName(path.empty() ? fname.c_str() : (path + "/" + fname).c_str()); |
| 62 | writer->Write(); |
| 63 | writer->SetInputDataObject(nullptr); |
| 64 | |
| 65 | vtkLogF(TRACE, "wrote leaf %s", fname.c_str()); |
| 66 | return fname; |
| 67 | } |
| 68 | |
| 69 | //---------------------------------------------------------------------------- |
| 70 | vtkXMLWriterBase* vtkXMLCompositeDataSetWriterHelper::GetWriter(int dataType) |
no test coverage detected