00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00035 #ifndef __vtkChacoReader_h
00036 #define __vtkChacoReader_h
00037
00038 #include "vtkUnstructuredGridAlgorithm.h"
00039
00040 class VTK_IO_EXPORT vtkChacoReader : public vtkUnstructuredGridAlgorithm
00041 {
00042 public:
00043 static vtkChacoReader *New();
00044 vtkTypeRevisionMacro(vtkChacoReader,vtkUnstructuredGridAlgorithm);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00050 vtkSetStringMacro(BaseName);
00051 vtkGetStringMacro(BaseName);
00052
00058 vtkSetMacro(GenerateGlobalElementIdArray, int);
00059 vtkGetMacro(GenerateGlobalElementIdArray, int);
00060 vtkBooleanMacro(GenerateGlobalElementIdArray, int);
00061
00062 static const char *GetGlobalElementIdArrayName() { return "GlobalElementId"; }
00063
00070 vtkSetMacro(GenerateGlobalNodeIdArray, int);
00071 vtkGetMacro(GenerateGlobalNodeIdArray, int);
00072 vtkBooleanMacro(GenerateGlobalNodeIdArray, int);
00073
00074 static const char *GetGlobalNodeIdArrayName() { return "GlobalNodeId"; }
00075
00079 vtkSetMacro(GenerateVertexWeightArrays, int);
00080 vtkGetMacro(GenerateVertexWeightArrays, int);
00081 vtkBooleanMacro(GenerateVertexWeightArrays, int);
00082
00086 vtkGetMacro(NumberOfVertexWeights, int);
00087
00094 const char *GetVertexWeightArrayName(int weight);
00095
00102 vtkSetMacro(GenerateEdgeWeightArrays, int);
00103 vtkGetMacro(GenerateEdgeWeightArrays, int);
00104 vtkBooleanMacro(GenerateEdgeWeightArrays, int);
00105
00109 vtkGetMacro(NumberOfEdgeWeights, int);
00110
00117 const char *GetEdgeWeightArrayName(int weight);
00118
00120
00121 vtkGetMacro(Dimensionality, int);
00122 vtkGetMacro(NumberOfEdges, vtkIdType);
00123 vtkGetMacro(NumberOfVertices, vtkIdType);
00125
00130 vtkGetMacro(NumberOfCellWeightArrays, int);
00131
00136 vtkGetMacro(NumberOfPointWeightArrays, int);
00137
00138 protected:
00139 vtkChacoReader();
00140 ~vtkChacoReader();
00141
00142 int BuildOutputGrid(vtkUnstructuredGrid *gr);
00143
00144
00145
00146 void CloseCurrentFile();
00147 int OpenCurrentFile();
00148
00149 int InputGeom(vtkIdType nvtxs, int igeom, double *x, double *y, double *z);
00150 int InputGraph1();
00151 int InputGraph2( vtkIdType **start, vtkIdType **adjacency, double **vweights,
00152 double **eweights);
00153 int GetCoordsMetadata();
00154 void GetGraphMetadata();
00155
00156
00157
00158 int ReadFile(vtkUnstructuredGrid* output);
00159 void AddElementIds(vtkUnstructuredGrid* output);
00160 void AddNodeIds(vtkUnstructuredGrid* output);
00161
00162 void MakeWeightArrayNames(int nv, int ne);
00163
00164
00165 char *BaseName;
00166 int GenerateGlobalElementIdArray;
00167 int GenerateGlobalNodeIdArray;
00168
00169 int GenerateVertexWeightArrays;
00170 int GenerateEdgeWeightArrays;
00171
00172 FILE *CurrentGeometryFP;
00173 FILE *CurrentGraphFP;
00174 char *CurrentBaseName;
00175 vtkSetStringMacro(CurrentBaseName);
00176
00177 char **VarrayName;
00178 char **EarrayName;
00179
00180
00181
00182
00183
00184
00185 int Dimensionality;
00186 vtkIdType NumberOfVertices;
00187 vtkIdType NumberOfEdges;
00188 int NumberOfVertexWeights;
00189 int NumberOfEdgeWeights;
00190 int GraphFileHasVertexNumbers;
00191
00192
00193
00194 int NumberOfPointWeightArrays;
00195 int NumberOfCellWeightArrays;
00196
00197
00198
00199
00200 vtkUnstructuredGrid *DataCache;
00201
00202
00203 int RemakeDataCacheFlag;
00204
00205 int RequestInformation(
00206 vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00207 int RequestData(
00208 vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00209
00210 private:
00211 vtkChacoReader(const vtkChacoReader&);
00212 void operator=(const vtkChacoReader&);
00213
00214 double ReadVal(FILE *infile, int *end_flag);
00215 vtkIdType ReadInt(FILE *infile, int *end_flag);
00216 void FlushLine( FILE *infile);
00217 void ResetInputBuffers();
00218
00219 char *Line;
00220 int Line_length;
00221 int Offset;
00222 int Break_pnt;
00223 int Save_pnt;
00224
00225 void ClearWeightArrayNames();
00226 };
00227
00228 #endif