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

Omniifr::Dependency3< T_xxxDescriptionSeq > Class Template Reference

Dependency for sequence<xxxDescription>, where xxxDescription is a struct with the following members: Identifier name IRObject type_def. More...

#include <Dependency.h>

Inheritance diagram for Omniifr::Dependency3< T_xxxDescriptionSeq >:

Inheritance graph
[legend]
Collaboration diagram for Omniifr::Dependency3< T_xxxDescriptionSeq >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Dependency3 (IRObject_impl *owner)
virtual ~Dependency3 ()
const T_xxxDescriptionSeq & in ()
T_xxxDescriptionSeq * copy ()
void assign (const T_xxxDescriptionSeq &descriptionSeq)
void uncheckedAssign (const T_xxxDescriptionSeq &descriptionSeq)
 Performs an assignment but does not call check().
void clear ()
 release the current dependencies.

Private Member Functions

void check (const T_xxxDescriptionSeq &descriptionSeq)
 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_xxxDescriptionSeq &descriptionSeq)
 establish a new set of dependencies.

Private Attributes

T_xxxDescriptionSeq _descriptionSeq
list< IRObject_impl * > _servants

Detailed Description

template<class T_xxxDescriptionSeq>
class Omniifr::Dependency3< T_xxxDescriptionSeq >

Dependency for sequence<xxxDescription>, where xxxDescription is a struct with the following members: Identifier name IRObject type_def.

Definition at line 231 of file Dependency.h.


Constructor & Destructor Documentation

template<class T_xxxDescriptionSeq>
Omniifr::Dependency3< T_xxxDescriptionSeq >::Dependency3 IRObject_impl owner  )  [inline]
 

Definition at line 237 of file Dependency.h.

template<class T_xxxDescriptionSeq>
virtual Omniifr::Dependency3< T_xxxDescriptionSeq >::~Dependency3  )  [inline, virtual]
 

Definition at line 239 of file Dependency.h.

00239 {}


Member Function Documentation

template<class T_xxxDescriptionSeq>
void Omniifr::Dependency3< T_xxxDescriptionSeq >::assign const T_xxxDescriptionSeq &  descriptionSeq  )  [inline]
 

Definition at line 245 of file Dependency.h.

Referenced by Omniifr::UnionDef_impl::discriminator_type_def(), Omniifr::StructDef_impl::members(), Omniifr::ExceptionDef_impl::members(), and Omniifr::OperationDef_impl::params().

00246   {
00247     check(descriptionSeq); // Throws BAD_PARAM if a problem is found.
00248     uncheckedAssign(descriptionSeq);
00249   }

template<class T_xxxDescriptionSeq>
void Omniifr::Dependency3< T_xxxDescriptionSeq >::check const T_xxxDescriptionSeq &  descriptionSeq  )  [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:
descriptionSeq sequence<XxxDescription> where XxxDescription is a sequence of struct that have string member 'name' & IDLType member 'type_def'.

Definition at line 280 of file Dependency.h.

Referenced by Omniifr::Dependency3< StructMemberSeq >::assign().

00281   {
00282     for(CORBA::ULong i(0); i<descriptionSeq.length(); i++)
00283     {
00284       IdentifierUtil::checkInvalid(descriptionSeq[i].name);
00285       if(CORBA::is_nil(descriptionSeq[i].type_def))
00286           throw CORBA::BAD_PARAM(
00287             IFELSE_OMNIORB4(omni::BAD_PARAM_InvalidObjectRef,43),
00288             CORBA::COMPLETED_NO
00289           );
00290       for(CORBA::ULong j(i+1); j<descriptionSeq.length(); j++)
00291       {
00292         if(0==strcasecmp(descriptionSeq[i].name,descriptionSeq[j].name))
00293             throw CORBA::BAD_PARAM(
00294               IFELSE_OMNIORB4(omni::BAD_PARAM_InvalidMemberName,17),
00295               CORBA::COMPLETED_NO
00296             );
00297       }
00298     }
00299   }

template<class T_xxxDescriptionSeq>
void Omniifr::Dependency3< T_xxxDescriptionSeq >::clear  )  [inline]
 

release the current dependencies.

Definition at line 259 of file Dependency.h.

