Salome HOME
attempt #2 agy/med41
authorAnthony Geay <anthony.geay@edf.fr>
Fri, 3 Apr 2020 08:29:14 +0000 (10:29 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Fri, 3 Apr 2020 08:29:14 +0000 (10:29 +0200)
src/MEDWrapper/MED_Factory.cxx
src/MEDWrapper/MED_Wrapper.cxx
src/MEDWrapper/MED_Wrapper.hxx

index 1973127fb6251402c646b57ab23b5b072e367b60..278838a0c3b89e9933b22496820f56b34e6ac007 100644 (file)
@@ -194,22 +194,16 @@ namespace MED
       remove(fileName.c_str());
       isCreated = true;
     }
-    int minor = -1;
+    med_int wantedMajor = MED_MAJOR_NUM;
+    med_int wantedMinor = MED_MINOR_NUM;
     if (isCreated)
     {
-      med_int wantedMajor = MED_MAJOR_NUM;
-      med_int wantedMinor = MED_MINOR_NUM;
       if (theVersion > 0)
       {
         wantedMajor = theVersion/10;
         wantedMinor = theVersion%10;
       }
-      if (wantedMajor == MED_MAJOR_NUM) // the med file will be actually created
-      {
-        if (wantedMinor < MED_MINOR_NUM)
-          minor = wantedMinor;
-      }
     }
-    return new MED::TWrapper(fileName, true, minor);
+    return new MED::TWrapper(fileName, true, wantedMajor, wantedMinor);
   }
 }
index 85a8d9f35d1214b01962c4f13f3c2735f404f654..dc1e3f53fb6915ac0188a0fcd9c216324180d150 100644 (file)
@@ -78,13 +78,15 @@ namespace MED
     TFile(const TFile&);
 
   public:
-    TFile(const std::string& theFileName, TInt theMinor=-1):
+    TFile(const std::string& theFileName, TInt theMajor=-1, TInt theMinor=-1):
       myCount(0),
       myFid(0),
       myFileName(theFileName),
+      myMajor(theMajor),
       myMinor(theMinor)
     {
-      if ((myMinor < 0) || (myMinor > MED_MINOR_NUM)) myMinor = MED_MINOR_NUM;
+      if ((myMajor < 0) || (myMajor > MED_MAJOR_NUM)) myMajor = MED_MAJOR_NUM;
+      if ((myMinor < 0) || (myMajor == MED_MAJOR_NUM && myMinor > MED_MINOR_NUM)) myMinor = MED_MINOR_NUM;
     }
 
     ~TFile()
@@ -98,7 +100,7 @@ namespace MED
     {
       if (myCount++ == 0) {
         const char* aFileName = myFileName.c_str();
-        myFid = MEDfileVersionOpen(aFileName,med_access_mode(theMode), MED_MAJOR_NUM, myMinor, MED_RELEASE_NUM);
+        myFid = MEDfileVersionOpen(aFileName,med_access_mode(theMode), myMajor, myMinor, MED_RELEASE_NUM);
       }
       if (theErr)
         *theErr = TErr(myFid);
@@ -125,6 +127,7 @@ namespace MED
     TInt myCount;
     TIdt myFid;
     std::string myFileName;
+    TInt myMajor;
     TInt myMinor;
   };
 
@@ -187,8 +190,9 @@ namespace MED
 
   //---------------------------------------------------------------
   TWrapper
-  ::TWrapper(const std::string& theFileName, bool write, TInt theMinor):
-    myFile(new TFile(theFileName, theMinor)),
+  ::TWrapper(const std::string& theFileName, bool write, TInt theMajor, TInt theMinor):
+    myFile(new TFile(theFileName, theMajor, theMinor)),
+    myMajor(theMajor),
     myMinor(theMinor)
   {
     TErr aRet;
index 6761a19e82a8d8d9880da0e6e5084a8192e6e1ba..2d6a4ffca6588b01f8fdbd5f84ce11939651a0ef 100644 (file)
@@ -52,7 +52,7 @@ namespace MED
     TWrapper& operator=(const TWrapper&);
 
   public:
-    TWrapper(const std::string& theFileName, bool write, TInt theVersion=-1);
+    TWrapper(const std::string& theFileName, bool write, TInt theMajor=-1, TInt theVersion=-1);
 
     virtual
     ~TWrapper();
@@ -939,6 +939,7 @@ namespace MED
 
   protected:
     PFile myFile;
+    TInt myMajor;
     TInt myMinor;
   };