00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkXMLDataReader_h
00027 #define __vtkXMLDataReader_h
00028
00029 #include "vtkXMLReader.h"
00030
00031 class VTK_IO_EXPORT vtkXMLDataReader : public vtkXMLReader
00032 {
00033 public:
00034 vtkTypeRevisionMacro(vtkXMLDataReader,vtkXMLReader);
00035 void PrintSelf(ostream& os, vtkIndent indent);
00036
00038 virtual vtkIdType GetNumberOfPoints()=0;
00039
00041 virtual vtkIdType GetNumberOfCells()=0;
00042
00043
00044
00045 virtual void CopyOutputInformation(vtkInformation *outInfo, int port);
00046
00047 protected:
00048 vtkXMLDataReader();
00049 ~vtkXMLDataReader();
00050
00051 int SetUpdateExtentInfo(vtkXMLDataElement *eDSA,
00052 vtkInformationVector *infoVector);
00053
00054
00055 virtual void CreateXMLParser();
00056 virtual void DestroyXMLParser();
00057 virtual void SetupOutputInformation(vtkInformation *outInfo);
00058 virtual void SetupUpdateExtentInformation(vtkInformation *outInfo);
00059
00060 int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
00061 void SetupOutputData();
00062
00063
00064 virtual void SetupPieces(int numPieces);
00065 virtual void DestroyPieces();
00066
00067
00068 int ReadPiece(vtkXMLDataElement* ePiece, int piece);
00069 virtual int ReadPiece(vtkXMLDataElement* ePiece);
00070
00071
00072 int ReadPieceData(int piece);
00073 virtual int ReadPieceData();
00074
00075 virtual void ReadXMLData();
00076
00077
00078 virtual int ReadArrayForPoints(vtkXMLDataElement* da,
00079 vtkAbstractArray* outArray);
00080 virtual int ReadArrayForCells(vtkXMLDataElement* da,
00081 vtkAbstractArray* outArray);
00082
00083
00084
00085
00086
00087 int ReadArrayValues(vtkXMLDataElement* da, vtkIdType arrayIndex, vtkAbstractArray* array,
00088 vtkIdType startIndex, vtkIdType numValues);
00089
00090
00091
00092
00093 static void DataProgressCallbackFunction(vtkObject*, unsigned long, void*,
00094 void*);
00095
00096 virtual void DataProgressCallback();
00097
00098
00099 int NumberOfPieces;
00100
00101
00102 vtkXMLDataElement** PointDataElements;
00103 vtkXMLDataElement** CellDataElements;
00104
00105
00106 int Piece;
00107
00108
00109
00110 int NumberOfPointArrays;
00111 int NumberOfCellArrays;
00112
00113
00114
00115 int InReadData;
00116
00117
00118 vtkCallbackCommand* DataProgressObserver;
00119
00120
00121
00122 int *PointDataTimeStep;
00123 unsigned long *PointDataOffset;
00124 int PointDataNeedToReadTimeStep(vtkXMLDataElement *eNested);
00125
00126
00127 int *CellDataTimeStep;
00128 unsigned long *CellDataOffset;
00129 int CellDataNeedToReadTimeStep(vtkXMLDataElement *eNested);
00130
00131 private:
00132 vtkXMLDataReader(const vtkXMLDataReader&);
00133 void operator=(const vtkXMLDataReader&);
00134 };
00135
00136 #endif