Referenced by Omniifr::Dependency3< StructMemberSeq >::uncheckedAssign(), Omniifr::UnionDef_impl::uncheckedDestroy(), Omniifr::StructDef_impl::uncheckedDestroy(), Omniifr::OperationDef_impl::uncheckedDestroy(), and Omniifr::ExceptionDef_impl::uncheckedDestroy().

00260   {
00261     for(typename list<IRObject_impl*>::iterator i=_servants.begin();
00262         i!=_servants.end();
00263         ++i)
00264     {
00265       if(*i)
00266         (*i)->undepend(this);
00267     }
00268     _servants.clear();
00269     _descriptionSeq.length(0);
00270   }

template<class T_xxxDescriptionSeq>
T_xxxDescriptionSeq* Omniifr::Dependency3< T_xxxDescriptionSeq >::copy  )  [inline]
 

Definition at line 241 of file Dependency.h.

Referenced by Omniifr::UnionDef_impl::members(), Omniifr::StructDef_impl::members(), Omniifr::ExceptionDef_impl::members(), and Omniifr::OperationDef_impl::params().

00242   {
00243     return new T_xxxDescriptionSeq(_descriptionSeq);
00244   }

template<class T_xxxDescriptionSeq>
const T_xxxDescriptionSeq& Omniifr::Dependency3< T_xxxDescriptionSeq >::in  )  [inline]
 

Definition at line 240 of file Dependency.h.

Referenced by Omniifr::OperationDef_impl::describe(), Omniifr::OperationDef_impl::mode(), Omniifr::UnionDef_impl::output(), Omniifr::StructDef_impl::output(), Omniifr::OperationDef_impl::output(), Omniifr::ExceptionDef_impl::output(), Omniifr::OperationDef_impl::result_def(), Omniifr::UnionDef_impl::type(), Omniifr::StructDef_impl::type(), and Omniifr::ExceptionDef_impl::type().

00240 {return _descriptionSeq;}

template<class T_xxxDescriptionSeq>
void Omniifr::Dependency3< T_xxxDescriptionSeq >::set const T_xxxDescriptionSeq &  descriptionSeq  )  [inline, private]
 

establish a new set of dependencies.

Parameters:
descriptionSeq A NON-NIL CORBA reference.

Definition at line 304 of file Dependency.h.

Referenced by Omniifr::Dependency3< StructMemberSeq >::uncheckedAssign().

00305   {
00306     assert(_servants.empty());
00307     assert(0==_descriptionSeq.length());
00308     _descriptionSeq=descriptionSeq;
00309     for(CORBA::ULong i(0); i<descriptionSeq.length(); i++)
00310     {
00311       // referenceToServant() implicitly calls _add_ref()
00312       IRObject_impl* irobject =referenceToServant(descriptionSeq[i].type_def);
00313       if(irobject)
00314       {
00315         irobject->depend(this);
00316         // cancel the implicit _add_ref() in referenceToServant().
00317         irobject->_remove_ref();
00318       }
00319       _servants.push_back(irobject);
00320     }
00321   }

template<class T_xxxDescriptionSeq>
void Omniifr::Dependency3< T_xxxDescriptionSeq >::uncheckedAssign const T_xxxDescriptionSeq &  descriptionSeq  )  [inline]
 

Performs an assignment but does not call check().

Used when the owner has already permormed its own checks (in UnionDef_impl).

Definition at line 253 of file Dependency.h.

Referenced by Omniifr::Dependency3< StructMemberSeq >::assign(), Omniifr::UnionDef_impl::members(), Omniifr::UnionDef_impl::reincarnate(), Omniifr::StructDef_impl::reincarnate(), Omniifr::OperationDef_impl::reincarnate(), and Omniifr::ExceptionDef_impl::reincarnate().

00254   {
00255     clear(); // Does not throw any exceptions.
00256     set(descriptionSeq);
00257   }


Member Data Documentation

template<class T_xxxDescriptionSeq>
T_xxxDescriptionSeq Omniifr::Dependency3< T_xxxDescriptionSeq >::_descriptionSeq [private]
 

Definition at line 234 of file Dependency.h.

template<class T_xxxDescriptionSeq>
list<IRObject_impl*> Omniifr::Dependency3< T_xxxDescriptionSeq >::_servants [private]
 

Definition at line 235 of file Dependency.h.


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