Salome HOME
Issue 0020349: compatibility python 2.6 in import_hook
[modules/kernel.git] / src / Batch / Batch_Parametre.cxx
index 47547061faa11aef144f1087a3e4cb11c988c3f6..c9d35f6026b2619ded746722cffed28ad27f3761 100644 (file)
@@ -1,3 +1,24 @@
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
 /*
  * Parametre.cxx : 
  *
  *
  */
 
-#include <map>
 #include "Batch_Versatile.hxx"
 #include "Batch_InvalidKeyException.hxx"
 #include "Batch_Parametre.hxx"
+
 using namespace std;
 
 // Definition des membres constants statiques
 // Definition des noms globaux pour les clefs en tant que references
 // TODO : supprimer les declarations statiques des clefs de la map
 def_static_MapKey(ACCOUNT);
+def_static_MapKey(ARGUMENTS);
 def_static_MapKey(CHECKPOINT);
 def_static_MapKey(CKPTINTERVAL);
 def_static_MapKey(CREATIONTIME);
 def_static_MapKey(EGROUP);
 def_static_MapKey(ELIGIBLETIME);
+def_static_MapKey(ENDTIME);
 def_static_MapKey(EUSER);
 def_static_MapKey(EXECUTABLE);
 def_static_MapKey(EXECUTIONHOST);
+def_static_MapKey(EXITCODE);
 def_static_MapKey(HOLD);
 def_static_MapKey(ID);
 def_static_MapKey(INFILE);
@@ -35,12 +59,13 @@ def_static_MapKey(MAXRAMSIZE);
 def_static_MapKey(MAXWALLTIME);
 def_static_MapKey(MODIFICATIONTIME);
 def_static_MapKey(NAME);
+def_static_MapKey(NBPROC);
 def_static_MapKey(OUTFILE);
 def_static_MapKey(PID);
 def_static_MapKey(QUEUE);
 def_static_MapKey(QUEUEDTIME);
 def_static_MapKey(SERVER);
-def_static_MapKey(STARTDATE);
+def_static_MapKey(STARTTIME);
 def_static_MapKey(STATE);
 def_static_MapKey(TEXT);
 def_static_MapKey(TMPDIR);
@@ -49,19 +74,24 @@ def_static_MapKey(USEDDISKSIZE);
 def_static_MapKey(USEDRAMSIZE);
 def_static_MapKey(USEDWALLTIME);
 def_static_MapKey(USER);
