1 #include "MEDMEM_MedVersion.hxx"
3 #include "MEDMEM_Compatibility21_22.hxx"
5 using namespace MEDMEM;
6 using namespace MED_EN;
8 medFileVersion MEDMEM::getMedFileVersion(const string & fileName)
11 medFileVersion version;
13 med_2_1::med_idt fid21;
14 med_2_2::med_idt fid22;
16 med_2_1::med_err ret21;
17 med_2_2::med_err ret22;
19 med_2_1::med_int major21;
20 med_2_1::med_int minor21;
21 med_2_1::med_int release21;
23 med_2_2::med_int major22;
24 med_2_2::med_int minor22;
25 med_2_2::med_int release22;
27 med_2_2::med_mode_acces access22 = med_2_2::MED_LECTURE;
28 med_2_1::med_mode_acces access21 = med_2_1::MED_LECT;
31 Med Version 2.1 access to the file
34 fid21 = med_2_1::MEDouvrir((const_cast <char *> (fileName.c_str())),
38 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.1 access");
40 ret21 = med_2_1::MEDversionLire(fid21,&major21,&minor21,&release21);
43 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.1 version numbers reading");
45 if ((minor21 == -1) || (release21 == -1))
47 MESSAGE("getMedFileVersion the file may have been produced by a version 2.1.x x<5");
52 ret21 = med_2_1::MEDfermer(fid21);
55 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.1 file closing");
58 Med Version 2.2 access to the file
61 fid22 = med_2_2::MEDouvrir((const_cast <char *> (fileName.c_str())),
65 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 access");
67 ret22 = med_2_2::MEDversionLire(fid22,&major22,&minor22,&release22);
70 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 version numbers reading");
72 if ((minor22 == -1) || (release22 == -1))
74 MESSAGE("getMedFileVersion the file may have been produced by a version 2.1.x x<5");
79 ret22 = med_2_2::MEDfermer(fid22);
82 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 file closing");
84 if ((major21 != major22) || (minor21 != minor22) || (release21 != release22))
85 throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V21 and V22 version numbers are different");
87 MESSAGE("getMedFileVersion: status version 21 of the file major " << major21 << " minor " << minor21 << " release " << release21);
89 MESSAGE("getMedFileVersion: status version 22 of the file major " << major22 << " minor " << minor22 << " release " << release22);
101 MESSAGE("getMedFileVersion the version of the file is " << version);