Index: /trunk/SophyaLib/BaseTools/datatype.cc
===================================================================
--- /trunk/SophyaLib/BaseTools/datatype.cc	(revision 1237)
+++ /trunk/SophyaLib/BaseTools/datatype.cc	(revision 1238)
@@ -9,19 +9,19 @@
 
 template <class T>
-DataType<T>::DataType()
+DataTypeInfo<T>::DataTypeInfo()
 {
 }
 
-string DataType<uint_1>::getTypeName() { return("uint_1"); }
-string DataType<uint_2>::getTypeName() { return("uint_2"); }
-string DataType<int_2>::getTypeName() { return("int_2"); }
-string DataType<int_4>::getTypeName() { return("int_4"); }
-string DataType<int_8>::getTypeName() { return("int_8"); }
-string DataType<uint_4>::getTypeName() { return("uint_4"); }
-string DataType<uint_8>::getTypeName() { return("uint_8"); }
-string DataType<r_4>::getTypeName() { return("r_4"); }
-string DataType<r_8>::getTypeName() { return("r_8"); }
-string DataType< complex<r_4> >::getTypeName() { return(" complex<r_4> "); }
-string DataType< complex<r_8> >::getTypeName() { return(" complex<r_8> "); }
+string DataTypeInfo<uint_1>::getTypeName() { return("uint_1"); }
+string DataTypeInfo<uint_2>::getTypeName() { return("uint_2"); }
+string DataTypeInfo<int_2>::getTypeName() { return("int_2"); }
+string DataTypeInfo<int_4>::getTypeName() { return("int_4"); }
+string DataTypeInfo<int_8>::getTypeName() { return("int_8"); }
+string DataTypeInfo<uint_4>::getTypeName() { return("uint_4"); }
+string DataTypeInfo<uint_8>::getTypeName() { return("uint_8"); }
+string DataTypeInfo<r_4>::getTypeName() { return("r_4"); }
+string DataTypeInfo<r_8>::getTypeName() { return("r_8"); }
+string DataTypeInfo< complex<r_4> >::getTypeName() { return(" complex<r_4> "); }
+string DataTypeInfo< complex<r_8> >::getTypeName() { return(" complex<r_8> "); }
 
 
@@ -82,28 +82,28 @@
 
 #ifdef __CXX_PRAGMA_TEMPLATES__
-#pragma define_template DataType<uint_1>
-#pragma define_template DataType<uint_2>
-#pragma define_template DataType<int_2>
-#pragma define_template DataType<int_4>
-#pragma define_template DataType<int_8>
-#pragma define_template DataType<uint_4>
-#pragma define_template DataType<uint_8>
-#pragma define_template DataType<r_4>
-#pragma define_template DataType<r_8>
-#pragma define_template DataType< complex<r_4> >
-#pragma define_template DataType< complex<r_8> >
+#pragma define_template DataTypeInfo<uint_1>
+#pragma define_template DataTypeInfo<uint_2>
+#pragma define_template DataTypeInfo<int_2>
+#pragma define_template DataTypeInfo<int_4>
+#pragma define_template DataTypeInfo<int_8>
+#pragma define_template DataTypeInfo<uint_4>
+#pragma define_template DataTypeInfo<uint_8>
+#pragma define_template DataTypeInfo<r_4>
+#pragma define_template DataTypeInfo<r_8>
+#pragma define_template DataTypeInfo< complex<r_4> >
+#pragma define_template DataTypeInfo< complex<r_8> >
 #endif
 
 #if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
-template class DataType<uint_1>;
-template class DataType<uint_2>;
-template class DataType<int_2>;
-template class DataType<int_4>;
-template class DataType<int_8>;
-template class DataType<uint_4>;
-template class DataType<uint_8>;
-template class DataType<r_4>;
-template class DataType<r_8>;
-template class DataType< complex<r_4> >;
-template class DataType< complex<r_8> >;
+template class DataTypeInfo<uint_1>;
+template class DataTypeInfo<uint_2>;
+template class DataTypeInfo<int_2>;
+template class DataTypeInfo<int_4>;
+template class DataTypeInfo<int_8>;
+template class DataTypeInfo<uint_4>;
+template class DataTypeInfo<uint_8>;
+template class DataTypeInfo<r_4>;
+template class DataTypeInfo<r_8>;
+template class DataTypeInfo< complex<r_4> >;
+template class DataTypeInfo< complex<r_8> >;
 #endif
