00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MESH_FORMAT_READER_HPP
00021 #define MESH_FORMAT_READER_HPP
00022
00023 #include <MeshReader.hpp>
00024
00025 #include <set>
00026 #include <cstdio>
00027
00037 class MeshFormatReader
00038 : public MeshReader
00039 {
00040 private:
00041 struct VertexError {};
00042
00047 enum KeywordType {
00048 EndOfFile,
00049 Unknown,
00050 MeshVersionFormatted,
00051 MeshDimension,
00052 Vertices,
00053 Triangles,
00054 Quadrilaterals,
00055 Tetrahedra,
00056 Hexahedra,
00057 Normals,
00058 Tangents,
00059 Corners,
00060 Edges,
00061 Ridges
00062 };
00063
00068 typedef std::map<std::string, int> KeywordList;
00069
00070 KeywordList __keywordList;
00076 typedef std::pair<std::string, int> Keyword;
00077
00082 void __skipComments();
00083
00089 MeshFormatReader::Keyword __nextKeyword();
00090
00096 inline void __checkVertex(const size_t& i);
00097
00103 inline size_t __getVertexNumber();
00104
00109 void __getVertices();
00110
00115 void __readVertices();
00116
00121 void __readHexahedra();
00122
00127 void __readQuadrilaterals();
00128
00133 void __readTetrahedra();
00134
00139 void __readTriangles();
00140
00145 void __readElements();
00146
00152 MeshFormatReader(const MeshFormatReader& M);
00153
00160 void __writeReferences(const std::set<size_t>& references,
00161 std::string objectName);
00162 public:
00163
00169 MeshFormatReader(const std::string & s);
00170
00175 ~MeshFormatReader()
00176 {
00177 ;
00178 }
00179 };
00180
00181 #endif // MESH_FORMAT_READER_HPP