Salome HOME
Merge branch 'V9_2_BR'
[modules/kernel.git] / src / SALOMEDSImpl / SALOMEDSImpl_AttributeParameter.cxx
index b2e10d93fcecb86121b3d9e9187468fb7e55e5c7..b4eec6e628488c775be41720c0e463e3a7505207 100644 (file)
 std::string convertString(const std::string& S)
 {
   int length = S.size();
-  const char *s = S.c_str();
-  char *c = new char[3], *buffer = new char[length*3+1];
+  if ( length == 0 )
+    return "0";
+  char c[3], *buffer = new char[length*3+1];
   buffer[length*3] = (char)0;
   for(int i = 0, pos = 0; i<length; i++, pos+=3) {
-    int val = (int)s[i];
+    int val = (int)S[i];
     buffer[pos] = '%';
     sprintf(c, "%.2x", val);
     buffer[pos+1] = c[0]; 
@@ -49,7 +50,6 @@ std::string convertString(const std::string& S)
   }
 
   std::string RS(buffer); 
-  delete [] c;
   delete [] buffer;
   return RS;
 }
@@ -58,19 +58,19 @@ std::string convertString(const std::string& S)
 std::string restoreString(const std::string& S)
 {
   int length = S.size();
-  char *c = new char[3], *buffer = new char[length/3+1];
+  if ( length == 1 )
+    return "";
+  char c[3], *buffer = new char[length/3+1];
   buffer[length/3] = (char)0;
-  const char *s = S.c_str();
   for(int i = 0, pos = 0; i<length; i+=3, pos++) {
-    c[0] = s[i+1];
-    c[1] = s[i+2];
+    c[0] = S[i+1];
+    c[1] = S[i+2];
     c[2] = (char)0;
     int val = strtol(c, NULL, 16);
     buffer[pos] = (char)val;
   }
 
   std::string RS(buffer); 
-  delete [] c;
   delete [] buffer;
   return RS;
 }
