1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 // File : SALOMEDS_UseCaseBuilder_i.cxx
21 // Author : Sergey RUIN
25 #include "SALOMEDS_UseCaseBuilder_i.hxx"
26 #include "SALOMEDS_UseCaseIterator_i.hxx"
27 #include "SALOMEDS_SObject_i.hxx"
28 #include "SALOMEDS.hxx"
30 #include "utilities.h"
34 //============================================================================
35 /*! Function : constructor
38 //============================================================================
39 SALOMEDS_UseCaseBuilder_i::SALOMEDS_UseCaseBuilder_i(const Handle(SALOMEDSImpl_UseCaseBuilder)& theImpl,
42 _orb = CORBA::ORB::_duplicate(orb);
46 //============================================================================
47 /*! Function : destructor
50 //============================================================================
51 SALOMEDS_UseCaseBuilder_i::~SALOMEDS_UseCaseBuilder_i()
56 //============================================================================
60 //============================================================================
61 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Append(SALOMEDS::SObject_ptr theObject)
63 SALOMEDS::Locker lock;
64 if(_impl.IsNull() || theObject->_is_nil()) return 0;
65 return _impl->Append(_impl->GetSObject(theObject->GetID()));
68 //============================================================================
72 //============================================================================
73 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::Remove(SALOMEDS::SObject_ptr theObject)
75 SALOMEDS::Locker lock;
76 if(_impl.IsNull() || theObject->_is_nil()) return 0;
77 return _impl->Remove(_impl->GetSObject(theObject->GetID()));
81 //============================================================================
82 /*! Function : AppendTo
85 //============================================================================
86 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::AppendTo(SALOMEDS::SObject_ptr theFather,
87 SALOMEDS::SObject_ptr theObject)
89 SALOMEDS::Locker lock;
90 if(_impl.IsNull() || theFather->_is_nil() || theObject->_is_nil()) return 0;
91 return _impl->AppendTo(_impl->GetSObject(theFather->GetID()), _impl->GetSObject(theObject->GetID()));
94 //============================================================================
95 /*! Function : InsertBefore
98 //============================================================================
99 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::InsertBefore(SALOMEDS::SObject_ptr theFirst,
100 SALOMEDS::SObject_ptr theNext)
102 SALOMEDS::Locker lock;
103 if(_impl.IsNull() || theFirst->_is_nil() || theNext->_is_nil()) return 0;
104 return _impl->InsertBefore(_impl->GetSObject(theFirst->GetID()), _impl->GetSObject(theNext->GetID()));
108 //============================================================================
109 /*! Function : SetCurrentObject
112 //============================================================================
113 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetCurrentObject(SALOMEDS::SObject_ptr theObject)
115 SALOMEDS::Locker lock;
116 if(_impl.IsNull() || theObject->_is_nil()) return 0;
117 return _impl->SetCurrentObject(_impl->GetSObject(theObject->GetID()));
120 //============================================================================
121 /*! Function : SetRootCurrent
124 //============================================================================
125 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetRootCurrent()
127 SALOMEDS::Locker lock;
128 if(_impl.IsNull()) return 0;
129 return _impl->SetRootCurrent();
132 //============================================================================
133 /*! Function : HasChildren
136 //============================================================================
137 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::HasChildren(SALOMEDS::SObject_ptr theObject)
139 SALOMEDS::Locker lock;
140 if(_impl.IsNull()) return 0;
141 return _impl->HasChildren(_impl->GetSObject(theObject->GetID()));
144 //============================================================================
145 /*! Function : SetName
148 //============================================================================
149 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::SetName(const char* theName)
151 SALOMEDS::Locker lock;
152 if(_impl.IsNull()) return 0;
153 return _impl->SetName((char*)theName);
157 //============================================================================
158 /*! Function : GetCurrentObject
161 //============================================================================
162 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::GetCurrentObject()
164 SALOMEDS::Locker lock;
166 if(_impl.IsNull()) return NULL;
167 Handle(SALOMEDSImpl_SObject) aSO = _impl->GetCurrentObject();
168 SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
172 //============================================================================
173 /*! Function : GetName
176 //============================================================================
177 char* SALOMEDS_UseCaseBuilder_i::GetName()
179 SALOMEDS::Locker lock;
180 return CORBA::string_dup(_impl->GetName().ToCString());
183 //============================================================================
184 /*! Function : IsUseCase
187 //============================================================================
188 CORBA::Boolean SALOMEDS_UseCaseBuilder_i::IsUseCase(SALOMEDS::SObject_ptr theObject)
190 SALOMEDS::Locker lock;
192 if(_impl.IsNull() || theObject->_is_nil()) return false;
193 return _impl->IsUseCase(_impl->GetSObject(theObject->GetID()));
196 //============================================================================
197 /*! Function : NewUseCase
200 //============================================================================
201 SALOMEDS::SObject_ptr SALOMEDS_UseCaseBuilder_i::AddUseCase(const char* theName)
203 SALOMEDS::Locker lock;
205 if(_impl.IsNull()) return SALOMEDS::SObject::_nil();
206 Handle(SALOMEDSImpl_SObject) aSO = _impl->AddUseCase((char*)theName);
207 SALOMEDS::SObject_var so = SALOMEDS_SObject_i::New (aSO, _orb);
211 //============================================================================
212 /*! Function : GetUseCaseIterator
213 * Purpose : Creates a new UseCase iterator, if anObject is null all use cases are iterated
215 //============================================================================
216 SALOMEDS::UseCaseIterator_ptr SALOMEDS_UseCaseBuilder_i::GetUseCaseIterator(SALOMEDS::SObject_ptr theObject)
218 SALOMEDS::Locker lock;
220 if(_impl.IsNull()) return SALOMEDS::UseCaseIterator::_nil();
221 Handle(SALOMEDSImpl_UseCaseIterator) anItr;
222 if(!CORBA::is_nil(theObject)) anItr = _impl->GetUseCaseIterator(_impl->GetSObject(theObject->GetID()));
223 else anItr = _impl->GetUseCaseIterator(NULL);
224 SALOMEDS_UseCaseIterator_i* aServant = new SALOMEDS_UseCaseIterator_i(anItr, _orb);
225 SALOMEDS::UseCaseIterator_var anIterator = SALOMEDS::UseCaseIterator::_narrow(aServant->_this());
226 return anIterator._retn();