]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Dump Python extension. TG_DumpPython_Extension_2
authorrnv <rnv@opencascade.com>
Fri, 14 Nov 2008 08:10:04 +0000 (08:10 +0000)
committerrnv <rnv@opencascade.com>
Fri, 14 Nov 2008 08:10:04 +0000 (08:10 +0000)
src/SALOMEDSImpl/SALOMEDSImpl_Study.cxx
src/SALOMEDSImpl/SALOMEDSImpl_Tool.cxx
src/SALOMEDSImpl/SALOMEDSImpl_Tool.hxx

index e57143d20f18fcfeb913fe79e53a7fe654ff6559..ffedb4437954a262d433252c40fe6b6f45c74881 100644 (file)
@@ -43,6 +43,7 @@ using namespace std;
 #define DIRECTORYID       16661
 #define FILELOCALID       26662
 #define FILEID            "FILE: "
+#define VARIABLE_SEPARATOR ':'
 
 
 //============================================================================
@@ -1744,7 +1745,7 @@ bool SALOMEDSImpl_Study::FindVariableAttribute(SALOMEDSImpl_StudyBuilder* theStu
     {
       string aString = aStringAttr->Value();
 
-      vector<string> aVector = SALOMEDSImpl_Tool::splitString( aString, ':' );
+      vector<string> aVector = SALOMEDSImpl_Tool::splitStringWithEmpty( aString, VARIABLE_SEPARATOR );
       for( int i = 0, len = aVector.size(); i < len; i++ )
       {
        string aStr = aVector[i];
@@ -1796,7 +1797,7 @@ void SALOMEDSImpl_Study::ReplaceVariableAttribute(SALOMEDSImpl_StudyBuilder* the
       bool isChanged = false;
       string aNewString, aCurrentString = aStringAttr->Value();
 
-      vector<string> aVector = SALOMEDSImpl_Tool::splitString( aCurrentString, ':' );
+      vector<string> aVector = SALOMEDSImpl_Tool::splitStringWithEmpty( aCurrentString, VARIABLE_SEPARATOR );
       for( int i = 0, len = aVector.size(); i < len; i++ )
       {
        string aStr = aVector[i];
@@ -1807,7 +1808,7 @@ void SALOMEDSImpl_Study::ReplaceVariableAttribute(SALOMEDSImpl_StudyBuilder* the
        }
 
        aNewString.append( aStr );
-       if( i != len )
+       if( i != len - 1 )
          aNewString.append( ":" );
       }
 
index fcc1745e8b618b4bd3a60c960a593bbdfe1dfc1f..fcc481455f01506f85ffb7218071bf1b4427d271 100644 (file)
@@ -236,6 +236,34 @@ vector<string> SALOMEDSImpl_Tool::splitString(const string& theValue, char separ
   return vs;
 }
 
+//============================================================================
+// function : 
+// purpose  : The functions returns a list of substring of initial string 
+//            divided by given separator include empty strings
+//============================================================================
+vector<string> SALOMEDSImpl_Tool::splitStringWithEmpty(const string& theValue, char sep)
+{
+  vector<string> aResult;
+  if(theValue[0] == sep ) aResult.push_back(string());
+  int pos = theValue.find(sep);
+  if(pos < 0) {
+    aResult.push_back(theValue);
+    return aResult;
+  }
+
+  string s = theValue;
+  if(s[0] == sep) s = s.substr(1, s.size());
+  while((pos = s.find(sep)) >= 0) {
+    aResult.push_back(s.substr(0, pos));
+    s = s.substr(pos+1, s.size());
+  }
+
+  if(!s.empty() && s[0] != sep) aResult.push_back(s);
+  if(theValue[theValue.size()-1] == sep) aResult.push_back(string());
+
+  return aResult;
+}
+
 
 void SALOMEDSImpl_Tool::GetSystemDate(int& year, int& month, int& day, int& hours, int& minutes, int& seconds)
 {
index 6019376fbb64b75a459b5fcad943318933dbef67..ea53539fa7161de506b5130e6d58f892d299b79d 100644 (file)
@@ -61,6 +61,11 @@ public:
   //The functions returns a list of substring of initial string divided by given separator
   static std::vector<std::string> splitString(const std::string& theValue, char separator);
 
+  //The functions returns a list of substring of initial string divided by given separator, 
+  //include empty strings
+  static std::vector<std::string> splitStringWithEmpty(const std::string& theValue, char separator);
+  
+
   //Returns a system date  
   static void GetSystemDate(int& year, int& month, int& day, int& hours, int& minutes, int& seconds);