X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS.cxx;h=b648fd6a28c1bff5228a50b3d9128c773428f4b2;hb=6d9c102060aa7ad2e25f3e252ab2c1d57de4d38f;hp=4a35577e12f33e2a9988df814177a7faed6b20ac;hpb=836c34a4e2dd99f1f302a2c3ae93a51cd182368f;p=modules%2Fyacs.git diff --git a/src/SALOMEDS/SALOMEDS.cxx b/src/SALOMEDS/SALOMEDS.cxx index 4a35577e1..b648fd6a2 100644 --- a/src/SALOMEDS/SALOMEDS.cxx +++ b/src/SALOMEDS/SALOMEDS.cxx @@ -1,64 +1,58 @@ -// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// -// 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. -// -// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// 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. // +// 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 +// + +// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server // File : SALOMEDS.cxx // Author : Sergey ANIKIN // Module : SALOME // $Header$ - -#ifndef WNT -#include -#include -#include -#include -#include -#include -#include -#else +// #include "SALOMEDS.hxx" #include "SALOMEDS_StudyManager.hxx" #include "SALOMEDS_Study.hxx" +#include "SALOMEDS_StudyBuilder.hxx" #include "SALOMEDS_SObject.hxx" #include "SALOMEDS_SComponent.hxx" #include "SALOMEDSClient.hxx" +#include "SALOMEDSClient_IParameters.hxx" +#include "SALOMEDS_IParameters.hxx" #include "SALOMEDS_StudyManager_i.hxx" -#endif + +#include "SALOMEDS_Defines.hxx" // IDL headers #include #include CORBA_SERVER_HEADER(SALOMEDS) - -using namespace SALOMEDS; +#include // PAL8065: san -- Global recursive mutex for SALOMEDS methods -Utils_Mutex Locker::MutexDS; +Utils_Mutex SALOMEDS::Locker::MutexDS; // PAL8065: san -- Global SALOMEDS locker -Locker::Locker() +SALOMEDS::Locker::Locker() : Utils_Locker( &MutexDS ) {} -Locker::~Locker() +SALOMEDS::Locker::~Locker() {} void SALOMEDS::lock() @@ -68,7 +62,7 @@ void SALOMEDS::lock() void SALOMEDS::unlock() { - Locker::MutexDS.unlock(); + SALOMEDS::Locker::MutexDS.unlock(); } @@ -84,34 +78,86 @@ void SALOMEDS::unlock() extern "C" { - -SALOMEDSClient_StudyManager* StudyManagerFactory() +SALOMEDS_EXPORT + SALOMEDSClient_StudyManager* StudyManagerFactory() { return new SALOMEDS_StudyManager(); } - -SALOMEDSClient_Study* StudyFactory(SALOMEDS::Study_ptr theStudy) +SALOMEDS_EXPORT + SALOMEDSClient_Study* StudyFactory(SALOMEDS::Study_ptr theStudy) { + if(CORBA::is_nil(theStudy)) return NULL; return new SALOMEDS_Study(theStudy); } -SALOMEDSClient_SObject* SObjectFactory(SALOMEDS::SObject_ptr theSObject) +SALOMEDS_EXPORT + SALOMEDSClient_SObject* SObjectFactory(SALOMEDS::SObject_ptr theSObject) { + if(CORBA::is_nil(theSObject)) return NULL; return new SALOMEDS_SObject(theSObject); } -SALOMEDSClient_SComponent* SComponentFactory(SALOMEDS::SComponent_ptr theSComponent) +SALOMEDS_EXPORT + SALOMEDSClient_SComponent* SComponentFactory(SALOMEDS::SComponent_ptr theSComponent) { + if(CORBA::is_nil(theSComponent)) return NULL; return new SALOMEDS_SComponent(theSComponent); } -SALOMEDSClient_StudyManager* CreateStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa) +SALOMEDS_EXPORT + SALOMEDSClient_StudyBuilder* BuilderFactory(SALOMEDS::StudyBuilder_ptr theBuilder) +{ + if(CORBA::is_nil(theBuilder)) return NULL; + return new SALOMEDS_StudyBuilder(theBuilder); +} + +SALOMEDS_EXPORT + SALOMEDSClient_StudyManager* CreateStudyManager(CORBA::ORB_ptr orb, PortableServer::POA_ptr root_poa) { - SALOMEDS_StudyManager_i * aStudyManager_i = new SALOMEDS_StudyManager_i(orb, root_poa); - // Activate the objects. This tells the POA that the objects are ready to accept requests. - PortableServer::ObjectId_var aStudyManager_iid = root_poa->activate_object(aStudyManager_i); - aStudyManager_i->register_name("/myStudyManager"); + SALOME_NamingService namingService(orb); + CORBA::Object_var obj = namingService.Resolve( "/myStudyManager" ); + SALOMEDS::StudyManager_var theManager = SALOMEDS::StudyManager::_narrow( obj ); + if( CORBA::is_nil(theManager) ) { + SALOMEDS_StudyManager_i * aStudyManager_i = new SALOMEDS_StudyManager_i(orb, root_poa); + // Activate the objects. This tells the POA that the objects are ready to accept requests. + PortableServer::ObjectId_var aStudyManager_iid = root_poa->activate_object(aStudyManager_i); + //give ownership to the poa : the object will be deleted by the poa + aStudyManager_i->_remove_ref(); + aStudyManager_i->register_name((char*)"/myStudyManager"); + } return new SALOMEDS_StudyManager(); } +SALOMEDS_EXPORT + SALOMEDSClient_IParameters* GetIParameters(const _PTR(AttributeParameter)& ap) +{ + return new SALOMEDS_IParameters(ap); +} + +SALOMEDS_EXPORT + SALOMEDS::SObject_ptr ConvertSObject(const _PTR(SObject)& theSObject) +{ + + SALOMEDS_SObject* so = _CAST(SObject, theSObject); + if(!theSObject || !so) return SALOMEDS::SObject::_nil(); + return so->GetSObject(); +} + +SALOMEDS_EXPORT + SALOMEDS::Study_ptr ConvertStudy(const _PTR(Study)& theStudy) +{ + SALOMEDS_Study* study = _CAST(Study, theStudy); + if(!theStudy || !study) return SALOMEDS::Study::_nil(); + return study->GetStudy(); +} + +SALOMEDS_EXPORT + SALOMEDS::StudyBuilder_ptr ConvertBuilder(const _PTR(StudyBuilder)& theBuilder) +{ + SALOMEDS_StudyBuilder* builder = _CAST(StudyBuilder, theBuilder); + if(!theBuilder || !builder) return SALOMEDS::StudyBuilder::_nil(); + return builder->GetBuilder(); +} + + }