Salome HOME
Python 3: creation of encode/decode functions
authorGilles DAVID <gilles-g.david@edf.fr>
Thu, 1 Jun 2017 15:53:37 +0000 (17:53 +0200)
committerGilles DAVID <gilles-g.david@edf.fr>
Thu, 1 Jun 2017 15:53:37 +0000 (17:53 +0200)
15 files changed:
idl/SALOMEDS.idl
src/Basics/Basics_Utils.cxx
src/Basics/Basics_Utils.hxx
src/KERNEL_PY/batchmode_salome.py
src/KERNEL_PY/salome_study.py
src/KernelHelpers/KernelHelpersUseCases.cxx
src/KernelHelpers/Test/KernelHelpersUnitTests.cxx
src/SALOMEDS/SALOMEDS_Client.cxx
src/SALOMEDS/SALOMEDS_Study.cxx
src/SALOMEDS/SALOMEDS_StudyManager.cxx
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
src/SALOMEDS/SALOMEDS_StudyManager_i.hxx
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx
src/SALOMEDS/Test/SALOMEDSTest_AttributeComment.cxx

index f7fb5d26052690fc710b40249ff92b9a47281040..87a4f2df2113f8e2fa100d3acaef55c09fa4718f 100644 (file)
@@ -41,7 +41,7 @@ module SALOMEDS
 {
 /*! \brief Name of the file in which the %Study is saved.
 */
-  typedef string URL;
+  typedef wstring URL;
 
 /*! \brief Main identifier of an object in %SALOME application
 */
@@ -60,7 +60,7 @@ module SALOMEDS
 Since %SALOME is a multi-study application, it allows to open a lot of studies
 during each working session.
 */
-  typedef sequence<string> ListOfOpenStudies;
+  typedef sequence<URL> ListOfOpenStudies;
 //! List of file names
   typedef sequence<string> ListOfFileNames;
 //! List of modification dates of a study
@@ -146,7 +146,7 @@ during each working session.
 
    This is equivalent to the methods setName() & getName()
 */
-    attribute string     Name; // equivalent to setName() & getName()
+    attribute wstring     Name; // equivalent to setName() & getName()
 /*! \brief The ID of the %Study
 
    This is equivalent to the methods setID() & getID()
@@ -300,7 +300,7 @@ during each working session.
 
 /*! \brief  Indicate the file where the %study has been saved
 */
-    attribute string URL;
+    attribute wstring URL;
 
 /*! \brief List of %SObjects
 
@@ -868,7 +868,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 <em>See \ref example17 for an example of this method usage in batchmode of %SALOME application.</em>
 
 */
-    Study NewStudy(in string study_name) raises (SALOME::SALOME_Exception);
+    Study NewStudy(in wstring study_name) raises (SALOME::SALOME_Exception);
 
 /*! \brief Open a study
 
@@ -878,7 +878,7 @@ Searches for a definite %SObject with a definite GUID and returns True if it fin
 
 <em>See \ref example1 for an example of this method usage in batchmode of %SALOME application.</em>
 */
-    Study Open (in wstring aStudyUrl) raises (SALOME::SALOME_Exception);
+    Study Open (in URL aStudyUrl) raises (SALOME::SALOME_Exception);
 
 /*! \brief Closing the study
 
@@ -940,7 +940,7 @@ Gets the list of open studies
     among the session collection picking it by name.
     \param aStudyName The name of the study
 */
-    Study GetStudyByName  (in string aStudyName);
+    Study GetStudyByName  (in URL aStudyName);
 
 /*! \brief Getting a particular %Study picked by ID
 
index 73b4e800ee4bb566668877cfd708cee55bbd86ac..97d6c0b5fbb247d508ded5b24980f8caebaa6e4f 100644 (file)
@@ -106,6 +106,36 @@ namespace Kernel_Utils
     return guid;
   }
 
+  const wchar_t* decode(const char* encoded)
+  {
+    setlocale(LC_ALL, "");
+    size_t length = strlen(encoded) + sizeof(char);
+    wchar_t* decoded = new wchar_t[length];
+    memset( decoded, '\0', length);
+    mbstowcs(decoded, encoded, length);
+    return decoded;
+  }
+
+  const wchar_t* decode_s(std::string encoded)
+  {
+    return decode(encoded.c_str());
+  }
+
+  const char* encode(const wchar_t* decoded)
+  {
+    setlocale(LC_ALL, "");
+    size_t length = std::wcslen(decoded) + sizeof(wchar_t);
+    char* encoded = new char[length];
+    memset( encoded, '\0', length);
+    wcstombs(encoded, decoded, length);
+    return encoded;
+  }
+
+  std::string encode_s(const wchar_t* decoded)
+  {
+    return std::string(encode(decoded));
+  }
+
 #ifndef WIN32
   void print_traceback()
   {
index 5843afb7524c41a3232040f01c2e5edd05bb84ed..cef9dc3fc7947e38626166404276100f09b84683 100644 (file)
@@ -56,6 +56,11 @@ namespace Kernel_Utils
     ObjectdID       //!< Global usage object identifier ID
   };
 
+  const wchar_t* decode(const char* encoded);
+  const wchar_t* decode_s(std::string encoded);
+  const char* encode(const wchar_t* decoded);
+  std::string encode_s(const wchar_t* decoded);
+
   //! Get predefined GUID
   BASICS_EXPORT std::string GetGUID( GUIDtype );
 #ifndef WIN32
index 6cf554390338e88983aaca90531acd97a831880b..8e361316437f00fc4a04e877b8e421222b52b2ea 100755 (executable)
@@ -293,7 +293,7 @@ if myStudyManager is None:
 aListOfOpenStudies = myStudyManager.GetOpenStudies();
 myStudy = None;
 if len(aListOfOpenStudies) == 0 :
-    myStudy = myStudyManager.NewStudy("Study1")
+    myStudy = myStudyManager.NewStudy("étude")
 else:
     myStudyName = aListOfOpenStudies[0]
     myStudy = myStudyManager.GetStudyByName(myStudyName)
index 503dff8fd95024cb9b1e3d2dddb7ab6e91d2b517..4f62a413910f634cc1db0905824d00ed3267c015 100755 (executable)
@@ -299,6 +299,7 @@ def getActiveStudy(*args):
         if len(listOpenStudies) == 0:
             return None
         else:
+            print(listOpenStudies[0])
             s = myStudyManager.GetStudyByName(listOpenStudies[0])
             salome_study_ID = s._get_StudyId()
     if verbose(): print("--- Study Id ", salome_study_ID)
@@ -355,7 +356,7 @@ def setCurrentStudyId(*args):
 def createNewStudy():
     global myStudyManager
     print("createNewStudy")
-    aStudyName = "extStudy"
+    aStudyName = "étudeExt"
     theStudy = myStudyManager.NewStudy(aStudyName)
     theStudyId = theStudy._get_StudyId()
     print(aStudyName, theStudyId)
index 7feaf8a2dafc67d0e137f3052e78fc82852b90e1..030fd8ce11c74c7ea93d8cddcd22c24f00173803 100644 (file)
@@ -61,7 +61,7 @@ bool TEST_getLifeCycleCORBA() {
 }
 
 bool TEST_getStudyManager() {
-  SALOMEDS::Study_ptr myTestStudy = KERNEL::getStudyManager()->NewStudy("kerneltest");
+  SALOMEDS::Study_ptr myTestStudy = KERNEL::getStudyManager()->NewStudy(L"kerneltest");
   if ( CORBA::is_nil(myTestStudy) ) {
     return false;
   }
index a3aa4cbb72b2037b335bad20cdd215861b9788d1..ee92ec1e6e05449e775df11ec4893fc6667d3c65 100644 (file)
@@ -91,7 +91,7 @@ void KernelHelpersUnitTests::TEST_getStudyManager() {
     }
   #endif
 
-  SALOMEDS::Study_ptr myTestStudy = studyManager->NewStudy("kerneltest");
+  SALOMEDS::Study_ptr myTestStudy = studyManager->NewStudy(L"kerneltest");
   CPPUNIT_ASSERT(!CORBA::is_nil(myTestStudy));
 
   // One can use the study to store some general properties
index 2650e1d0af08cd53a290511af5a62a25f3fc0ada..31fe34be3f31ed7c55ed1272420bdcc6fe71ecfc 100644 (file)
@@ -30,6 +30,7 @@
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include "SALOMEDS_StudyManager_i.hxx"
 #include "SALOMEDS_AttributeName_i.hxx"
+#include "Basics_Utils.hxx"
 #include "utilities.h"
 #include "HDFOI.hxx"
 
@@ -90,7 +91,7 @@ static void Test(SALOMEDS::StudyManager_ptr myStudyMgr )
   try {
   char* name;
   MESSAGE("Create New Study Study1");
-  SALOMEDS::Study_var myStudy = myStudyMgr->NewStudy("Study1");
+  SALOMEDS::Study_var myStudy = myStudyMgr->NewStudy(L"Study1");
  
   MESSAGE("Create Builder ");
   SALOMEDS::StudyBuilder_var StudyBuild = myStudy->NewBuilder();
@@ -206,7 +207,7 @@ static void Test(SALOMEDS::StudyManager_ptr myStudyMgr )
 
   for (unsigned int ind = 0; ind < _list_open_studies->length();ind++)
     {
-      MESSAGE("Open studies list : " << _list_open_studies[ind]);  
+      MESSAGE("Open studies list : " << Kernel_Utils::encode(_list_open_studies[ind]));
     }
 
 
@@ -215,7 +216,7 @@ static void Test(SALOMEDS::StudyManager_ptr myStudyMgr )
   MESSAGE("GetStudyByName done");
   
   // Save as
-  myStudyMgr->SaveAs("/home/edeville/Study1.hdf",myStudy1, false);
+  myStudyMgr->SaveAs(L"/home/edeville/Study1.hdf",myStudy1, false);
 
   // Get Persistent Reference of the study test
   name = myStudy1->GetPersistentReference();
index 63d44b5ac2acb37fbfc6279e84fbeeea2295e5b9..d8a537c9584fcfeb161d8326defd4a826c8174af 100644 (file)
@@ -442,7 +442,7 @@ std::string SALOMEDS_Study::Name()
     SALOMEDS::Locker lock;
     aName = _local_impl->Name();
   }
-  else aName = _corba_impl->Name();
+  else aName = Kernel_Utils::encode_s(_corba_impl->Name());
   return aName;
 }
 
@@ -452,7 +452,7 @@ void SALOMEDS_Study::Name(const std::string& theName)
     SALOMEDS::Locker lock;
     _local_impl->Name(theName);
   }
-  else _corba_impl->Name((char*)theName.c_str());
+  else _corba_impl->Name(Kernel_Utils::decode_s(theName));
 }
 
 bool SALOMEDS_Study::IsSaved()
@@ -503,7 +503,18 @@ std::string SALOMEDS_Study::URL()
     SALOMEDS::Locker lock;
     aURL = _local_impl->URL();
   }
-  else aURL = _corba_impl->URL();
+  else {
+         wchar_t* wurl = _corba_impl->URL();
+
+         // Converts unicode url to encoded version
+         setlocale(LC_ALL, "");
+         size_t urlLen = std::wcslen(wurl);
+         char url[urlLen+1];
+         memset( url, 0, urlLen+1);
+         wcstombs(url, wurl, sizeof(url));
+
+         aURL = std::string(url);
+  }
   return aURL;
 }
 
@@ -513,7 +524,15 @@ void SALOMEDS_Study::URL(const std::string& url)
     SALOMEDS::Locker lock;
     _local_impl->URL(url);
   }
-  else _corba_impl->URL((char*)url.c_str());
+  else {
+         setlocale(LC_ALL, "");
+         size_t urlLen = url.size();
+         wchar_t wurl[urlLen+1];
+         memset( wurl, 0, urlLen+1);
+         mbstowcs(wurl, url.c_str(), sizeof(wurl));
+
+         _corba_impl->URL(wurl);
+  }
 }
 
 int SALOMEDS_Study::StudyId()
index 4dc29e939e34b312a158337cd8cfbbbdcdef8c1b..e584b39f8c85f4d9800b767aab563a79cf09f5d9 100644 (file)
@@ -105,7 +105,7 @@ _PTR(Study) SALOMEDS_StudyManager::NewStudy(const std::string& study_name)
   //SRN: Pure CORBA NewStudy as it does more initialization than the local one
   SALOMEDSClient_Study* aStudy = NULL;
 
-  SALOMEDS::Study_var aStudy_impl = _corba_impl->NewStudy((char*)study_name.c_str());
+  SALOMEDS::Study_var aStudy_impl = _corba_impl->NewStudy(Kernel_Utils::decode_s(study_name));
   if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
   aStudy = new SALOMEDS_Study(aStudy_impl);
 
@@ -151,14 +151,14 @@ bool SALOMEDS_StudyManager::SaveAs(const std::string& theUrl,  const _PTR(Study)
 {
   //SRN: Pure CORBA save as the save operation require CORBA in any case
   SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
-  return _corba_impl->SaveAs((char*)theUrl.c_str(), aStudy, theMultiFile);
+  return _corba_impl->SaveAs(Kernel_Utils::decode_s(theUrl), aStudy, theMultiFile);
 }
 
 bool SALOMEDS_StudyManager::SaveAsASCII(const std::string& theUrl,  const _PTR(Study)& theStudy, bool theMultiFile)
 {
   //SRN: Pure CORBA save as the save operation require CORBA in any case
   SALOMEDS::Study_var aStudy = _corba_impl->GetStudyByID(theStudy->StudyId());
-  return _corba_impl->SaveAsASCII((char*)theUrl.c_str(), aStudy, theMultiFile);
+  return _corba_impl->SaveAsASCII(Kernel_Utils::decode_s(theUrl), aStudy, theMultiFile);
 }
 
 std::vector<std::string> SALOMEDS_StudyManager::GetOpenStudies()
@@ -178,7 +178,7 @@ std::vector<std::string> SALOMEDS_StudyManager::GetOpenStudies()
     SALOMEDS::ListOfOpenStudies_var aSeq = _corba_impl->GetOpenStudies();
     aLength = aSeq->length();
     for(i = 0; i < aLength; i++)
-      aVector.push_back(aSeq[i].in());
+      aVector.push_back(Kernel_Utils::encode_s(aSeq[i].in()));
   }
   return aVector;
 }
@@ -194,7 +194,7 @@ _PTR(Study) SALOMEDS_StudyManager::GetStudyByName(const std::string& theStudyNam
     aStudy = new SALOMEDS_Study(aStudy_impl);
   }
   else  {
-    SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByName((char*)theStudyName.c_str());
+    SALOMEDS::Study_var aStudy_impl = _corba_impl->GetStudyByName(Kernel_Utils::decode_s(theStudyName));
     if(CORBA::is_nil(aStudy_impl)) return _PTR(Study)(aStudy);
     aStudy = new SALOMEDS_Study(aStudy_impl);
   }
index 58c7c5ea15009aa94eef16fd981fc1dfb5b36b16..3de6dbccedeb92ff74245e081e06fcc4d1781fa2 100644 (file)
@@ -110,7 +110,7 @@ void SALOMEDS_StudyManager_i::register_name(const char * name)
  *  Purpose  : Create a New Study of name study_name
  */
 //============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
+SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const wchar_t* study_name)
      throw(SALOME::SALOME_Exception)
 {
   SALOMEDS::Locker lock;
@@ -126,7 +126,7 @@ SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
     }
 #endif // !ALLOW_MULTI_STUDIES
 
