00001 #ifndef __vtkExodusIIReaderVariableCheck_h
00002 #define __vtkExodusIIReaderVariableCheck_h
00003
00004 #include "vtkExodusIIReaderPrivate.h"
00005
00006 #include <vtksys/RegularExpression.hxx>
00007 #include <vtksys/String.hxx>
00008 #include <vtkstd/vector>
00009 #include <vtkstd/set>
00010
00017 class vtkExodusIIReaderVariableCheck
00018 {
00019 public:
00021 virtual bool Start( vtksys_stl::string name, const int* truth, int numTruth );
00023 virtual bool StartInternal( vtksys_stl::string name, const int* truth, int numTruth ) = 0;
00025 virtual bool Add( vtksys_stl::string name, const int* truth ) = 0;
00027 virtual vtkstd::vector<vtksys_stl::string>::size_type Length();
00029 virtual int Accept(
00030 vtkstd::vector<vtkExodusIIReaderPrivate::ArrayInfoType>& arr,
00031 int startIndex, vtkExodusIIReaderPrivate* priv, int objtyp );
00032
00033 protected:
00034 vtkExodusIIReaderVariableCheck();
00035 virtual ~vtkExodusIIReaderVariableCheck();
00039 bool CheckTruth( const int* truth );
00040 bool UniquifyName(
00041 vtkExodusIIReaderPrivate::ArrayInfoType& ainfo,
00042 vtkstd::vector<vtkExodusIIReaderPrivate::ArrayInfoType>& arrays );
00043
00044 int GlomType;
00045 vtkstd::vector<int> SeqTruth;
00046 vtksys_stl::string Prefix;
00047 vtkstd::vector<vtksys_stl::string> OriginalNames;
00048 };
00049
00051 class vtkExodusIIReaderScalarCheck : public vtkExodusIIReaderVariableCheck
00052 {
00053 public:
00054 vtkExodusIIReaderScalarCheck();
00055 virtual bool StartInternal( vtksys_stl::string name, const int*, int );
00056 virtual bool Add( vtksys_stl::string, const int* );
00057 };
00058
00060 class vtkExodusIIReaderVectorCheck : public vtkExodusIIReaderVariableCheck
00061 {
00062 public:
00063 vtkExodusIIReaderVectorCheck( const char* seq, int n );
00064 virtual bool StartInternal( vtksys_stl::string name, const int*, int );
00065 virtual bool Add( vtksys_stl::string name, const int* truth );
00066 virtual vtkstd::vector<vtksys_stl::string>::size_type Length();
00067 protected:
00068 vtksys_stl::string Endings;
00069 bool StillAdding;
00070 };
00071
00078 class vtkExodusIIReaderTensorCheck : public vtkExodusIIReaderVariableCheck
00079 {
00080 public:
00081 vtkExodusIIReaderTensorCheck( const char* seq, int n, int rank, int dim );
00082 virtual bool StartInternal( vtksys_stl::string name, const int*, int );
00083 virtual bool Add( vtksys_stl::string name, const int* truth );
00084 virtual vtkstd::vector<vtksys_stl::string>::size_type Length();
00085 protected:
00086 vtksys_stl::string Endings;
00087 vtkTypeUInt64 NumEndings;
00088 int Dimension;
00089 int Rank;
00090 bool StillAdding;
00091 };
00092
00094 class vtkExodusIIReaderIntPointCheck : public vtkExodusIIReaderVariableCheck
00095 {
00096 public:
00097 vtkExodusIIReaderIntPointCheck();
00098 virtual bool StartInternal( vtksys_stl::string name, const int*, int );
00099 virtual bool Add( vtksys_stl::string name, const int* );
00100 virtual vtkstd::vector<vtksys_stl::string>::size_type Length();
00101
00102
00103
00104
00105
00106
00107 protected:
00108 bool StartIntegrationPoints( vtksys_stl::string cellType, vtksys_stl::string iptName );
00109 bool AddIntegrationPoint( vtksys_stl::string iptName );
00110
00111 vtksys::RegularExpression RegExp;
00112 vtksys_stl::string VarName;
00113 vtksys_stl::string CellType;
00114 vtkstd::vector<int> IntPtMin;
00115 vtkstd::vector<int> IntPtMax;
00116 vtkstd::set<vtksys_stl::string> IntPtNames;
00117 vtkTypeUInt64 Rank;
00118 bool StillAdding;
00119 };
00120
00121 #endif // __vtkExodusIIReaderVariableCheck_h