1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkXMLPDataObjectReader
* @brief Superclass for PVTK XML file readers.
*
* vtkXMLPDataObjectReader provides functionality common to all PVTK XML
* file readers. Concrete subclasses call upon this functionality when needed.
*/
#ifndef vtkXMLPDataObjectReader_h
#define vtkXMLPDataObjectReader_h
#include "vtkIOXMLModule.h" // For export macro
#include "vtkXMLReader.h"
VTK_ABI_NAMESPACE_BEGIN
class VTKIOXML_EXPORT vtkXMLPDataObjectReader : public vtkXMLReader
{
public:
vtkTypeMacro(vtkXMLPDataObjectReader, vtkXMLReader);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Get the number of pieces from the summary file being read.
*/
vtkGetMacro(NumberOfPieces, int);
protected:
vtkXMLPDataObjectReader();
~vtkXMLPDataObjectReader() override;
/**
* Delete all piece readers and related information
*/
virtual void DestroyPieces();
/**
* Initialize the output data
*/
void SetupOutputData() override;
/**
* Setup the number of pieces to be read and allocate space accordingly
*/
virtual void SetupPieces(int numPieces);
/**
* Pipeline execute information driver. Called by vtkXMLReader.
*/
int ReadXMLInformation() override;
/**
* Whether or not the current reader can read the current piece
*/
virtual int CanReadPiece(int index) = 0;
/**
* Setup the piece reader at the given index
*/
int ReadPiece(vtkXMLDataElement* ePiece, int index);
/**
* Setup the current piece reader. It needs to be overridden by subclass.
*/
virtual int ReadPiece(vtkXMLDataElement* ePiece) = 0;
///@{
/**
* Methods for creating a filename for each piece in the dataset
*/
char* CreatePieceFileName(const char* fileName);
void SplitFileName();
///@}
///@{
/**
* Callback registered with the PieceProgressObserver.
*/
static void PieceProgressCallbackFunction(vtkObject*, unsigned long, void*, void*);
virtual void PieceProgressCallback() = 0;
///@}
/**
* Pieces from the input summary file.
*/
int NumberOfPieces;
/**
* The piece currently being read.
*/
int Piece;
/**
* The path to the input file without the file name.
*/
char* PathName;
///@{
/**
* Information per-piece.
*/
vtkXMLDataElement** PieceElements;
int* CanReadPieceFlag;
///@}
vtkCallbackCommand* PieceProgressObserver;
private:
vtkXMLPDataObjectReader(const vtkXMLPDataObjectReader&) = delete;
void operator=(const vtkXMLPDataObjectReader&) = delete;
};
VTK_ABI_NAMESPACE_END
#endif
|