]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Edit createStudy method
authormpa <mpa@opencascade.com>
Thu, 3 Nov 2016 13:51:42 +0000 (16:51 +0300)
committermpa <mpa@opencascade.com>
Thu, 3 Nov 2016 13:51:42 +0000 (16:51 +0300)
src/SALOMEDS/SALOMEDS.cxx
src/SALOMEDSClient/SALOMEDSClient_ClientFactory.cxx
src/SALOMEDSClient/SALOMEDSClient_ClientFactory.hxx

index 9d8112092dbe955994ac7f038265a3a116c4e805..e228a6161b33d3522d553524112fd20718bacb26 100644 (file)
@@ -104,22 +104,24 @@ extern "C"
   }
 
   SALOMEDS_EXPORT
-  SALOMEDSClient_Study* CreateStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa)
+  void CreateStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa)
   {
     SALOME_NamingService namingService(orb);
     CORBA::Object_var obj = namingService.Resolve( "/Study" );
     SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow( obj );
-    SALOMEDS_Study_i* aStudy_i;
     if( CORBA::is_nil(aStudy) ) {
-      aStudy_i = new SALOMEDS_Study_i(orb);
+      SALOMEDS_Study_i* aStudy_i = new SALOMEDS_Study_i(orb);
 
       // Activate the objects.  This tells the POA that the objects are ready to accept requests.
       PortableServer::ObjectId_var aStudy_iid =  root_poa->activate_object(aStudy_i);
       aStudy = aStudy_i->_this();
       namingService.Register(aStudy.in(), "/Study");
+
+      // Assign the value of the IOR in the study->root
+      CORBA::String_var IORStudy = orb->object_to_string(aStudy);
+      aStudy_i->GetImpl()->SetTransientReference((char*)IORStudy.in());
+      aStudy_i->_remove_ref();
     }
-    aStudy_i->_remove_ref();
-    return NULL;
   }
 
   SALOMEDS_EXPORT
index 76f5221fffeb6fe94e7ab37306577ce27a50e5de..b75cf08438068efa93a5bb0c80f6bfb61462e94a 100644 (file)
@@ -45,7 +45,7 @@ static void* _libHandle = NULL;
 typedef SALOMEDSClient_SObject* (*SOBJECT_FACTORY_FUNCTION) (SALOMEDS::SObject_ptr);
 typedef SALOMEDSClient_SComponent* (*SCOMPONENT_FACTORY_FUNCTION) (SALOMEDS::SComponent_ptr);
 typedef SALOMEDSClient_Study* (*STUDY_FACTORY_FUNCTION) (SALOMEDS::Study_ptr);
-typedef SALOMEDSClient_Study* (*STUDY_CREATE_FUNCTION) (CORBA::ORB_ptr, PortableServer::POA_ptr);
+typedef void                  (*STUDY_CREATE_FUNCTION) (CORBA::ORB_ptr, PortableServer::POA_ptr);
 typedef SALOMEDSClient_StudyBuilder* (*BUILDER_FACTORY_FUNCTION) (SALOMEDS::StudyBuilder_ptr);
 typedef SALOMEDSClient_IParameters* (*GET_PARAMETERS_FACTORY) (const _PTR(AttributeParameter)&);
 typedef SALOMEDS::SObject_ptr (*CONVERT_SOBJECT_FUNCTION) (const _PTR(SObject)&);
@@ -111,7 +111,7 @@ _PTR(Study) ClientFactory::Study(SALOMEDS::Study_ptr theStudy)
   return _PTR(Study)(study);
 }
 
-_PTR(Study) ClientFactory::createStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
+void ClientFactory::createStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa)
 {
   SALOMEDSClient_Study* study = NULL;
 #ifdef WIN32
@@ -122,8 +122,7 @@ _PTR(Study) ClientFactory::createStudy(CORBA::ORB_ptr orb, PortableServer::POA_p
   if(!aCreateFactory) aCreateFactory = (STUDY_CREATE_FUNCTION) dlsym(_libHandle, STUDY_CREATE);
 #endif
 
-  if(aCreateFactory) study = aCreateFactory(orb, poa);
-  return _PTR(Study)(study);
+  if(aCreateFactory) aCreateFactory(orb, poa);
 }
 
 _PTR(StudyBuilder) ClientFactory::StudyBuilder(SALOMEDS::StudyBuilder_ptr theStudyBuilder)
index 7c407f89856d9581f66d1d97fb7b45b27da085fb..6e4afdf4331bbdaf5528fc4352ee737a7ae927da 100644 (file)
@@ -61,7 +61,7 @@ public:
   /*!
    *  Creates and returns a client Study wrapper
    */
-  static _PTR(Study) createStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa);
+  static void createStudy(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa);
 
   /*!
    *  Returns a client StudyBuilder wrapper that corresponds %theStudy