+def_static_MapKey(WORKDIR);
+def_static_MapKey(HOMEDIR);
 
 namespace Batch {
 
-       // Constructeur standard
-       // La map interne TypeMap possede les memes clefs que la map principale, mais les
-       // valeurs associees contiennent le type des clefs de la map principale ainsi que
-       // le nombre de valeurs autorisees dans l'objet Versatile (0=nombre quelconque,
-       // sinon valeur precisee)
+  // Constructeur standard
+  // La map interne TypeMap possede les memes clefs que la map principale, mais les
+  // valeurs associees contiennent le type des clefs de la map principale ainsi que
+  // le nombre de valeurs autorisees dans l'objet Versatile (0=nombre quelconque,
+  // sinon valeur precisee)
   Parametre::Parametre() : map< string, Versatile >()
   {
     TypeMap[ACCOUNT].type = STRING;
     TypeMap[ACCOUNT].maxelem = 1;
 
+    TypeMap[ARGUMENTS].type = STRING;
+    TypeMap[ARGUMENTS].maxelem = 0;
+
     TypeMap[CHECKPOINT].type = LONG;
     TypeMap[CHECKPOINT].maxelem = 1;
 
@@ -77,6 +107,9 @@ namespace Batch {
     TypeMap[ELIGIBLETIME].type = LONG;
     TypeMap[ELIGIBLETIME].maxelem = 1;
 
+    TypeMap[ENDTIME].type = LONG;
+    TypeMap[ENDTIME].maxelem = 1;
+
     TypeMap[EUSER].type = STRING;
     TypeMap[EUSER].maxelem = 1;
 
@@ -86,6 +119,9 @@ namespace Batch {
     TypeMap[EXECUTIONHOST].type = STRING;
     TypeMap[EXECUTIONHOST].maxelem = 0;
 
+    TypeMap[EXITCODE].type = LONG;
+    TypeMap[EXITCODE].maxelem = 1;
+
     TypeMap[HOLD].type = LONG;
     TypeMap[HOLD].maxelem = 1;
 
@@ -116,6 +152,9 @@ namespace Batch {
     TypeMap[NAME].type = STRING;
     TypeMap[NAME].maxelem = 1;
 
+    TypeMap[NBPROC].type = LONG;
+    TypeMap[NBPROC].maxelem = 1;
+
     TypeMap[OUTFILE].type = COUPLE;
     TypeMap[OUTFILE].maxelem = 0;
 
@@ -131,8 +170,8 @@ namespace Batch {
     TypeMap[SERVER].type = STRING;
     TypeMap[SERVER].maxelem = 1;
 
-    TypeMap[STARTDATE].type = LONG;
-    TypeMap[STARTDATE].maxelem = 1;
+    TypeMap[STARTTIME].type = LONG;
+    TypeMap[STARTTIME].maxelem = 1;
 
     TypeMap[STATE].type = STRING;
     TypeMap[STATE].maxelem = 1;
@@ -157,23 +196,29 @@ namespace Batch {
 
     TypeMap[USER].type = STRING;
     TypeMap[USER].maxelem = 1;
+
+    TypeMap[WORKDIR].type = STRING;
+    TypeMap[WORKDIR].maxelem = 1;
+
+    TypeMap[HOMEDIR].type = STRING;
+    TypeMap[HOMEDIR].maxelem = 1;
   }
 
-       // Operateur de recherche dans la map
-       // Cet operateur agit sur les objets NON CONSTANTS, il autorise la modification de
-       // la valeur associée à la clef car il retourne une reference non constante
+  // Operateur de recherche dans la map
+  // Cet operateur agit sur les objets NON CONSTANTS, il autorise la modification de
+  // la valeur associée à la clef car il retourne une reference non constante
   Versatile & Parametre::operator [] (const string & mk)
   {
-               // On controle que la clef est valide
+    // On controle que la clef est valide
     if (TypeMap.find(mk) == TypeMap.end()) throw InvalidKeyException(mk.c_str());
 
-               // On recherche la valeur associee...
+    // On recherche la valeur associee...
     Versatile & V = map< string, Versatile >::operator [] (mk);
 
-               // ... et on l'initialise systematiquement
-               // ATTENTION : si un probleme de type survient (ie, on stocke une valeur d'un type
-               // different de celui inscrit dans TypeMap) une exception TypeMismatchException est
-               // levee
+    // ... et on l'initialise systematiquement
+    // ATTENTION : si un probleme de type survient (ie, on stocke une valeur d'un type
+    // different de celui inscrit dans TypeMap) une exception TypeMismatchException est
+    // levee
     V.setName(mk);
     V.setType(TypeMap[mk].type);
     V.setMaxSize(TypeMap[mk].maxelem);
@@ -181,35 +226,36 @@ namespace Batch {
     return V;
   }
 
-       // Operateur de recherche dans la map
-       // Cet operateur agit sur les objets CONSTANTS
+  // Operateur de recherche dans la map
+  // Cet operateur agit sur les objets CONSTANTS
   const Versatile & Parametre::operator [] (const string & mk) const
   {
-               // On controle que la clef est valide
+    // On controle que la clef est valide
     if (TypeMap.find(mk) == TypeMap.end()) throw InvalidKeyException(mk.c_str());
  
-               // On recherche la valeur associee
-               Parametre::const_iterator it = find(mk);
+    // On recherche la valeur associee
+    Parametre::const_iterator it = find(mk);
+    if (it == end()) throw InvalidKeyException(mk.c_str());
     const Versatile & V = (*it).second;
 
     return V;
   }
 
-       // Operateur d'affectation
+  // Operateur d'affectation
   Parametre & Parametre::operator =(const Parametre & PM)
   {
-               // On ne reaffecte pas l'objet a lui-meme, sinon aie, aie, aie
+    // On ne reaffecte pas l'objet a lui-meme, sinon aie, aie, aie
     if (this == &PM) return *this;
 
-               // On efface toute la map
+    // On efface toute la map
     erase(begin(), end());
 
-               // On recopie la map interne
-               // Meme si cela ne sert a rien pour le moment car les maps internes sont identiques,
-               // il n'est pas exclu que dans un avenir proche elles puissent etre differentes
+    // On recopie la map interne
+    // Meme si cela ne sert a rien pour le moment car les maps internes sont identiques,
+    // il n'est pas exclu que dans un avenir proche elles puissent etre differentes
     (*this).TypeMap = PM.TypeMap;
 
-               // On recree la structure interne de la map avec les valeurs de celle passee en argument
+    // On recree la structure interne de la map avec les valeurs de celle passee en argument
     Parametre::const_iterator it;
     for(it=PM.begin(); it!=PM.end(); it++)
       insert(make_pair( (*it).first ,
@@ -219,26 +265,26 @@ namespace Batch {
     return *this;
   }
 
-       // Constructeur par recopie
+  // Constructeur par recopie
   Parametre::Parametre(const Parametre & PM)
   {
-               // inutile car l'objet est vierge : il vient d'etre cree
-               // On efface toute la map
+    // inutile car l'objet est vierge : il vient d'etre cree
+    // On efface toute la map
     // erase(begin(), end());
 
-               // On recopie la map interne
+    // On recopie la map interne
     (*this).TypeMap = PM.TypeMap;
 
-               // On cree la structure interne de la map avec les valeurs de celle passee en argument
-               Parametre::const_iterator it;
-               for(it=PM.begin(); 
-                               it!=PM.end(); 
-                               it++)
+    // On cree la structure interne de la map avec les valeurs de celle passee en argument
+    Parametre::const_iterator it;
+    for(it=PM.begin(); 
+       it!=PM.end(); 
+       it++)
       insert(
-                                                make_pair( 
-                                                                                        (*it).first ,
-                                                                                        Versatile( (*it).second)
-                                                                                        ) );
+            make_pair( 
+                      (*it).first ,
+                      Versatile( (*it).second)
+                      ) );
   }
 
   //   map< string, TypeParam > Parametre::getTypeMap() const