X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_GenericAttribute.cxx;h=d504b6fb5ce35a11fda1f4b7189a26da724eb2fd;hb=fb09c3943733e57f9ebc6b8b867d2575473bfb07;hp=c1c4e23c40cb113a50bf81c244aca541ea62b24e;hpb=1bd1d38e86c39b13e265f8ff534fc1463c25fef3;p=modules%2Fyacs.git diff --git a/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx b/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx index c1c4e23c4..d504b6fb5 100644 --- a/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx +++ b/src/SALOMEDS/SALOMEDS_GenericAttribute.cxx @@ -1,16 +1,38 @@ +// Copyright (C) 2007-2016 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 +// +// 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 +// + // File : SALOMEDS_GenericAttribute.cxx // Author : Sergey RUIN // Module : SALOME - - - +// #include -#include #include "SALOMEDS_GenericAttribute.hxx" #include "SALOMEDSImpl_SObject.hxx" #include "SALOMEDS_SObject.hxx" #include "SALOMEDS_ClientAttributes.hxx" +#include "SALOMEDS.hxx" + +#include "Basics_Utils.hxx" #ifdef WIN32 #include @@ -19,11 +41,7 @@ #include #endif -#include "OpUtil.hxx" - -using namespace std; - -SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA) +SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDSImpl_GenericAttribute* theGA) { _isLocal = true; _local_impl = theGA; @@ -38,9 +56,9 @@ SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ long pid = (long)getpid(); #endif - long addr = theGA->GetLocalImpl(GetHostname().c_str(), pid, _isLocal); + CORBA::LongLong addr = theGA->GetLocalImpl(Kernel_Utils::GetHostname().c_str(), pid, _isLocal); if(_isLocal) { - _local_impl = ((SALOMEDSImpl_GenericAttribute*)(addr)); + _local_impl = reinterpret_cast(addr); _corba_impl = SALOMEDS::GenericAttribute::_nil(); } else { @@ -52,13 +70,14 @@ SALOMEDS_GenericAttribute::SALOMEDS_GenericAttribute(SALOMEDS::GenericAttribute_ SALOMEDS_GenericAttribute::~SALOMEDS_GenericAttribute() { if (!_isLocal) { - _corba_impl->Destroy(); + _corba_impl->UnRegister(); } } void SALOMEDS_GenericAttribute::CheckLocked() { - if(_isLocal) { + if (_isLocal) { + SALOMEDS::Locker lock; try { _local_impl->CheckLocked(); } @@ -74,11 +93,12 @@ void SALOMEDS_GenericAttribute::CheckLocked() std::string SALOMEDS_GenericAttribute::Type() { std::string aType; - if(_isLocal) { - aType = _local_impl->Type().ToCString(); + if (_isLocal) { + SALOMEDS::Locker lock; + aType = _local_impl->Type(); } else { - aType = _corba_impl->Type(); + aType = (CORBA::String_var)_corba_impl->Type(); } return aType; } @@ -86,11 +106,12 @@ std::string SALOMEDS_GenericAttribute::Type() std::string SALOMEDS_GenericAttribute::GetClassType() { std::string aType; - if(_isLocal) { - aType = _local_impl->GetClassType().ToCString(); + if (_isLocal) { + SALOMEDS::Locker lock; + aType = _local_impl->GetClassType(); } else { - aType = _corba_impl->GetClassType(); + aType = (CORBA::String_var)_corba_impl->GetClassType(); } return aType; } @@ -98,30 +119,37 @@ std::string SALOMEDS_GenericAttribute::GetClassType() _PTR(SObject) SALOMEDS_GenericAttribute::GetSObject() { SALOMEDSClient_SObject* aSO = NULL; - if(_isLocal) { + if (_isLocal) { + SALOMEDS::Locker lock; aSO = new SALOMEDS_SObject(_local_impl->GetSObject()); } else { - aSO = new SALOMEDS_SObject(_corba_impl->GetSObject()); + aSO = new SALOMEDS_SObject((SALOMEDS::SObject_var)_corba_impl->GetSObject()); } return _PTR(SObject)(aSO); } -SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(const Handle(SALOMEDSImpl_GenericAttribute)& theGA) +SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(SALOMEDSImpl_GenericAttribute* theGA) { + SALOMEDS::Locker lock; + SALOMEDS_GenericAttribute* aGA = NULL; - std::string aTypeOfAttribute = theGA->GetClassType().ToCString(); - __CreateGenericClientAttributeLocal - return aGA; + if(theGA) { + std::string aTypeOfAttribute = theGA->GetClassType(); + __CreateGenericClientAttributeLocal + } + return aGA; } SALOMEDS_GenericAttribute* SALOMEDS_GenericAttribute::CreateAttribute(SALOMEDS::GenericAttribute_ptr theGA) { SALOMEDS_GenericAttribute* aGA = NULL; - std::string aTypeOfAttribute = theGA->GetClassType(); - __CreateGenericClientAttributeCORBA - return aGA; + if(!CORBA::is_nil(theGA)) { + CORBA::String_var astr=theGA->GetClassType(); + std::string aTypeOfAttribute = astr.in(); + __CreateGenericClientAttributeCORBA + } + return aGA; } -