medFileVersion version;
med_2_1::med_idt fid21;
- med_2_2::med_idt fid22;
+ med_2_3::med_idt fid22;
med_2_1::med_err ret21;
- med_2_2::med_err ret22;
+ med_2_3::med_err ret22;
med_2_1::med_int major21;
med_2_1::med_int minor21;
med_2_1::med_int release21;
- med_2_2::med_int major22;
- med_2_2::med_int minor22;
- med_2_2::med_int release22;
+ med_2_3::med_int major22;
+ med_2_3::med_int minor22;
+ med_2_3::med_int release22;
- med_2_2::med_mode_acces access22 = med_2_2::MED_LECTURE;
+ med_2_3::med_mode_acces access22 = med_2_3::MED_LECTURE;
med_2_1::med_mode_acces access21 = med_2_1::MED_LECT;
/*
throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.1 file closing");
/*
- Med Version 2.2 access to the file
+ Med Version 2.3 access to the file
*/
- fid22 = med_2_2::MEDouvrir((const_cast <char *> (fileName.c_str())),
+ fid22 = med_2_3::MEDouvrir((const_cast <char *> (fileName.c_str())),
access22);
if (fid22 < 0)
throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 access");
- ret22 = med_2_2::MEDversionLire(fid22,&major22,&minor22,&release22);
+ ret22 = med_2_3::MEDversionLire(fid22,&major22,&minor22,&release22);
if (ret22 < 0)
throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 version numbers reading");
release22 = 5;
}
- ret22 = med_2_2::MEDfermer(fid22);
+ ret22 = med_2_3::MEDfermer(fid22);
if (ret22 < 0)
throw MEDEXCEPTION("Problem in getMedFileVersion(const string &) Med file V2.2 file closing");
return version;
}
+
+//================================================================================
+/*!
+ * \brief return file mode access corresponding to MED_EN::med_mode_acces in given med version
+ * \param mode - either MED_LECT, MED_ECRI or MED_REMP
+ * \param medVersion - V21 or V22 or ??
+ * \retval int - file mode access
+ *
+ * To be used in MEDouvrir() call
+ */
+//================================================================================
+
+int MEDMEM::getMedAccessMode(MED_EN::med_mode_acces mode,
+ MED_EN::medFileVersion medVersion)
+ throw (MEDEXCEPTION)
+{
+ switch ( medVersion ) {
+ case V21:
+/*
+ from MEDouvrir.c:
+ switch(mode_acces)
+ {
+ case MED_LECT :
+ if (access(nom,F_OK))
+ return -1;
+ else
+ if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
+ return -1;
+ break;
+
+ case MED_ECRI :
+ if (access(nom,F_OK))
+ {
+ if ((fid = _MEDfichierCreer(nom)) < 0)
+ return -1;
+ }
+ else
+ if ((fid = _MEDfichierOuvrir(nom,mode_acces)) < 0)
+ return -1;
+ break;
+
+ case MED_REMP :
+ if ((fid = _MEDfichierCreer(nom)) < 0)
+ return -1;
+ break;
+*/
+ switch ( mode ) {
+ case MED_EN::MED_LECT: return med_2_1::MED_LECT;
+ case MED_EN::MED_ECRI: return med_2_1::MED_ECRI;
+ case MED_EN::MED_REMP: return med_2_1::MED_ECRI;
+ default:
+ throw MEDEXCEPTION("getMedAccessMode(): Wrong access mode");
+ }
+ case V22:
+/*
+ from med.h:
+ MED_LECTURE : Ouverture en lecture seule
+ MED_LECTURE_ECRITURE : Ouverture en lecture/ecriture, si un élément existe il est écrasé
+ MED_LECTURE_AJOUT : Ouverture en lecture/ecriture, si un élément existe une erreur est générée
+ MED_CREATION : Créer le fichier s'il n'existe pas, l'écrase sinon
+*/
+ switch ( mode ) {
+ case MED_EN::MED_LECT: return med_2_3::MED_LECTURE;
+ case MED_EN::MED_ECRI: return med_2_3::MED_LECTURE_ECRITURE;
+ case MED_EN::MED_REMP: return med_2_3::MED_LECTURE_ECRITURE;
+ case MED_EN::MED_CREA: return med_2_3::MED_CREATION;
+ default:
+ throw MEDEXCEPTION("getMedAccessMode(): Wrong access mode");
+ }
+ default:;
+ }
+ throw MEDEXCEPTION("getMedAccessMode(): Unknown med version");
+}