X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMEDS%2FSALOMEDS_SComponentIterator_i.cxx;h=35b3b34fb62b664cd264b9417976ef49eb397d94;hb=dc4b16b9dd53dd42139fd22ef26556861db58989;hp=f757e29006e5462cec495f5d6d4c0a308c980af8;hpb=61d4fc88c862e718985aa6e9b1bf72f055553eee;p=modules%2Fkernel.git diff --git a/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx b/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx index f757e2900..35b3b34fb 100644 --- a/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx +++ b/src/SALOMEDS/SALOMEDS_SComponentIterator_i.cxx @@ -1,15 +1,34 @@ -using namespace std; -// File : SALOMEDS_SComponentIterator_i.cxx -// Created : Wed Nov 28 16:23:49 2001 -// Author : Yves FRICAUD - -// Project : SALOME -// Module : SALOMEDS -// Copyright : Open CASCADE 2001 -// $Header$ +// 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_SComponentIterator_i.cxx +// Author : Sergey RUIN +// Module : SALOME +// #include "SALOMEDS_SComponentIterator_i.hxx" - +#include "SALOMEDS.hxx" +#include "SALOMEDSImpl_SComponent.hxx" +#include "SALOMEDS_Study_i.hxx" +#include "utilities.h" //============================================================================ /*! Function : constructor @@ -17,12 +36,12 @@ 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) : + GenericObj_i(SALOMEDS_Study_i::GetThePOA()) { _orb = CORBA::ORB::_duplicate(orb); - _lab = aDoc->Main(); - _it.Initialize (_lab); + _impl = theImpl.GetPersistentCopy(); } //============================================================================ @@ -32,6 +51,24 @@ SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const Handle(TDocSt //============================================================================ SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i() { + if(_impl) delete _impl; +} + +//============================================================================ +/*! + \brief Get default POA for the servant object. + + This function is implicitly called from "_this()" function. + Default POA can be set via the constructor. + + \return reference to the default POA for the servant +*/ +//============================================================================ +PortableServer::POA_ptr SALOMEDS_SComponentIterator_i::_default_POA() +{ + myPOA = PortableServer::POA::_duplicate(SALOMEDS_Study_i::GetThePOA()); + MESSAGE("SALOMEDS_SComponentIterator_i::_default_POA: " << myPOA); + return PortableServer::POA::_duplicate(myPOA); } //============================================================================ @@ -41,7 +78,8 @@ SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i() //============================================================================ void SALOMEDS_SComponentIterator_i::Init() { - _it.Initialize (_lab); + SALOMEDS::Locker lock; + _impl->Init(); } //============================================================================ @@ -51,13 +89,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(); } //============================================================================ @@ -65,8 +98,9 @@ CORBA::Boolean SALOMEDS_SComponentIterator_i::More() */ //============================================================================ void SALOMEDS_SComponentIterator_i::Next() -{ - _it.Next(); +{ + SALOMEDS::Locker lock; + _impl->Next(); } @@ -77,8 +111,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(); }