X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_SComponentIterator_i.cxx;h=cc7d6700fda508498f90395d78f7f59796d68637;hb=4b14a3f48efda72f90b88c78c6ae02153631dfd6;hp=77b0b46554e7b8b02b1ee85f889af812839a028e;hpb=611c96f1b845f602ce9dbdc154c6fe4425937b9b;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx b/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx index 77b0b4655..cc7d6700f 100644 --- a/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx +++ b/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx @@ -1,34 +1,32 @@ -// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // -// 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 +// 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_SComponentIterator_i.cxx -// Author : Yves FRICAUD +// Author : Sergey RUIN // Module : SALOME -// $Header$ - -using namespace std; +// #include "SALOMEDS_SComponentIterator_i.hxx" - +#include "SALOMEDS.hxx" +#include "SALOMEDSImpl_SComponent.hxx" //============================================================================ /*! Function : constructor @@ -36,12 +34,11 @@ using namespace std; */ //============================================================================ -SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const Handle(TDocStd_Document) aDoc, - CORBA::ORB_ptr orb) +SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, + CORBA::ORB_ptr orb) { _orb = CORBA::ORB::_duplicate(orb); - _lab = aDoc->Main(); - _it.Initialize (_lab); + _impl = theImpl.GetPersistentCopy(); } //============================================================================ @@ -51,6 +48,7 @@ SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const Handle(TDocSt //============================================================================ SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i() { + if(_impl) delete _impl; } //============================================================================ @@ -60,7 +58,8 @@ SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i() //============================================================================ void SALOMEDS_SComponentIterator_i::Init() { - _it.Initialize (_lab); + SALOMEDS::Locker lock; + _impl->Init(); } //============================================================================ @@ -70,13 +69,8 @@ void SALOMEDS_SComponentIterator_i::Init() //============================================================================ CORBA::Boolean SALOMEDS_SComponentIterator_i::More() { - if (!_it.More()) - return false; - TDF_Label L = _it.Value(); - if (SALOMEDS_SComponent_i::IsA(L)) - return true; - - return _it.More(); + SALOMEDS::Locker lock; + return _impl->More(); } //============================================================================ @@ -84,8 +78,9 @@ CORBA::Boolean SALOMEDS_SComponentIterator_i::More() */ //============================================================================ void SALOMEDS_SComponentIterator_i::Next() -{ - _it.Next(); +{ + SALOMEDS::Locker lock; + _impl->Next(); } @@ -96,8 +91,8 @@ void SALOMEDS_SComponentIterator_i::Next() //============================================================================ SALOMEDS::SComponent_ptr SALOMEDS_SComponentIterator_i::Value() { - SALOMEDS_SComponent_i * so_servant = new SALOMEDS_SComponent_i (_it.Value(),_orb); - SALOMEDS::SComponent_var so = SALOMEDS::SComponent::_narrow(so_servant->SComponent::_this()); //pb d'heritage?? - return so; + SALOMEDS::Locker lock; + SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl->Value(), _orb); + return sco._retn(); }