Salome HOME
b0c5ba6c6e408d66cdd2b7935ac8fd6bb83e4845
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_SComponentIterator_i.cxx
1 // Copyright (C) 2007-2023  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 //  File   : SALOMEDS_SComponentIterator_i.cxx
24 //  Author : Sergey RUIN
25 //  Module : SALOME
26 //
27 #include "SALOMEDS_SComponentIterator_i.hxx"
28 #include "SALOMEDS.hxx"
29 #include "SALOMEDSImpl_SComponent.hxx"
30 #include "SALOMEDS_Study_i.hxx"
31 #include "utilities.h"
32
33 //============================================================================
34 /*! Function : constructor
35  * 
36  */
37 //============================================================================
38
39 SALOMEDS_SComponentIterator_i::SALOMEDS_SComponentIterator_i(const SALOMEDSImpl_SComponentIterator& theImpl, 
40                                                              CORBA::ORB_ptr orb)  :
41   GenericObj_i(SALOMEDS_Study_i::GetThePOA())
42 {
43   _orb = CORBA::ORB::_duplicate(orb);
44   _impl = theImpl.GetPersistentCopy();
45 }
46
47 //============================================================================
48 /*! Function : destructor
49  * 
50  */
51 //============================================================================
52 SALOMEDS_SComponentIterator_i::~SALOMEDS_SComponentIterator_i()
53 {
54    if(_impl) delete _impl;
55 }
56
57 //============================================================================
58 /*!
59   \brief Get default POA for the servant object.
60
61   This function is implicitly called from "_this()" function.
62   Default POA can be set via the constructor.
63
64   \return reference to the default POA for the servant
65 */
66 //============================================================================
67 PortableServer::POA_ptr SALOMEDS_SComponentIterator_i::_default_POA()
68 {
69   myPOA = PortableServer::POA::_duplicate(SALOMEDS_Study_i::GetThePOA());
70   MESSAGE("SALOMEDS_SComponentIterator_i::_default_POA: " << myPOA);
71   return PortableServer::POA::_duplicate(myPOA);
72 }
73
74 //============================================================================
75 /*! Function : Init
76  * 
77  */
78 //============================================================================
79 void SALOMEDS_SComponentIterator_i::Init()
80
81   SALOMEDS::Locker lock; 
82   _impl->Init();
83 }
84
85 //============================================================================
86 /*! Function : More
87  * 
88  */
89 //============================================================================
90 CORBA::Boolean SALOMEDS_SComponentIterator_i::More()
91 {
92   SALOMEDS::Locker lock; 
93   return _impl->More();
94 }
95
96  //============================================================================
97 /*! Function : Next
98   */
99 //============================================================================
100 void SALOMEDS_SComponentIterator_i::Next()
101
102   SALOMEDS::Locker lock; 
103   _impl->Next();
104 }
105
106
107 //============================================================================
108 /*! Function : Value
109  * 
110  */
111 //============================================================================
112 SALOMEDS::SComponent_ptr SALOMEDS_SComponentIterator_i::Value()
113 {
114   SALOMEDS::Locker lock; 
115   SALOMEDS::SComponent_var sco = SALOMEDS_SComponent_i::New (_impl->Value(), _orb);
116   return sco._retn();
117 }
118