CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/FIELDSCatalog.xml.in ${CMAKE_CURRENT_BINARY_DIR}/FIELDSCatalog.xml @ONLY)
MESSAGE(STATUS "Creation of ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/SalomeApp.xml.in ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml @ONLY)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml RENAME SalomeAppSL.xml DESTINATION ${SALOME_FIELDS_INSTALL_RES_DATA})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/FIELDSCatalog.xml ${CMAKE_CURRENT_BINARY_DIR}/SalomeApp.xml DESTINATION ${SALOME_FIELDS_INSTALL_RES_DATA})
ADD_SUBDIRECTORY(cmp)
ADD_SUBDIRECTORY(res)
+ADD_SUBDIRECTORY(swig)
IF(SALOME_BUILD_GUI)
ADD_SUBDIRECTORY(gui)
MEDPresentationDeflectionShape.cxx
MEDPresentationStreamLines.cxx
MEDPresentationCutSegment.cxx
+ MEDFactory_i.cxx
+ MEDFactory_No_Session_i.cxx
+ MEDFactory_Session_i.cxx
+ MEDFactory_Component_Generator.cxx
+
)
SET(MEDEngineCommon_SOURCES
)
SET(MEDFactoryEngine_SOURCES
- MEDFactory_i.cxx
+ _MEDFactory_Session_i.cxx
)
SET(MEDEngine_SOURCES
MED.cxx
+ MED_Session.cxx
+ MED_No_Session.cxx
+ MED_Component_Generator.cxx
)
SET(COMMON_LIBS
PortableServer::POA_ptr poa,
PortableServer::ObjectId* contId,
const char* instanceName,
- const char* interfaceName)
- : Engines_Component_i(orb, poa, contId, instanceName, interfaceName),
+ const char* interfaceName,
+ bool checkNS)
+ : Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, checkNS),
_fieldSeriesEntries(),
_meshEntries()
{
_fieldSeriesEntries.clear();
_meshEntries.clear();
}
-
-extern "C"
-{
- /*!
- \brief Exportable factory function: create an instance of the MED component engine
- \param orb reference to the ORB
- \param poa reference to the POA
- \param contId CORBA object ID, pointing to the owner SALOME container
- \param instanceName SALOME component instance name
- \param interfaceName SALOME component interface name
- \return CORBA object identifier of the registered servant
- */
- PortableServer::ObjectId* FIELDSEngine_factory(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId* contId,
- const char* instanceName,
- const char* interfaceName)
- {
- MED* component = new MED(orb, poa, contId, instanceName, interfaceName);
- return component->getId();
- }
-}
PortableServer::POA_ptr poa,
PortableServer::ObjectId* contId,
const char* instanceName,
- const char* interfaceName);
+ const char* interfaceName,
+ bool checkNS = true);
virtual ~MED();
MED_ORB::status addDatasourceToStudy(const MEDCALC::DatasourceHandler& datasourceHandler);
virtual CORBA::Boolean hasObjectInfo();
virtual char* getObjectInfo(const char* entry);
+ // Get Study
+ virtual SALOMEDS::Study_var getStudyServant() = 0;
+
private:
std::map<long, std::string> _fieldSeriesEntries;
std::map<long, std::string> _meshEntries;
};
-extern "C"
-MEDCALC_EXPORT
-PortableServer::ObjectId* FIELDSEngine_factory( CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId* contId,
- const char* instanceName,
- const char* interfaceName );
-
#endif
// Author : Guillaume Boulant (EDF)
+#include <SALOME_KernelServices.hxx>
+
#include "MEDFactoryClient.hxx"
-#include "SALOME_KernelServices.hxx"
+#include "MEDFactory_Component_Generator.hxx"
namespace MEDFactoryClient {
MEDCALC::MEDFactory_ptr getFactory() {
static MEDCALC::MEDFactory_ptr engine;
if(CORBA::is_nil(engine)){
- Engines::EngineComponent_var component =
- KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","MEDFactory" );
- engine = MEDCALC::MEDFactory::_narrow(component);
+ SALOME_NamingService_Abstract *ns = KERNEL::getNamingService();
+ if (dynamic_cast<SALOME_NamingService *>(ns)) {
+ Engines::EngineComponent_var component =
+ KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","MEDFactory" );
+ engine = MEDCALC::MEDFactory::_narrow(component);
+ }
+ else {
+ Engines::EngineComponent_var component = RetrieveMEDFactoryInstance();
+ CORBA::Object_var comp2 = CORBA::Object::_narrow(component);
+ KERNEL::RegisterCompo("MEDFactory", comp2);
+ engine = MEDCALC::MEDFactory::_narrow(component);
+ }
}
return engine;
}
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MEDFactory_Component_Generator.hxx"
+
+#include "MEDFactory_No_Session_i.hxx"
+#include "SALOME_Container_i.hxx"
+#include "SALOME_KernelServices.hxx"
+
+#include <cstring>
+
+static Engines::EngineComponent_var _unique_compo;
+
+Engines::EngineComponent_var RetrieveMEDFactoryInstance()
+{
+ constexpr char COMPO_NAME[] = "MEDFactory";
+ if (CORBA::is_nil(_unique_compo))
+ {
+ CORBA::ORB_var orb;
+ {
+ int argc(0);
+ orb = CORBA::ORB_init(argc, nullptr);
+ }
+ CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+ PortableServer::POAManager_var pman = poa->the_POAManager();
+ CORBA::PolicyList policies;
+ policies.length(0);
+ auto *cont(KERNEL::getContainerSA());
+ PortableServer::ObjectId *conId(cont->getCORBAId());
+ //
+ pman->activate();
+ //
+ MEDFactory_No_Session_i *servant = new MEDFactory_No_Session_i(orb, poa, conId, "MEDFactory_inst_2", COMPO_NAME);
+ PortableServer::ObjectId *zeId = servant->getId();
+ CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
+ KERNEL::RegisterCompo(COMPO_NAME, zeRef);
+ _unique_compo = Engines::EngineComponent::_narrow(zeRef);
+ }
+ return _unique_compo;
+}
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MEDCALC.hxx"
+
+#include "SALOMEconfig.h"
+
+#include CORBA_SERVER_HEADER(MED_Gen)
+
+MEDCALC_EXPORT Engines::EngineComponent_var RetrieveMEDFactoryInstance();
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MEDFactory_No_Session_i.hxx"
+
+MEDFactory_No_Session_i::MEDFactory_No_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName)
+ : MEDFactory_i(orb, poa, contId, instanceName, interfaceName, false)
+{
+}
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MEDFactory_i.hxx"
+
+class MEDCALC_EXPORT MEDFactory_No_Session_i : public MEDFactory_i
+{
+public:
+ MEDFactory_No_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+
+};
+
+
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MEDFactory_Session_i.hxx"
+
+MEDFactory_Session_i::MEDFactory_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName)
+ : MEDFactory_i(orb, poa, contId, instanceName, interfaceName, true)
+{
+}
--- /dev/null
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MEDFactory_i.hxx"
+
+class MEDCALC_EXPORT MEDFactory_Session_i : public MEDFactory_i
+{
+
+public:
+
+ MEDFactory_Session_i(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+};
+
+extern "C"
+MEDCALC_EXPORT PortableServer::ObjectId *
+MEDFactoryEngine_factory(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
PortableServer::POA_ptr poa,
PortableServer::ObjectId* contId,
const char* instanceName,
- const char* interfaceName)
- : Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
+ const char* interfaceName,
+ bool checkNS)
+ : Engines_Component_i(orb, poa, contId, instanceName, interfaceName, false, checkNS)
{
MESSAGE("activate object");
_thisObj = this ;
MEDCALC::MEDCommandsHistoryManager_ptr managerPtr = manager->_this();
return managerPtr;
}
-
-extern "C"
-{
- PortableServer::ObjectId* MEDFactoryEngine_factory(
- CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId* contId,
- const char* instanceName,
- const char* interfaceName)
- {
- MESSAGE("PortableServer::ObjectId * MEDEngine_factory()");
- SCRUTE(interfaceName);
- MEDFactory_i* factory = new MEDFactory_i(orb, poa, contId,
- instanceName,
- interfaceName);
- return factory->getId() ;
- }
-}
PortableServer::POA_ptr poa,
PortableServer::ObjectId * contId,
const char *instanceName,
- const char *interfaceName);
+ const char *interfaceName,
+ bool checkNS = true);
virtual ~MEDFactory_i();
/*! Returns the singleton instance of the data manager */
MEDCALC::MEDCommandsHistoryManager_ptr getCommandsHistoryManager();
};
-extern "C"
-MEDCALC_EXPORT PortableServer::ObjectId *
-MEDFactoryEngine_factory(CORBA::ORB_ptr orb,
- PortableServer::POA_ptr poa,
- PortableServer::ObjectId * contId,
- const char *instanceName,
- const char *interfaceName);
-
#endif
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MED_Component_Generator.hxx"
+
+#include "MED_No_Session.hxx"
+#include "SALOME_Container_i.hxx"
+#include "SALOME_KernelServices.hxx"
+
+#include <cstring>
+
+static Engines::EngineComponent_var _unique_compo;
+
+Engines::EngineComponent_var RetrieveMEDInstance()
+{
+ constexpr char COMPO_NAME[]="FIELDS";
+ if (CORBA::is_nil(_unique_compo))
+ {
+ CORBA::ORB_var orb;
+ {
+ int argc(0);
+ orb = CORBA::ORB_init(argc, nullptr);
+ }
+ CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
+ PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+ PortableServer::POAManager_var pman = poa->the_POAManager();
+ CORBA::PolicyList policies;
+ policies.length(0);
+ auto *cont(KERNEL::getContainerSA());
+ PortableServer::ObjectId *conId(cont->getCORBAId());
+ //
+ pman->activate();
+ //
+ MED_No_Session *servant = new MED_No_Session(orb, poa, conId, "FIELDS_inst_2", COMPO_NAME);
+ PortableServer::ObjectId *zeId = servant->getId();
+ CORBA::Object_var zeRef = poa->id_to_reference(*zeId);
+ KERNEL::RegisterCompo(COMPO_NAME,zeRef);
+ _unique_compo = Engines::EngineComponent::_narrow(zeRef);
+ }
+ return _unique_compo;
+}
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MEDCALC.hxx"
+
+#include "SALOMEconfig.h"
+
+#include CORBA_SERVER_HEADER(MED_Gen)
+
+MEDCALC_EXPORT Engines::EngineComponent_var RetrieveMEDInstance();
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#include "MED_No_Session.hxx"
+#ifdef GetObject
+#undef GetObject
+#endif
+#include "SALOMEDS_Study_i.hxx"
+
+
+MED_No_Session::MED_No_Session(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId *contId,
+ const char *instanceName,
+ const char *interfaceName):MED(orb,poa,contId,instanceName,interfaceName, false)
+{
+}
+
+SALOMEDS::Study_var MED_No_Session::getStudyServant()
+{
+ return SALOMEDS::Study::_duplicate(KERNEL::getStudyServantSA());
+}
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MED.hxx"
+
+class MEDCALC_EXPORT MED_No_Session : public MED
+{
+ public:
+ MED_No_Session(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+
+ SALOMEDS::Study_var getStudyServant() override;
+};
--- /dev/null
+// Copyright (C) 2015-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MED_Session.hxx"
+
+MED_Session::MED_Session(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId *contId,
+ const char *instanceName,
+ const char *interfaceName):MED(orb,poa,contId,instanceName,interfaceName, true)
+{
+ name_service = new SALOME_NamingService(_orb);
+}
+
+MED_Session::~MED_Session()
+{
+
+}
+
+SALOMEDS::Study_var MED_Session::getStudyServant()
+{
+ static SALOMEDS::Study_var aStudy;
+ if(CORBA::is_nil(aStudy))
+ {
+ CORBA::Object_ptr anObject = name_service->Resolve("/Study");
+ aStudy = SALOMEDS::Study::_narrow(anObject);
+ }
+ return aStudy;
+}
+
+extern "C"
+{
+ /*!
+ \brief Exportable factory function: create an instance of the MED component engine
+ \param orb reference to the ORB
+ \param poa reference to the POA
+ \param contId CORBA object ID, pointing to the owner SALOME container
+ \param instanceName SALOME component instance name
+ \param interfaceName SALOME component interface name
+ \return CORBA object identifier of the registered servant
+ */
+ PortableServer::ObjectId* FIELDSEngine_factory(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName)
+ {
+ MED* component = new MED_Session(orb, poa, contId, instanceName, interfaceName);
+ return component->getId();
+ }
+}
--- /dev/null
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#pragma once
+
+#include "MED.hxx"
+#include "SALOME_NamingService.hxx"
+
+class MEDCALC_EXPORT MED_Session : public MED
+{
+public:
+ MED_Session(CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId * contId,
+ const char *instanceName,
+ const char *interfaceName);
+ ~MED_Session();
+ SALOMEDS::Study_var getStudyServant() override;
+private:
+ SALOME_NamingService *name_service = nullptr;
+};
+
+extern "C"
+MEDCALC_EXPORT
+PortableServer::ObjectId* FIELDSEngine_factory( CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName );
--- /dev/null
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDFactory_Session_i.hxx"
+
+
+extern "C"
+{
+ PortableServer::ObjectId* MEDFactoryEngine_factory(
+ CORBA::ORB_ptr orb,
+ PortableServer::POA_ptr poa,
+ PortableServer::ObjectId* contId,
+ const char* instanceName,
+ const char* interfaceName)
+ {
+ MESSAGE("PortableServer::ObjectId * MEDEngine_factory()");
+ SCRUTE(interfaceName);
+ MEDFactory_i* factory = new MEDFactory_Session_i(orb, poa, contId,
+ instanceName,
+ interfaceName);
+ return factory->getId();
+ }
+}
SalomeIDLMED
MEDCALCGUI_dialogs
MEDFactoryEngine
+ FIELDSEngine
${GUI_qtx}
${GUI_suit}
${GUI_SalomeObject}
#include "MEDFactoryClient.hxx"
#include "MEDPresentationManager_i.hxx"
+#include "MED_Component_Generator.hxx"
#include <QTimer>
#include <sstream>
MEDModule::init()
{
// initialize FIELDS module engine (load, if necessary)
+ Engines::EngineComponent_var comp;
if ( CORBA::is_nil( _MED_engine ) ) {
- Engines::EngineComponent_var comp =
- SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "FIELDS" );
- if (CORBA::is_nil( comp )) {
- STDLOG("Could not FindOrLoad_Component FIELDS");
+ SALOME_NamingService_Abstract *ns = SalomeApp_Application::namingService();
+ if( dynamic_cast<SALOME_NamingService *>(ns) )
+ {
+ comp = SalomeApp_Application::lcc()->FindOrLoad_Component( "FactoryServer", "FIELDS" );
+ }
+ else
+ {
+ comp = RetrieveMEDInstance();
+ CORBA::Object_var comp2 = CORBA::Object::_narrow(comp);
+ KERNEL::RegisterCompo("FIELDS",comp2);
}
_MED_engine = MED_ORB::MED_Gen::_narrow( comp );
if (CORBA::is_nil( _MED_engine )) {
--- /dev/null
+# Copyright (C) 2012-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+include(${SWIG_USE_FILE})
+
+include_directories(
+ ${KERNEL_INCLUDE_DIRS}
+ ${PROJECT_BINARY_DIR}/idl
+ ${PROJECT_SOURCE_DIR}/src/MEDCalc/cmp
+)
+
+SET(_bin_SCRIPTS
+ FIELDS_SalomeSessionless.py
+ MEDFactory_SalomeSessionless.py
+)
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(${OMNIORB_DEFINITIONS} )
+
+# SWIG wrapping
+SET(MedHelper_HEADERS MedHelper.h MedHelper.i)
+SET(MedHelper_SOURCES MedHelper.cxx ${MedHelper_HEADERS})
+SET_SOURCE_FILES_PROPERTIES(MedHelper.i PROPERTIES CPLUSPLUS ON)
+SET_SOURCE_FILES_PROPERTIES(MedHelper.i PROPERTIES SWIG_FLAGS "-py3")
+SET_SOURCE_FILES_PROPERTIES(MedHelper_wrap.cpp PROPERTIES COMPILE_FLAGS "-DHAVE_CONFIG_H")
+SET(_swig_SCRIPTS ${CMAKE_CURRENT_BINARY_DIR}/MedHelper.py)
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0")
+ SWIG_ADD_MODULE(MedHelper python ${MedHelper_SOURCES})
+ELSE()
+ SWIG_ADD_LIBRARY(MedHelper LANGUAGE python SOURCES ${MedHelper_SOURCES})
+ENDIF()
+SWIG_LINK_LIBRARIES(MedHelper ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} FIELDSEngine MEDEngineCommon ${KERNEL_SalomeKernelHelpers} ${KERNEL_SalomeDS} )
+SWIG_CHECK_GENERATION(MedHelper)
+IF(WIN32)
+ SET_TARGET_PROPERTIES(_MedHelper PROPERTIES DEBUG_OUTPUT_NAME _MedHelper_d)
+ENDIF(WIN32)
+install(TARGETS _MedHelper DESTINATION ${SALOME_INSTALL_LIBS})
+install(FILES ${MedHelper_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}" ${SALOME_INSTALL_BINS} EXTRA_DPYS "${SWIG_MODULE_MedHelper_REAL_NAME}")
+
+SALOME_INSTALL_SCRIPTS("${_bin_SCRIPTS}" ${SALOME_INSTALL_PYTHON} DEF_PERMS)
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+def buildInstance(orb):
+ import MedHelper
+ med_ior = MedHelper.BuildMEDInstance()
+ import MED_ORB
+ import CORBA
+ orb=CORBA.ORB_init([''])
+ med = orb.string_to_object(med_ior)
+ return med, orb
--- /dev/null
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+def buildInstance(orb):
+ import MedHelper
+ med_field_ior = MedHelper.BuildMEDFactoryInstance()
+ import MEDCALC
+ import CORBA
+ orb=CORBA.ORB_init([''])
+ med_factory = orb.string_to_object(med_field_ior)
+ return med_factory, orb
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "MedHelper.h"
+
+#include "SALOME_KernelServices.hxx"
+
+#include "MED_Component_Generator.hxx"
+#include "MEDFactory_Component_Generator.hxx"
+
+std::string BuildMEDInstance()
+{
+ Engines::EngineComponent_var zeRef = RetrieveMEDInstance();
+ CORBA::String_var ior = KERNEL::getORB()->object_to_string(zeRef);
+ return std::string(ior.in());
+}
+
+std::string BuildMEDFactoryInstance()
+{
+ Engines::EngineComponent_var zeRef = RetrieveMEDFactoryInstance();
+ CORBA::String_var ior = KERNEL::getORB()->object_to_string(zeRef);
+ return std::string(ior.in());
+}
+
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include <string>
+
+std::string BuildMEDInstance();
+std::string BuildMEDFactoryInstance();
--- /dev/null
+// Copyright (C) 2021 CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+%module MedHelper
+
+%include "std_string.i"
+
+%inline
+{
+ std::string BuildMEDInstance();
+ std::string BuildMEDFactoryInstance();
+}