@@ -424,7 +424,7 @@ bool SALOMEDSImpl_AttributeParameter::RemoveID(const std::string& theID, const P
 //=======================================================================
 SALOMEDSImpl_AttributeParameter* SALOMEDSImpl_AttributeParameter::GetFather()
 {
-  SALOMEDSImpl_AttributeParameter* aFather;
+  SALOMEDSImpl_AttributeParameter* aFather = 0;
   DF_Label L = Label();
   if(L.IsRoot()) return aFather;
 
@@ -457,7 +457,7 @@ bool SALOMEDSImpl_AttributeParameter::HasFather()
 //=======================================================================
 /*!
  * Function : IsRoot
- * Purpose  : Returns True is the attribute is highest in an hierachy
+ * Purpose  : Returns True is the attribute is highest in an hierarchy
  */
 //=======================================================================
 bool SALOMEDSImpl_AttributeParameter::IsRoot()
@@ -526,7 +526,7 @@ std::vector<std::string> SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter
   case PT_STRING: {
     if(_strings.size()) {
       anArray.resize(_strings.size());
-      for(std::map<std::string,std::string>::const_iterator p = _strings.begin(); p!= _strings.end(); p++) 
+      for(std::map<std::string,std::string>::const_iterator p = _strings.begin(); p!= _strings.end(); p++, i++
         anArray[i] = p->first;
     }
     break;
@@ -534,7 +534,7 @@ std::vector<std::string> SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter
   case PT_REALARRAY: {
     if(_realarrays.size()) {
       anArray.resize(_realarrays.size());
-      for(std::map< std::string, std::vector<double> >::const_iterator p = _realarrays.begin(); p!= _realarrays.end(); p++) 
+      for(std::map< std::string, std::vector<double> >::const_iterator p = _realarrays.begin(); p!= _realarrays.end(); p++, i++
         anArray[i] = p->first;
     }
     break;
@@ -542,7 +542,7 @@ std::vector<std::string> SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter
   case PT_INTARRAY: {
     if(_intarrays.size()) {
       anArray.resize(_intarrays.size());
-      for(std::map< std::string, std::vector<int> >::const_iterator p = _intarrays.begin(); p!= _intarrays.end(); p++) 
+      for(std::map< std::string, std::vector<int> >::const_iterator p = _intarrays.begin(); p!= _intarrays.end(); p++, i++
         anArray[i] = p->first;
     }
     break;
@@ -550,7 +550,7 @@ std::vector<std::string> SALOMEDSImpl_AttributeParameter::GetIDs(const Parameter
   case PT_STRARRAY: {
     if(_strarrays.size()) {
       anArray.resize(_strarrays.size());
-      for(std::map< std::string, std::vector<std::string> >::const_iterator p = _strarrays.begin(); p!= _strarrays.end(); p++) 
+      for(std::map< std::string, std::vector<std::string> >::const_iterator p = _strarrays.begin(); p!= _strarrays.end(); p++, i++
         anArray[i] = p->first;
     }
     break;
@@ -631,7 +631,6 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
   char *tmpBuffer = new char[255];
 
   buffer << _ints.size() << " ";
-
   for(std::map<std::string,int>::const_iterator p = _ints.begin(); p != _ints.end(); p++) {
     buffer << convertString(p->first) << " " << p->second << " ";
   }
@@ -644,7 +643,7 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
 
   buffer << _bools.size() << " ";
   for(std::map<std::string,bool>::const_iterator p = _bools.begin(); p != _bools.end(); p++) {
-     buffer << convertString(p->first) << " " << p->second << " ";
+    buffer << convertString(p->first) << " " << p->second << " ";
   }
 
   buffer << _strings.size() << " ";
@@ -655,9 +654,9 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
   buffer << _realarrays.size() << " ";
   for(std::map< std::string,std::vector<double> >::const_iterator p = _realarrays.begin(); p != _realarrays.end(); p++) {
     std::vector<double> v(p->second);
-    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), (int)v.size());
     buffer << tmpBuffer;
-    for(int i = 0; i<v.size(); i++) {
+    for(size_t i = 0; i<v.size(); i++) {
       sprintf(tmpBuffer, " %.64e ", v[i]);
       buffer << tmpBuffer;
     }
@@ -666,9 +665,9 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
   buffer << _intarrays.size() << " ";
   for(std::map< std::string,std::vector<int> >::const_iterator p = _intarrays.begin(); p != _intarrays.end(); p++) {
     std::vector<int> v(p->second);
-    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), (int)v.size());
     buffer << tmpBuffer;
-    for(int i = 0; i<v.size(); i++) {
+    for(size_t i = 0; i<v.size(); i++) {
       sprintf(tmpBuffer, " %d ", v[i]);
       buffer << tmpBuffer;
     }
@@ -677,18 +676,18 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
   buffer << _strarrays.size() << " ";
   for(std::map< std::string,std::vector<std::string> >::const_iterator p = _strarrays.begin(); p != _strarrays.end(); p++) {
     std::vector<std::string> v(p->second);
-    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), v.size());
+    sprintf(tmpBuffer, " %s %d ", convertString(p->first).c_str(), (int)v.size());
     buffer << tmpBuffer;
-    for(int i = 0; i<v.size(); i++) {
+    for(size_t i = 0; i<v.size(); i++) {
       buffer << " " << convertString(v[i]) << " ";
     }
   }
 
-  delete tmpBuffer;
+  delete [] tmpBuffer;
 
   std::string AS = buffer.str();
 
-  return AS; 
+  return AS;
 }
 
 //=======================================================================
@@ -697,8 +696,8 @@ std::string SALOMEDSImpl_AttributeParameter::Save()
  * Purpose  : Restores the attribute from the string
  */
 //=======================================================================
-void SALOMEDSImpl_AttributeParameter::Load(const std::string& theValue) 
-{ 
+void SALOMEDSImpl_AttributeParameter::Load(const std::string& theValue)
+{
   Backup();
 
   _ints.clear();