-  SALOMEDSImpl_Study* aStudyImpl = _impl->NewStudy(study_name);
+  SALOMEDSImpl_Study* aStudyImpl = _impl->NewStudy(Kernel_Utils::encode(study_name));
   if(!aStudyImpl) {
     MESSAGE("NewStudy : Error : " << _impl->GetErrorCode());
     return SALOMEDS::Study::_nil();
@@ -143,7 +143,7 @@ SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::NewStudy(const char* study_name)
   if(!_name_service->Change_Directory("/Study"))
       MESSAGE( "Unable to access the study directory" )
   else
-      _name_service->Register(Study, study_name);
+      _name_service->Register(Study, Kernel_Utils::encode(study_name));
 
   // Assign the value of the IOR in the study->root
   CORBA::String_var IORStudy = _orb->object_to_string(Study);
@@ -232,8 +232,8 @@ void SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
 
   // Destroy study name in the naming service
   if(_name_service->Change_Directory("/Study")){
-    CORBA::String_var aString(aStudy->Name());
-    _name_service->Destroy_Name(aString.in());
+    CORBA::WString_var awString(aStudy->Name());
+    _name_service->Destroy_Name(Kernel_Utils::encode(awString.in()));
   }
 
   SALOMEDS::unlock();
@@ -285,30 +285,30 @@ CORBA::Boolean SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr aStudy, CO
  *  Purpose  : Save a study to the persistent reference aUrl
  */
 //============================================================================
-CORBA::Boolean SALOMEDS_StudyManager_i::SaveAs(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
+CORBA::Boolean SALOMEDS_StudyManager_i::SaveAs(const wchar_t* aWUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
   SALOMEDS::Locker lock;
 
   if(aStudy->_is_nil()) {
-    MESSAGE("SaveASCII error: Study is null");
+    MESSAGE("SaveAs error: Study is null");
     return false;
   }
 
   SALOMEDSImpl_Study* aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
-  return _impl->SaveAs(std::string(aUrl), aStudyImpl, _factory, theMultiFile);
+  return _impl->SaveAs(std::string(Kernel_Utils::encode(aWUrl)), aStudyImpl, _factory, theMultiFile);
 }
 
-CORBA::Boolean SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
+CORBA::Boolean SALOMEDS_StudyManager_i::SaveAsASCII(const wchar_t* aWUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
   SALOMEDS::Locker lock;
 
   if(aStudy->_is_nil()) {
-    MESSAGE("SaveASCII error: Study is null");
+    MESSAGE("SaveAsASCII error: Study is null");
     return false;
   }
 
   SALOMEDSImpl_Study* aStudyImpl = _impl->GetStudyByID(aStudy->StudyId());
-  return _impl->SaveAsASCII(std::string(aUrl), aStudyImpl, _factory, theMultiFile);
+  return _impl->SaveAsASCII(std::string(Kernel_Utils::encode(aWUrl)), aStudyImpl, _factory, theMultiFile);
 }
 
 //============================================================================
@@ -334,8 +334,9 @@ SALOMEDS::ListOfOpenStudies*  SALOMEDS_StudyManager_i::GetOpenStudies()
     {
       for (unsigned int ind=0; ind < aLength; ind++)
         {
-          _list_open_studies[ind] = CORBA::string_dup(anOpened[ind]->Name().c_str());
-          SCRUTE(_list_open_studies[ind]) ;
+          SCRUTE(anOpened[ind]->Name()) ;
+          _list_open_studies[ind] = CORBA::wstring_dup(Kernel_Utils::decode_s(anOpened[ind]->Name()));
+          SCRUTE(Kernel_Utils::encode(_list_open_studies[ind])) ;
         }
     }
   return _list_open_studies._retn();
@@ -346,11 +347,11 @@ SALOMEDS::ListOfOpenStudies*  SALOMEDS_StudyManager_i::GetOpenStudies()
  *  Purpose  : Get a study from its name
  */
 //============================================================================
-SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByName(const char* aStudyName)
+SALOMEDS::Study_ptr SALOMEDS_StudyManager_i::GetStudyByName(const wchar_t* aStudyName)
 {
   SALOMEDS::Locker lock;
 
-  SALOMEDSImpl_Study* aStudyImpl = _impl->GetStudyByName(std::string(aStudyName));
+  SALOMEDSImpl_Study* aStudyImpl = _impl->GetStudyByName(Kernel_Utils::encode_s(aStudyName));
 
   if (!aStudyImpl)
   {
index 51830f941e9c13d13160a2fe74caf366ca2b5314..c3ffa5a71747da692c3a3263f0e0b6f0238af301 100644 (file)
@@ -82,7 +82,7 @@ public:
     \param char* arguments, the new study name
     \return Study_ptr arguments
   */
-  virtual SALOMEDS::Study_ptr NewStudy(const char* study_name) throw (SALOME::SALOME_Exception);
+  virtual SALOMEDS::Study_ptr NewStudy(const wchar_t* study_name) throw (SALOME::SALOME_Exception);
 
   //! method to Open a Study from it's persistent reference
   /*!
@@ -111,8 +111,8 @@ public:
     \param char* arguments, the new URL of the study
     \param Study_ptr arguments
   */
-  virtual CORBA::Boolean SaveAs(const char* aUrl,  SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
-  virtual CORBA::Boolean SaveAsASCII(const char* aUrl,  SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
+  virtual CORBA::Boolean SaveAs(const wchar_t* aUrl,  SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
+  virtual CORBA::Boolean SaveAsASCII(const wchar_t* aUrl,  SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile);
 
  //! method to Get name list of open studies in the session
   /*!
@@ -125,7 +125,7 @@ public:
     \param char* arguments, the study name
     \return Study_ptr arguments
   */
-  virtual SALOMEDS::Study_ptr GetStudyByName(const char* aStudyName) ;
+  virtual SALOMEDS::Study_ptr GetStudyByName(const wchar_t* aStudyName) ;
 
   //! method to get a Study from it's ID
   /*!
index 921c9b34bacfc7c38066ac30e244e070239faf2f..8b23183ff50e32f4fc6ca9e1a52e81eac857c1e5 100644 (file)
@@ -744,11 +744,11 @@ SALOMEDS::StudyBuilder_ptr SALOMEDS_Study_i::NewBuilder()
  *  Purpose  : get study name
  */
 //============================================================================
-char* SALOMEDS_Study_i::Name()
+wchar_t* SALOMEDS_Study_i::Name()
 {
   SALOMEDS::Locker lock; 
   // Name is specified as IDL attribute: user exception cannot be raised
-  return CORBA::string_dup(_impl->Name().c_str());
+  return CORBA::wstring_dup(Kernel_Utils::decode_s(_impl->Name()));
 }
 
 //============================================================================
@@ -756,11 +756,11 @@ char* SALOMEDS_Study_i::Name()
  *  Purpose  : set study name
  */
 //============================================================================
-void SALOMEDS_Study_i::Name(const char* name)
+void SALOMEDS_Study_i::Name(const wchar_t* wname)
 {
-  SALOMEDS::Locker lock;  
+  SALOMEDS::Locker lock;
   // Name is specified as IDL attribute: user exception cannot be raised
-  _impl->Name(std::string(name));
+  _impl->Name(Kernel_Utils::encode_s(wname));
 }
 
 //============================================================================
@@ -823,11 +823,11 @@ void SALOMEDS_Study_i::Modified()
  *  Purpose  : get URL of the study (persistent reference of the study)
  */
 //============================================================================
-char* SALOMEDS_Study_i::URL()
+wchar_t* SALOMEDS_Study_i::URL()
 {
-  SALOMEDS::Locker lock; 
+  SALOMEDS::Locker lock;
   // URL is specified as IDL attribute: user exception cannot be raised
-  return CORBA::string_dup(_impl->URL().c_str());
+  return CORBA::wstring_dup(Kernel_Utils::decode_s(_impl->URL()));
 }
 
 //============================================================================
@@ -835,11 +835,11 @@ char* SALOMEDS_Study_i::URL()
  *  Purpose  : set URL of the study (persistent reference of the study)
  */
 //============================================================================
-void SALOMEDS_Study_i::URL(const char* url)
+void SALOMEDS_Study_i::URL(const wchar_t* wurl)
 {
   SALOMEDS::Locker lock; 
   // URL is specified as IDL attribute: user exception cannot be raised
-  _impl->URL(std::string((char*)url));
+  _impl->URL(Kernel_Utils::encode_s(wurl));
 }
 
 CORBA::Short SALOMEDS_Study_i::StudyId()
index a767e6414162f8bad9fe11e04bebfbc20df52160..2edf8382500c5dbe9cd4455ebe425da47bc0f845 100644 (file)
@@ -204,13 +204,13 @@ public:
   /*!
     \return char* arguments, the study name
   */
-  virtual char* Name();
+  virtual wchar_t* Name();
 
   //! method to set study name
   /*!
     \param name char* arguments, the study name
   */
-  virtual void  Name(const char* name);
+  virtual void  Name(const wchar_t* name);
 
   //! method to get if study has been saved
   /*!
@@ -237,13 +237,13 @@ public:
   /*!
     \return char* arguments, the study URL 
   */
-  virtual char* URL();
+  virtual wchar_t* URL();
 
  //! method to set URL of the study
   /*!
     \param url char* arguments, the study URL
   */
-  virtual void  URL(const char* url);
+  virtual void  URL(const wchar_t* url);
 
   virtual CORBA::Short StudyId();
   virtual void  StudyId(CORBA::Short id);
index 6c93cd649dbdcf287a5e8fb53a1ea19f3c72fdae..9c57a7d10b808ecd75d774c79ed9a2cc6822ce53 100755 (executable)
@@ -25,6 +25,8 @@
  * Use code of SALOMEDS_AttributeComment.cxx
  */
 
+//#include "Basics_Utils.hxx"
+
 void SALOMEDSTest::testAttributeComment()
 {
   //Create or find the Study manager
@@ -39,6 +41,7 @@ void SALOMEDSTest::testAttributeComment()
     study = sm->NewStudy("Test");
   else
     study = sm->GetStudyByName(ost[0]);
+//  study = sm->GetStudyByName(Kernel_Utils::decode_s(ost[0]));
 
   CPPUNIT_ASSERT(study);