From 98de1cf180c499a792c3c05cafa07fb435b5bd43 Mon Sep 17 00:00:00 2001 From: Pascal Obry Date: Tue, 5 Sep 2023 15:33:46 +0200 Subject: [PATCH] MPIContyainer_i.cxx: Fix some compilation errors. --- src/MPIContainer/MPIContainer_i.cxx | 42 ++++++++++++++++------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/MPIContainer/MPIContainer_i.cxx b/src/MPIContainer/MPIContainer_i.cxx index 70c2af11e..5206b0a8c 100644 --- a/src/MPIContainer/MPIContainer_i.cxx +++ b/src/MPIContainer/MPIContainer_i.cxx @@ -29,6 +29,7 @@ #include "SALOME_NamingService.hxx" #include "Utils_SINGLETON.hxx" #include "OpUtil.hxx" +#include "PythonCppUtils.hxx" #include "utilities.h" #include #include @@ -42,10 +43,10 @@ #include "Container_init_python.hxx" // L'appel au registry SALOME ne se fait que pour le process 0 -Engines_MPIContainer_i::Engines_MPIContainer_i(CORBA::ORB_ptr orb, +Engines_MPIContainer_i::Engines_MPIContainer_i(CORBA::ORB_ptr orb, PortableServer::POA_ptr poa, char * containerName, - int argc, char *argv[]) + int argc, char *argv[]) : Engines_Container_i(orb,poa,containerName,argc,argv,nullptr,false) { @@ -71,7 +72,7 @@ Engines_MPIContainer_i::Engines_MPIContainer_i(CORBA::ORB_ptr orb, BCastIOR(_orb,pobj,true); } -Engines_MPIContainer_i::Engines_MPIContainer_i() +Engines_MPIContainer_i::Engines_MPIContainer_i() : Engines_Container_i() { } @@ -152,8 +153,8 @@ bool Engines_MPIContainer_i::Lload_component_Library(const char* componentName) #else std::string impl_name = std::string ("lib") + aCompName + std::string("Engine.so"); #endif - - _numInstanceMutex.lock(); // lock to be alone + + _numInstanceMutex.lock(); // lock to be alone // (see decInstanceCnt, finalize_removal)) if (_toRemove_map[impl_name]) _toRemove_map.erase(impl_name); if (_library_map[impl_name]) @@ -162,7 +163,7 @@ bool Engines_MPIContainer_i::Lload_component_Library(const char* componentName) _numInstanceMutex.unlock(); return true; } - + void* handle; handle = dlopen( impl_name.c_str() , RTLD_LAZY | RTLD_GLOBAL ) ; if ( handle ) @@ -193,18 +194,20 @@ bool Engines_MPIContainer_i::Lload_component_Library(const char* componentName) } else { + PyObject *pyCont = nullptr; + std::string ret; { AutoGIL agil; PyObject *mainmod = PyImport_AddModule((char *)"__main__"); PyObject *globals = PyModule_GetDict(mainmod); - PyObject *pyCont = PyDict_GetItemString(globals, "pyCont"); + pyCont = PyDict_GetItemString(globals, "pyCont"); PyObject *result = PyObject_CallMethod(pyCont, (char*)"import_component", (char*)"s",componentName); - std::string ret= PyUnicode_AsUTF8(result); + ret= PyUnicode_AsUTF8(result); SCRUTE(ret); } - + if (ret=="") // import possible: Python component { _library_map[aCompName] = (void *)pyCont; // any non O value OK @@ -269,6 +272,7 @@ Engines_MPIContainer_i::Lcreate_component_instance( const char* genericRegisterN std::string component_registerName = _containerName + "/" + instanceName; + std::string iors; { AutoGIL agil; PyObject *mainmod = PyImport_AddModule((char*)"__main__"); @@ -282,10 +286,10 @@ Engines_MPIContainer_i::Lcreate_component_instance( const char* genericRegisterN const char *ior; const char *error; PyArg_ParseTuple(result,"ss", &ior, &error); - std::string iors = ior; + iors = ior; SCRUTE(iors); } - + CORBA::Object_var obj = _orb->string_to_object(iors.c_str()); iobject = Engines::EngineComponent::_narrow( obj ) ; pobj = Engines::MPIObject::_narrow(obj) ; @@ -296,7 +300,7 @@ Engines_MPIContainer_i::Lcreate_component_instance( const char* genericRegisterN return iobject._retn(); } - + //--- try C++ #ifdef __APPLE__ @@ -328,9 +332,9 @@ Engines_MPIContainer_i::createMPIInstance(std::string genericRegisterName, typedef PortableServer::ObjectId * (*MPIFACTORY_FUNCTION) (CORBA::ORB_ptr, - PortableServer::POA_ptr, - PortableServer::ObjectId *, - const char *, + PortableServer::POA_ptr, + PortableServer::ObjectId *, + const char *, const char *) ; dlerror(); @@ -464,10 +468,10 @@ Engines::EngineComponent_ptr Engines_MPIContainer_i::Lload_impl( const char *, const char *) = (PortableServer::ObjectId * (*) (CORBA::ORB_ptr, - PortableServer::POA_ptr, - PortableServer::ObjectId *, - const char *, - const char *)) + PortableServer::POA_ptr, + PortableServer::ObjectId *, + const char *, + const char *)) dlsym(handle, factory_name.c_str()); char *error ; -- 2.39.2