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
00052 virtual void CreateXMLParser();
00053 virtual void DestroyXMLParser();
00054 virtual void SetupOutputInformation(vtkInformation *outInfo);
00055
00056 int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
00057 void SetupOutputData();
00058
00059
00060 virtual void SetupPieces(int numPieces);
00061 virtual void DestroyPieces();
00062
00063
00064 int ReadPiece(vtkXMLDataElement* ePiece, int piece);
00065 virtual int ReadPiece(vtkXMLDataElement* ePiece);
00066
00067
00068 int ReadPieceData(int piece);
00069 virtual int ReadPieceData();
00070
00071 virtual void ReadXMLData();
00072
00073
00074 virtual int ReadArrayForPoints(vtkXMLDataElement* da,
00075 vtkDataArray* outArray);
00076 virtual int ReadArrayForCells(vtkXMLDataElement* da,
00077 vtkDataArray* outArray);
00078
00079
00080 int ReadData(vtkXMLDataElement* da, void* data, int wordType,
00081 vtkIdType startWord, vtkIdType numWords);
00082
00083
00084 static void DataProgressCallbackFunction(vtkObject*, unsigned long, void*,
00085 void*);
00086
00087 virtual void DataProgressCallback();
00088
00089
00090 int NumberOfPieces;
00091
00092
00093 vtkXMLDataElement** PointDataElements;
00094 vtkXMLDataElement** CellDataElements;
00095
00096
00097 int Piece;
00098
00099
00100
00101 int NumberOfPointArrays;
00102 int NumberOfCellArrays;
00103
00104
00105
00106 int InReadData;
00107
00108
00109 vtkCallbackCommand* DataProgressObserver;
00110
00111
00112
00113 int *PointDataTimeStep;
00114 unsigned long *PointDataOffset;
00115 int PointDataNeedToReadTimeStep(vtkXMLDataElement *eNested);
00116
00117
00118 int *CellDataTimeStep;
00119 unsigned long *CellDataOffset;
00120 int CellDataNeedToReadTimeStep(vtkXMLDataElement *eNested);
00121
00122 private:
00123 vtkXMLDataReader(const vtkXMLDataReader&);
00124 void operator=(const vtkXMLDataReader&);
00125 };
00126
00127 #endif