Salome HOME
ENV: Windows porting.
[modules/kernel.git] / src / SALOMEDS / SALOMEDS_SComponentIterator.cxx
1 //  File   : SALOMEDS_SComponentIterator.cxx
2 //  Author : Sergey RUIN
3 //  Module : SALOME
4
5 #include "SALOMEDS_SComponentIterator.hxx"
6 #include "SALOMEDSImpl_SComponent.hxx"
7 #include "SALOMEDS_SComponent.hxx"
8
9 SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(const SALOMEDSImpl_SComponentIterator& theIterator)
10 :_local_impl(theIterator)
11 {
12   _isLocal = true;
13   _corba_impl = SALOMEDS::SComponentIterator::_nil();
14 }
15
16 SALOMEDS_SComponentIterator::SALOMEDS_SComponentIterator(SALOMEDS::SComponentIterator_ptr theIterator)
17 {
18   _isLocal = false;
19   _corba_impl = SALOMEDS::SComponentIterator::_duplicate(theIterator);
20 }
21
22 SALOMEDS_SComponentIterator::~SALOMEDS_SComponentIterator()
23 {
24   if(!_isLocal) _corba_impl->Destroy(); 
25 }
26
27 void SALOMEDS_SComponentIterator::Init()
28 {
29   if(_isLocal) _local_impl.Init();
30   else _corba_impl->Init();
31 }
32
33 bool SALOMEDS_SComponentIterator::More()
34 {
35   bool ret;
36   if(_isLocal) ret = _local_impl.More();
37   else ret = _corba_impl->More();
38   return ret;
39 }
40  
41 void SALOMEDS_SComponentIterator::Next()
42 {
43   if(_isLocal) _local_impl.Next();
44   else _corba_impl->Next();
45 }
46  
47 _PTR(SComponent) SALOMEDS_SComponentIterator::Value()  
48 {
49   SALOMEDSClient_SComponent* aSCO = NULL;
50   if(_isLocal) aSCO = new SALOMEDS_SComponent(_local_impl.Value());
51   else aSCO = new SALOMEDS_SComponent(_corba_impl->Value());
52   return _PTR(SComponent)(aSCO);
53 }