VTK  9.7.20260805
vtkXMLCompositeDataReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright (c) Kitware, Inc.
3// SPDX-License-Identifier: BSD-3-Clause
20
21#ifndef vtkXMLCompositeDataReader_h
22#define vtkXMLCompositeDataReader_h
23
24#include "vtkIOXMLModule.h" // For export macro
25#include "vtkXMLReader.h"
26
27VTK_ABI_NAMESPACE_BEGIN
31struct vtkXMLCompositeDataReaderInternals;
32
33VTK_ABI_NAMESPACE_END
34#include <set> // for std::set
35#include <string> // for std::string
36
37VTK_ABI_NAMESPACE_BEGIN
38class VTKIOXML_EXPORT vtkXMLCompositeDataReader : public vtkXMLReader
39{
40public:
42 void PrintSelf(ostream& os, vtkIndent indent) override;
43
44 enum
45 {
48 };
49
62 vtkSetClampMacro(PieceDistribution, int, Block, Interleave);
63 vtkGetMacro(PieceDistribution, int);
65
67
73
74 void SetFileName(VTK_FILEPATH const char*) override;
75
76protected:
79
80 // Get the name of the data set being read.
81 const char* GetDataSetName() override;
82
83 // Returns the primary element pass to ReadPrimaryElement().
85
86 void ReadXMLData() override;
87 int ReadPrimaryElement(vtkXMLDataElement* ePrimary) override;
88
89 // Setup the output with no data available. Used in error cases.
90 void SetupEmptyOutput() override;
91
92 int FillOutputPortInformation(int, vtkInformation* info) override;
93
94 // Create a default executive.
96
97 // Find the path to this file in case the internal files are
98 // specified as relative paths.
99 std::string GetFilePath();
100
101 std::string GetFileNameFromXML(vtkXMLDataElement* xmlElem, const std::string& filePath);
102
103 vtkXMLReader* GetReaderOfType(const char* type);
104 vtkXMLReader* GetReaderForFile(const std::string& filename);
105
107
109 vtkXMLReader* accum, vtkXMLDataElement* xmlElem, const std::string& filePath);
110
111 // Read the XML element for the subtree of a composite dataset.
112 // dataSetIndex is used to rank the leaf nodes in an inorder traversal.
113 virtual void ReadComposite(vtkXMLDataElement* element, vtkCompositeDataSet* composite,
114 const char* filePath, unsigned int& dataSetIndex) = 0;
115
116 // Read the vtkDataSet (a leaf) in the composite dataset.
117 virtual vtkDataSet* ReadDataset(vtkXMLDataElement* xmlElem, const char* filePath);
118
119 // Read the vtkDataObject (a leaf) in the composite dataset.
120 virtual vtkDataObject* ReadDataObject(vtkXMLDataElement* xmlElem, const char* filePath);
121 // Sets the file name or the input data for the reader
122 // The default function simply calls SetFileName on the reader. In this case
123 // the reader opens the file and reads the data from it.
124 // An override, could specify that data is read from an input string using
125 // ReadFromInputStringOn and SetInputString. In this case the data is read
126 // by the function and then set to the reader.
127 virtual bool ReaderSetFileNameOrData(vtkXMLReader* reader, const char* fileName);
128
139 unsigned int datasetIndex, unsigned int pieceIndex = 0, unsigned int numPieces = 0);
140
141#ifndef __VTK_WRAP__
146 static unsigned int CountNestedElements(vtkXMLDataElement* element, const std::string& tagName,
147 const std::set<std::string>& exclusions = std::set<std::string>());
148
149#endif
150
155 virtual void PrepareToCreateMetaData(vtkXMLDataElement* vtkNotUsed(ePrimary)) {}
156
160 virtual void CreateMetaData(vtkXMLDataElement* ePrimary) = 0;
161
167 vtkCompositeDataSet* composite, vtkXMLDataElement* element, const std::string& filePath) = 0;
168
170
171private:
173 void operator=(const vtkXMLCompositeDataReader&) = delete;
174
176
181 static int GetPieceAssignmentForBlockStrategy(
182 unsigned int datasetIndex, unsigned int numDatasets, int numPieces);
183 static int GetPieceAssignmentForInterleaveStrategy(
184 unsigned int datasetIndex, unsigned int numDatasets, int numPieces);
186
187 int PieceDistribution;
188
189 vtkXMLCompositeDataReaderInternals* Internal;
190};
191
192VTK_ABI_NAMESPACE_END
193#endif
abstract superclass for composite (multi-block or AMR) datasets
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:56
Superclass for all pipeline executives in VTK.
a simple class to control print indentation
Definition vtkIndent.h:29
Key for integer values in vtkInformation.
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Hold a reference to a vtkObjectBase instance.
virtual void SyncCompositeDataArraySelections(vtkCompositeDataSet *composite, vtkXMLDataElement *element, const std::string &filePath)=0
Recursively synchronize the data array selection of the reader for the file specified in the XML elem...
vtkXMLDataElement * GetPrimaryElement()
vtkCompositeDataSet * GetOutput(int)
Get the output data object for a port on this algorithm.
int FillOutputPortInformation(int, vtkInformation *info) override
Fill the output port information objects for this algorithm.
vtkCompositeDataSet * GetOutput()
Get the output data object for a port on this algorithm.
virtual void PrepareToCreateMetaData(vtkXMLDataElement *ePrimary)
Prepare to create the meta-data from the composite dataset from the file.
void SetupEmptyOutput() override
Setup the output with no data available.
virtual void ReadComposite(vtkXMLDataElement *element, vtkCompositeDataSet *composite, const char *filePath, unsigned int &dataSetIndex)=0
virtual vtkDataObject * ReadDataObject(vtkXMLDataElement *xmlElem, const char *filePath)
int ShouldReadDataSet(unsigned int datasetIndex, unsigned int pieceIndex=0, unsigned int numPieces=0)
Given the inorder index for a leaf node, this method tells if the current process should read the dat...
vtkSmartPointer< vtkCompositeDataSet > Metadata
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual bool ReaderSetFileNameOrData(vtkXMLReader *reader, const char *fileName)
static unsigned int CountNestedElements(vtkXMLDataElement *element, const std::string &tagName, const std::set< std::string > &exclusions=std::set< std::string >())
Convenience method to count all nested elements with the given tag name.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
virtual void CreateMetaData(vtkXMLDataElement *ePrimary)=0
Create the meta-data from the composite dataset from the file.
virtual vtkDataSet * ReadDataset(vtkXMLDataElement *xmlElem, const char *filePath)
const char * GetDataSetName() override
Get the name of the data set being read.
void ReadXMLData() override
Pipeline execution methods to be defined by subclass.
void SyncDataArraySelections(vtkXMLReader *accum, vtkXMLDataElement *xmlElem, const std::string &filePath)
void SetFileName(const char *) override
int ReadPrimaryElement(vtkXMLDataElement *ePrimary) override
Read the primary element from the file.
std::string GetFileNameFromXML(vtkXMLDataElement *xmlElem, const std::string &filePath)
vtkXMLReader * GetReaderOfType(const char *type)
vtkExecutive * CreateDefaultExecutive() override
Create a default executive.
vtkXMLReader * GetReaderForFile(const std::string &filename)
~vtkXMLCompositeDataReader() override
Represents an XML element and those nested inside.
#define VTK_FILEPATH