ESyS-Particle  4.0.1
MeshReader.h
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 
00014 #ifndef __MESH_READER_H
00015 #define __MESH_READER_H
00016 
00017 //-- Project includes
00018 #include "Model/MeshData.h"
00019 #include "Parallel/IterativeReader.h"
00020 
00021 //-- STL includes --
00022 #include <string>
00023 using std::string;
00024 
00025 namespace esys
00026 {
00027   namespace lsm 
00028   {
00037     class NodeReader : public IterativeReader<IStreamIterator<MeshNodeData> >
00038     {
00039     public:
00040       NodeReader(std::istream&);
00041       virtual void initialise();
00042     };
00043 
00044 
00053     class TriReader : public IterativeReader<IStreamIterator<MeshTriData> >
00054     {
00055     public:
00056       TriReader(std::istream&);
00057       virtual void initialise();
00058     };
00059 
00067     class MeshReader
00068     {
00069     private:
00070       class Impl;
00071       Impl *m_impl_ptr; // pointer to the implementation
00072 
00073     public:
00074       // types
00075       typedef NodeReader::Iterator NodeIterator;
00076       typedef TriReader::Iterator  TriIterator;
00077 
00078       // functions
00079       MeshReader(const string&);
00080       ~MeshReader();
00081 
00082       NodeIterator &getNodeIterator();
00083       TriIterator &getTriIterator();
00084     };
00085   }; // end namespace lsm
00086 }; // end namespace esys
00087 
00088 
00089 #endif // __MESH_READER_H