1 #ifndef MED_MESH_DRIVER_HXX
2 #define MED_MESH_DRIVER_HXX
6 #include "MEDMEM_define.hxx"
7 #include "MEDMEM_GenDriver.hxx"
9 #include "MEDMEM_STRING.hxx"
10 #include "MEDMEM_Exception.hxx"
11 #include "utilities.h"
17 Generic part : implement open and close methods.
26 class MED_MESH_DRIVER : public GENDRIVER
31 string _meshName; // const ?
32 int _meshNum; // INUTILE ?
44 MED_MESH_DRIVER(const string & fileName,
46 MED_EN::med_mode_acces accessMode) ;
50 MED_MESH_DRIVER(const MED_MESH_DRIVER & driver) ;
55 virtual ~MED_MESH_DRIVER() ;
57 virtual void open() = 0;
58 virtual void close() = 0;
60 virtual void write( void ) const = 0 ;
61 virtual void read ( void ) = 0 ;
64 Set the name of the MESH asked in file.
66 It could be different than the name of the MESH object.
68 virtual void setMeshName(const string & meshName) ;
70 Get the name of the MESH asked in file.
72 virtual string getMeshName() const ;
75 virtual GENDRIVER * copy ( void ) const = 0 ;
81 Driver Med for MESH : Read only.
83 Implement read method.
87 class IMED_MESH_RDONLY_DRIVER : public virtual MED_MESH_DRIVER
95 IMED_MESH_RDONLY_DRIVER() ;
99 IMED_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh) ;
103 IMED_MESH_RDONLY_DRIVER(const IMED_MESH_RDONLY_DRIVER & driver) ;
105 // CREER UNE METHODE POUR LIRE LA LISTE DES MAILLAGES .....
107 Return a MEDEXCEPTION : it is the read-only driver.
109 void write( void ) const;
112 // virtual int getCOORDINATE() = 0 ;
113 // virtual int getCONNECTIVITY() = 0 ;
114 // virtual int getFAMILY() = 0 ;
115 // virtual int getNodalConnectivity(CONNECTIVITY * Connectivity) = 0 ;
116 int getDescendingConnectivity(CONNECTIVITY * Connectivity);
117 // virtual int getNodesFamiliesNumber(int * MEDArrayNodeFamily) = 0 ;
118 // virtual int getCellsFamiliesNumber(int** Arrays, CONNECTIVITY* Connectivity, MED_EN::medEntityMesh entity) = 0 ;
119 void updateFamily() ;
120 void buildAllGroups(vector<GROUP*> & Groups, vector<FAMILY*> & Families) ;
121 // virtual void getGRID () = 0 ;
123 friend class MED_MESH_RDONLY_DRIVER;
129 Driver Med for MESH : Write only.
131 Implement write method.
135 class IMED_MESH_WRONLY_DRIVER : public virtual MED_MESH_DRIVER {
142 IMED_MESH_WRONLY_DRIVER() ;
146 IMED_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh) ;
150 IMED_MESH_WRONLY_DRIVER(const IMED_MESH_WRONLY_DRIVER & driver) ;
155 virtual ~IMED_MESH_WRONLY_DRIVER() ;
158 Return a MEDEXCEPTION : it is the write-only driver.
163 // virtual int writeCoordinates () const = 0 ;
164 // virtual int writeConnectivities (MED_EN::medEntityMesh entity) const = 0 ;
165 // virtual int writeFamilyNumbers () const = 0 ;
166 // virtual int writeFamilies (vector<FAMILY*> & families) const = 0 ;
167 // virtual int writeGRID() const = 0 ;
169 friend class MED_MESH_WRONLY_DRIVER;
175 Driver Med for MESH : Read write.
176 - Use read method from MED_MESH_RDONLY_DRIVER
177 - Use write method from MED_MESH_WRONLY_DRIVER
181 class IMED_MESH_RDWR_DRIVER : public virtual IMED_MESH_RDONLY_DRIVER, public virtual IMED_MESH_WRONLY_DRIVER {
188 IMED_MESH_RDWR_DRIVER() ;
192 IMED_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh) ;
196 IMED_MESH_RDWR_DRIVER(const IMED_MESH_RDWR_DRIVER & driver) ;
201 ~IMED_MESH_RDWR_DRIVER() ;
203 friend class MED_MESH_RDWR_DRIVER;
207 class MED_MESH_RDONLY_DRIVER : public virtual IMED_MESH_RDONLY_DRIVER
210 MED_MESH_RDONLY_DRIVER();
211 MED_MESH_RDONLY_DRIVER(const string & fileName, MESH * ptrMesh);
212 MED_MESH_RDONLY_DRIVER(const MED_MESH_RDONLY_DRIVER & driver);
213 ~MED_MESH_RDONLY_DRIVER();
214 void setMeshName(const string & meshName);
215 string getMeshName() const;
216 void write( void ) const;
221 GENDRIVER * _concreteMeshDrv;
222 // int getCOORDINATE();
223 // int getCONNECTIVITY();
225 // int getNodalConnectivity(CONNECTIVITY * Connectivity);
226 // int getDescendingConnectivity(CONNECTIVITY * Connectivity);
227 // int getNodesFamiliesNumber(int * MEDArrayNodeFamily);
228 // int getCellsFamiliesNumber(int** Arrays, CONNECTIVITY* Connectivity, MED_EN::medEntityMesh entity);
230 GENDRIVER * copy ( void ) const;
233 class MED_MESH_WRONLY_DRIVER : public virtual IMED_MESH_WRONLY_DRIVER {
235 MED_MESH_WRONLY_DRIVER();
236 MED_MESH_WRONLY_DRIVER(const string & fileName, MESH * ptrMesh);
237 MED_MESH_WRONLY_DRIVER(const MED_MESH_WRONLY_DRIVER & driver);
238 ~MED_MESH_WRONLY_DRIVER();
239 void setMeshName(const string & meshName);
240 string getMeshName() const;
242 void write( void ) const;
246 GENDRIVER * _concreteMeshDrv;
247 // int writeCoordinates () const;
248 // int writeConnectivities (MED_EN::medEntityMesh entity) const;
249 // int writeFamilyNumbers () const;
250 // int writeFamilies (vector<FAMILY*> & families) const;
251 // int writeGRID() const;
252 GENDRIVER * copy ( void ) const;
255 class MED_MESH_RDWR_DRIVER : public IMED_MESH_RDWR_DRIVER {
257 MED_MESH_RDWR_DRIVER();
258 MED_MESH_RDWR_DRIVER(const string & fileName, MESH * ptrMesh);
259 MED_MESH_RDWR_DRIVER(const MED_MESH_RDWR_DRIVER & driver);
260 ~MED_MESH_RDWR_DRIVER();
261 void setMeshName(const string & meshName);
262 string getMeshName() const;
264 void write( void ) const;
268 GENDRIVER * _concreteMeshDrv;
269 // int getCOORDINATE();
270 // int getCONNECTIVITY();
272 // int getNodalConnectivity(CONNECTIVITY * Connectivity);
273 // int getDescendingConnectivity(CONNECTIVITY * Connectivity);
274 // int getNodesFamiliesNumber(int * MEDArrayNodeFamily);
275 // int getCellsFamiliesNumber(int** Arrays, CONNECTIVITY* Connectivity, MED_EN::medEntityMesh entity);
277 // int writeCoordinates () const;
278 // int writeConnectivities (MED_EN::medEntityMesh entity) const;
279 // int writeFamilyNumbers () const;
280 // int writeFamilies (vector<FAMILY*> & families) const;
281 // int writeGRID() const;
282 GENDRIVER * copy ( void ) const;
287 #endif /* MED_MESH_DRIVER_HXX */