Index: /trunk/SophyaLib/BaseTools/datatype.h
===================================================================
--- /trunk/SophyaLib/BaseTools/datatype.h	(revision 1237)
+++ /trunk/SophyaLib/BaseTools/datatype.h	(revision 1238)
@@ -14,8 +14,8 @@
 
 template <class T>
-class DataType {
+class DataTypeInfo {
 public:
   static string getTypeName();
-  DataType();
+  DataTypeInfo();
 };
 
Index: /trunk/SophyaLib/BaseTools/objlist.list
===================================================================
--- /trunk/SophyaLib/BaseTools/objlist.list	(revision 1237)
+++ /trunk/SophyaLib/BaseTools/objlist.list	(revision 1238)
@@ -15,4 +15,5 @@
 srandgen.o
 strutil.o
+strutilxx.o
 timing.o
 utils.o
Index: /trunk/SophyaLib/SUtils/strutilxx.cc
===================================================================
--- /trunk/SophyaLib/SUtils/strutilxx.cc	(revision 1238)
+++ /trunk/SophyaLib/SUtils/strutilxx.cc	(revision 1238)
@@ -0,0 +1,42 @@
+#include "machdefs.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <iostream.h>
+
+#include "strutilxx.h"
+
+
+void FillVStringFrString(string s,vector<string>& vs,char sep)
+// Use string "s" to fill vector of strings "vs"
+// considering char "sep" as a separator.
+// Vector is filled from its end (no reset done).
+// Tp write a "sep" char, use \'sep'
+// Warning: separator "sep" could not be set to '\'
+// Ex: sep=' ': s="aaa   bbb cc d " -> vs=(aaa,bbb,cc,d)
+// Ex: sep=';': s="aaa   ;bbb; cc;d " -> vs=(aaa   ,bbb, cc,d )
+// Ex: sep=';': s=";aaa\;bbb;;;ccc;ddd" -> vs=(aaa;bbb,ccc,ddd)
+// Ex: sep=';': s=";aaa\;bbb;;;ccc;ddd\" -> vs=(aaa;bbb,ccc,ddd\)
+{
+uint_4 ls = s.size();
+if(ls<=0 || sep=='\\') return;
+s += sep; // add a separator at the end
+const char* str = s.c_str();
+ls = strlen(str); // str[ls-1]==sep cf ci-dessus
+string dum = "";
+for(uint_4 i=0; i<ls; i++) {
+  if(i==0 && str[i]==sep) {
+    continue;
+  } else if(str[i]=='\\') {
+    if(str[i+1]!=sep || i==ls-2) dum += str[i];
+  } else if(str[i]!=sep) {
+    dum += str[i];
+  } else {  // C'est un "sep" mais est-ce vraiment un separateur?
+    if(str[i-1]=='\\' && i!=ls-1) dum += str[i];
+    else {  // C'est un separateur, ne delimite t-il pas d'autres separateurs?
+      if(dum.size()<=0) continue;
+      vs.push_back(dum);
+      dum = "";
+    }
+  }
+}
+}
Index: /trunk/SophyaLib/SUtils/strutilxx.h
===================================================================
--- /trunk/SophyaLib/SUtils/strutilxx.h	(revision 1238)
+++ /trunk/SophyaLib/SUtils/strutilxx.h	(revision 1238)
@@ -0,0 +1,10 @@
+#ifndef STRUTILXX_H_SEEN
+#define STRUTILXX_H_SEEN
+
+#include "machdefs.h"
+#include <vector>
+#include <string>
+
+void FillVStringFrString(string s,vector<string>& vs,char sep = ' ');
+
+#endif
