Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

Omniifr::Dependency2< T_IRObjectSeq > Class Template Reference

Dependency for sequence<IRObject>. More...

#include <Dependency.h>

Inheritance diagram for Omniifr::Dependency2< T_IRObjectSeq >:

Inheritance graph
[legend]
Collaboration diagram for Omniifr::Dependency2< T_IRObjectSeq >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Dependency2 (IRObject_impl *owner)
virtual ~Dependency2 ()
const T_IRObjectSeq & in ()
T_IRObjectSeq * copy ()
void assign (const T_IRObjectSeq &irobjectSeq)
void clear ()
 release the current dependencies.

Private Member Functions

void check (const T_IRObjectSeq &irobjectSeq)
 Throws BAD_PARAM if any description in the sequence has the same name as any other, or if a NIL reference is found.
void set (const T_IRObjectSeq &irobjectSeq)
 establish a new set of dependencies.

Private Attributes

T_IRObjectSeq _irobjectSeq
list< IRObject_impl * > _servants

Detailed Description

template<class T_IRObjectSeq>
class Omniifr::Dependency2< T_IRObjectSeq >

Dependency for sequence<IRObject>.

Definition at line 148 of file Dependency.h.


Constructor & Destructor Documentation

template<class T_IRObjectSeq>
Omniifr::Dependency2< T_IRObjectSeq >::Dependency2 IRObject_impl owner  )  [inline]
 

Definition at line 154 of file Dependency.h.

template<class T_IRObjectSeq>
virtual Omniifr::Dependency2< T_IRObjectSeq >::~Dependency2  )  [inline, virtual]
 

Definition at line 156 of file Dependency.h.

00156 {}


Member Function Documentation

template<class T_IRObjectSeq>
void Omniifr::Dependency2< T_IRObjectSeq >::assign const T_IRObjectSeq &  irobjectSeq  )  [inline]
 

Definition at line 159 of file Dependency.h.

Referenced by Omniifr::InterfaceDef_impl::base_interfaces(), Omniifr::OperationDef_impl::exceptions(), Omniifr::OperationDef_impl::reincarnate(), and Omniifr::InterfaceDef_impl::reincarnate().

00160   {
00161     check(irobjectSeq); // Throws BAD_PARAM if a problem is found.
00162     clear();            // Does not throw any exceptions.
00163     set(irobjectSeq);
00164   }

template<class T_IRObjectSeq>
void Omniifr::Dependency2< T_IRObjectSeq >::check const T_IRObjectSeq &  irobjectSeq  )  [inline, private]
 

Throws BAD_PARAM if any description in the sequence has the same name as any other, or if a NIL reference is found.

Parameters:
irobjectSeq sequence<XxxDescription> where XxxDescription is a sequence of struct that have string member 'name' & IDLType member 'type_def'.

Definition at line 187 of file Dependency.h.

Referenced by Omniifr::Dependency2< InterfaceDefSeq >::assign().

00188   {
00189     for(CORBA::ULong i(0); i<irobjectSeq.length(); i++)
00190     {
00191       if(CORBA::is_nil(irobjectSeq[i]))
00192           throw CORBA::BAD_PARAM(
00193             IFELSE_OMNIORB4(omni::BAD_PARAM_InvalidObjectRef,43),
00194             CORBA::COMPLETED_NO
00195           );
00196     }
00197   }

template<class T_IRObjectSeq>
void Omniifr::Dependency2< T_IRObjectSeq >::clear  )  [inline]
 

release the current dependencies.

Definition at line 166 of file Dependency.h.

Referenced by Omniifr::Dependency2< InterfaceDefSeq >::assign(), Omniifr::OperationDef_impl::uncheckedDestroy(), and Omniifr::InterfaceDef_impl::uncheckedDestroy().

00167   {
00168     for(typename list<IRObject_impl*>::iterator i=_servants.begin();
00169         i!=_servants.end();
00170         ++i)
00171     {
00172       if(*i)
00173         (*i)->undepend(this);
00174     }
00175     _servants.clear();
00176     _irobjectSeq.length(0);
00177   }

template<class T_IRObjectSeq>
T_IRObjectSeq* Omniifr::Dependency2< T_IRObjectSeq >::copy  )  [inline]
 

Definition at line 158 of file Dependency.h.

Referenced by Omniifr::InterfaceDef_impl::base_interfaces(), and Omniifr::OperationDef_impl::exceptions().

00158 {return new T_IRObjectSeq(_irobjectSeq);}

template<class T_IRObjectSeq>
const T_IRObjectSeq& Omniifr::Dependency2< T_IRObjectSeq >::in  )  [inline]
 

Definition at line 157 of file Dependency.h.

Referenced by Omniifr::InterfaceDef_impl::baseInterfacesIds(), Omniifr::InterfaceDef_impl::checkInheritedNameClash(), Omniifr::InterfaceDef_impl::contents(), Omniifr::InterfaceDef_impl::is_a(), Omniifr::OperationDef_impl::output(), and Omniifr::InterfaceDef_impl::output().

00157 {return _irobjectSeq;}

template<class T_IRObjectSeq>
void Omniifr::Dependency2< T_IRObjectSeq >::set const T_IRObjectSeq &  irobjectSeq  )  [inline, private]
 

establish a new set of dependencies.

Parameters:
irobjectSeq A NON-NIL CORBA reference.

Definition at line 202 of file Dependency.h.

Referenced by Omniifr::Dependency2< InterfaceDefSeq >::assign().

00203   {
00204     assert(_servants.empty());
00205     assert(0==_irobjectSeq.length());
00206     _irobjectSeq=irobjectSeq;
00207     for(CORBA::ULong i(0); i<irobjectSeq.length(); i++)
00208     {
00209       IRObject_impl* irobject =referenceToServant(irobjectSeq[i]); // _add_ref()
00210       if(irobject)
00211       {
00212         irobject->depend(this);
00213         irobject->_remove_ref();                                   // _rem_ref()
00214       }
00215       _servants.push_back(irobject);
00216     }
00217   }


Member Data Documentation

template<class T_IRObjectSeq>
T_IRObjectSeq Omniifr::Dependency2< T_IRObjectSeq >::_irobjectSeq [private]
 

Definition at line 151 of file Dependency.h.

template<class T_IRObjectSeq>
list<IRObject_impl*> Omniifr::Dependency2< T_IRObjectSeq >::_servants [private]
 

Definition at line 152 of file Dependency.h.


The documentation for this class was generated from the following file:
Generated on Fri Mar 4 13:03:59 2005 for OmniIFR by  doxygen 1.4.1