diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 19:29:54 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 19:29:54 +0000 |
commit | eeeff9e795f44b7858aa9537a9c03e7a6854f007 (patch) | |
tree | 09487628621d01cb6bab1384bbf145bd6066497d /TAO/tao | |
parent | 14cfc6c404c62adf27126bd4a74306396d7ad092 (diff) | |
download | ATCD-eeeff9e795f44b7858aa9537a9c03e7a6854f007.tar.gz |
ChangeLogTag:Wed Jul 7 14:24:08 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/tao')
-rw-r--r-- | TAO/tao/CDR_Interpreter.cpp | 6 | ||||
-rw-r--r-- | TAO/tao/DomainC.cpp | 8 | ||||
-rw-r--r-- | TAO/tao/DynAnyC.cpp | 24 | ||||
-rw-r--r-- | TAO/tao/IORC.cpp | 108 | ||||
-rw-r--r-- | TAO/tao/IORC.h | 102 | ||||
-rw-r--r-- | TAO/tao/IORC.i | 289 | ||||
-rw-r--r-- | TAO/tao/IORManipulation.cpp | 12 | ||||
-rw-r--r-- | TAO/tao/Makefile | 21 | ||||
-rw-r--r-- | TAO/tao/MessagingC.cpp | 8 | ||||
-rw-r--r-- | TAO/tao/ORB.cpp | 2 | ||||
-rw-r--r-- | TAO/tao/ORB_Core.h | 2 | ||||
-rw-r--r-- | TAO/tao/Object.cpp | 4 | ||||
-rw-r--r-- | TAO/tao/PolicyC.cpp | 12 | ||||
-rw-r--r-- | TAO/tao/PollableC.cpp | 12 | ||||
-rw-r--r-- | TAO/tao/decode.cpp | 16 | ||||
-rw-r--r-- | TAO/tao/deep_free.cpp | 6 | ||||
-rw-r--r-- | TAO/tao/encode.cpp | 18 | ||||
-rw-r--r-- | TAO/tao/varout.cpp | 51 | ||||
-rw-r--r-- | TAO/tao/varout.h | 634 | ||||
-rw-r--r-- | TAO/tao/varout.i | 58 |
20 files changed, 190 insertions, 1203 deletions
diff --git a/TAO/tao/CDR_Interpreter.cpp b/TAO/tao/CDR_Interpreter.cpp index d72ef2cc6b8..70e944d816b 100644 --- a/TAO/tao/CDR_Interpreter.cpp +++ b/TAO/tao/CDR_Interpreter.cpp @@ -93,6 +93,8 @@ TAO_CDR_Interpreter::table_[CORBA::TC_KIND_COUNT] = // make sure that alignment of IDL-defined data types is consistent // (one byte). +typedef TAO_Object_Field_T<CORBA::Object,CORBA::Object_var> TAO_Object_Field_Class; + enum TCKIND { tk_null = 0, @@ -178,7 +180,7 @@ declare_entry (CORBA::Any, tk_any); declare_entry (CORBA::TypeCode_ptr, tk_TypeCode); declare_entry (CORBA::Principal_ptr, tk_Principal); -declare_entry (TAO_Object_Field_T<CORBA_Object>, tk_objref); +declare_entry (TAO_Object_Field_Class, tk_objref); declare_entry (CORBA::String, tk_string); #if !defined (TAO_NO_COPY_OCTET_SEQUENCES) @@ -210,7 +212,7 @@ TAO_CDR_Interpreter::init (void) setup_entry (CORBA::TypeCode_ptr, tk_TypeCode); setup_entry (CORBA::Principal_ptr, tk_Principal); setup_entry (CORBA::Object_ptr, tk_objref); - setup_entry (TAO_Object_Field_T<CORBA_Object>, tk_objref); + setup_entry (TAO_Object_Field_Class, tk_objref); enum generic_enum {a, b, c, d}; diff --git a/TAO/tao/DomainC.cpp b/TAO/tao/DomainC.cpp index 8e84c3969db..ac8406364a5 100644 --- a/TAO/tao/DomainC.cpp +++ b/TAO/tao/DomainC.cpp @@ -346,11 +346,11 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, CORBA_DomainManager_ptr } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA_DomainManager>; + template class TAO_Object_Field_T<CORBA_DomainManager,CORBA_DomainManager_var>; template class TAO_Unbounded_Object_Sequence<CORBA_DomainManager,CORBA_DomainManager_var>; template class TAO_Object_Manager<CORBA_DomainManager,CORBA_DomainManager_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA_DomainManager> +# pragma instantiate TAO_Object_Field_T<CORBA_DomainManager,CORBA_DomainManager_var> # pragma instantiate TAO_Unbounded_Object_Sequence<CORBA_DomainManager,CORBA_DomainManager_var> # pragma instantiate TAO_Object_Manager<CORBA_DomainManager,CORBA_DomainManager_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ @@ -408,9 +408,9 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, CORBA_ConstructionPolicy } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA_ConstructionPolicy>; + template class TAO_Object_Field_T<CORBA_ConstructionPolicy,CORBA_ConstructionPolicy_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA_ConstructionPolicy> +# pragma instantiate TAO_Object_Field_T<CORBA_ConstructionPolicy,CORBA_ConstructionPolicy_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ #endif /* ! defined (TAO_HAS_MINIMUM_CORBA) */ diff --git a/TAO/tao/DynAnyC.cpp b/TAO/tao/DynAnyC.cpp index 49ee76e240e..85bdf7fb301 100644 --- a/TAO/tao/DynAnyC.cpp +++ b/TAO/tao/DynAnyC.cpp @@ -1356,19 +1356,19 @@ CORBA::TypeCode_ptr _tc_CORBA_DynArray = #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA_DynAny>; - template class TAO_Object_Field_T<CORBA_DynEnum>; - template class TAO_Object_Field_T<CORBA_DynStruct>; - template class TAO_Object_Field_T<CORBA_DynUnion>; - template class TAO_Object_Field_T<CORBA_DynSequence>; - template class TAO_Object_Field_T<CORBA_DynArray>; + template class TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var>; + template class TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var>; + template class TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var>; + template class TAO_Object_Field_T<CORBA_DynUnion,CORBA_DynUnion_var>; + template class TAO_Object_Field_T<CORBA_DynSequence,CORBA_DynSequence_var>; + template class TAO_Object_Field_T<CORBA_DynArray,CORBA_DynArray_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA_DynAny> -# pragma instantiate TAO_Object_Field_T<CORBA_DynEnum> -# pragma instantiate TAO_Object_Field_T<CORBA_DynStruct> -# pragma instantiate TAO_Object_Field_T<CORBA_DynUnion> -# pragma instantiate TAO_Object_Field_T<CORBA_DynSequence> -# pragma instantiate TAO_Object_Field_T<CORBA_DynArray> +# pragma instantiate TAO_Object_Field_T<CORBA_DynAny,CORBA_DynAny_var> +# pragma instantiate TAO_Object_Field_T<CORBA_DynEnum,CORBA_DynEnum_var> +# pragma instantiate TAO_Object_Field_T<CORBA_DynStruct,CORBA_DynStruct_var> +# pragma instantiate TAO_Object_Field_T<CORBA_DynUnion,CORBA_DynUnion_var> +# pragma instantiate TAO_Object_Field_T<CORBA_DynSequence,CORBA_DynSequence_var> +# pragma instantiate TAO_Object_Field_T<CORBA_DynArray,CORBA_DynArray_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ #endif /* TAO_HAS_MINIMUM_CORBA */ diff --git a/TAO/tao/IORC.cpp b/TAO/tao/IORC.cpp index a0e0dbc35cd..5f5f85ea73e 100644 --- a/TAO/tao/IORC.cpp +++ b/TAO/tao/IORC.cpp @@ -304,87 +304,6 @@ static CORBA::TypeCode _tc_TAO_tc_TAO_IOP_TAO_IOR_Manipulation_Invalid_IOR (CORB CORBA::TypeCode_ptr TAO_IOP::TAO_IOR_Manipulation::_tc_Invalid_IOR = &_tc_TAO_tc_TAO_IOP_TAO_IOR_Manipulation_Invalid_IOR; -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - -#if !defined (__TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CS_) -#define __TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CS_ - - // The Base_Sequence functions, please see tao/Sequence.h - void - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_allocate_buffer (CORBA::ULong length) - { - CORBA::Object **tmp = TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (length); - - if (this->buffer_ != 0) - { - CORBA::Object **old = ACE_reinterpret_cast (CORBA::Object**, this->buffer_); - for (CORBA::ULong i = 0; i < this->length_; ++i) - if (!this->release_) - tmp[i] = CORBA::Object::_duplicate (old[i]); - else - tmp[i] = old[i]; - - if (this->release_) - delete[] old; - - } - this->buffer_ = tmp; - } - - void - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_deallocate_buffer (void) - { - if (this->buffer_ == 0 || this->release_ == 0) - return; - CORBA::Object **tmp = ACE_reinterpret_cast (CORBA::Object**, this->buffer_); - for (CORBA::ULong i = 0; i < this->length_; ++i) - { - CORBA::release (tmp[i]); - tmp[i] = CORBA::Object::_nil (); - } - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::freebuf (tmp); - this->buffer_ = 0; - } - - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::~_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (void) - { - this->_deallocate_buffer (); - } - - void - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_shrink_buffer (CORBA::ULong nl, CORBA::ULong ol) - { - CORBA::Object **tmp = ACE_reinterpret_cast (CORBA::Object**, this->buffer_); - - for (CORBA::ULong i = nl; i < ol; ++i) - { - CORBA::release (tmp[i]); - tmp[i] = CORBA::Object::_nil (); - } - } - void - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_downcast ( - void* target, - CORBA_Object *src, - CORBA_Environment &ACE_TRY_ENV - ) - { - CORBA::Object **tmp = ACE_static_cast (CORBA::Object**, target); - *tmp = CORBA::Object::_narrow (src, ACE_TRY_ENV); - } - - CORBA_Object* - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_upcast (void *src) const - { - CORBA::Object **tmp = ACE_static_cast (CORBA::Object**, src); - return *tmp; - } - -#endif /* end #if !defined */ - - -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - #if !defined (_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CS_) #define _TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CS_ @@ -396,30 +315,15 @@ TAO_IOP::TAO_IOR_Manipulation::IORList::IORList (void) {} TAO_IOP::TAO_IOR_Manipulation::IORList::IORList (CORBA::ULong max) // uses max size : -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - (max) + TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> (max) {} TAO_IOP::TAO_IOR_Manipulation::IORList::IORList (CORBA::ULong max, CORBA::ULong length, CORBA::Object_ptr *buffer, CORBA::Boolean release) : -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - (max, length, buffer, release) + TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> (max, length, buffer, release) {} TAO_IOP::TAO_IOR_Manipulation::IORList::IORList (const IORList &seq) // copy ctor : -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - (seq) + TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> (seq) {} TAO_IOP::TAO_IOR_Manipulation::IORList::~IORList (void) // dtor {} @@ -862,9 +766,11 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, TAO_IOP::TAO_IOR_Manipul } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<TAO_IOP::TAO_IOR_Manipulation>; + template class TAO_Object_Field_T<TAO_IOP::TAO_IOR_Manipulation,TAO_IOP::TAO_IOR_Manipulation_var>; + template class TAO_Object_Manager<TAO_IOP::TAO_IOR_Manipulation,TAO_IOP::TAO_IOR_Manipulation_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<TAO_IOP::TAO_IOR_Manipulation> +# pragma instantiate TAO_Object_Field_T<TAO_IOP::TAO_IOR_Manipulation,TAO_IOP::TAO_IOR_Manipulation_var> +# pragma instantiate TAO_Object_Manager<TAO_IOP::TAO_IOR_Manipulation,TAO_IOP::TAO_IOR_Manipulation_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ void operator<<= (CORBA::Any &_tao_any, const TAO_IOP::TAO_IOR_Manipulation::EmptyProfileList &_tao_elem) // copying diff --git a/TAO/tao/IORC.h b/TAO/tao/IORC.h index 814f22c2b2a..fd5488bef8d 100644 --- a/TAO/tao/IORC.h +++ b/TAO/tao/IORC.h @@ -277,90 +277,6 @@ TAO_NAMESPACE TAO_IOP #endif /* end #if !defined */ - -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - -#if !defined (__TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CH_) -#define __TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CH_ - - class _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object; - - class TAO_Export _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList : public TAO_Unbounded_Base_Sequence - { - public: - // = Initialization and termination methods. - - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (void); - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (CORBA::ULong maximum); - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (CORBA::ULong maximum, - CORBA::ULong length, - CORBA::Object* *value, - CORBA::Boolean release = 0); - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList(const _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList &rhs); - virtual ~_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (void); - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList &operator= (const _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList &rhs); - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object operator[] (CORBA::ULong index) const; - static CORBA::Object **allocbuf (CORBA::ULong nelems); - static void freebuf (CORBA::Object **buffer); - // The Base_Sequence functions, please see tao/Sequence.h - virtual void _allocate_buffer (CORBA::ULong length); - virtual void _deallocate_buffer (void); - CORBA::Object* *get_buffer (CORBA::Boolean orphan = 0); - const CORBA::Object* *get_buffer (void) const; - virtual void _shrink_buffer (CORBA::ULong nl, CORBA::ULong ol); - virtual void _downcast ( - void* target, - CORBA_Object *src, - CORBA_Environment &ACE_TRY_ENV = - TAO_default_environment () - ); - virtual CORBA_Object* _upcast (void *src) const; - - }; - -#endif /* end #if !defined */ - - -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - -#if !defined (__TAO_OBJECT_MANAGER_TAO_IOP_TAO_IOR_MANIPULATION_CORBA_OBJECT_CH_) -#define __TAO_OBJECT_MANAGER_TAO_IOP_TAO_IOR_MANIPULATION_CORBA_OBJECT_CH_ - - class TAO_Export _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object - { - friend class _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList; - public: - - // = Initialization and termination methods. - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (const _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &rhs); - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (CORBA::Object** buffer, CORBA::Boolean release); - ~_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (void); - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &operator= (const _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &rhs); - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &operator= (CORBA::Object *p); - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &operator= (CORBA::Object_var &p); - CORBA::Object* operator-> (void) const; - operator const CORBA::Object *() const; // Cast (read-only). - operator CORBA::Object *&(); // Cast. - CORBA::Object *in (void) const; // in - CORBA::Object *&inout (void); // inout - CORBA::Object *&out (void); // out - CORBA::Object *_retn (void); // retn - private: - CORBA::Object **ptr_; - // data member, notice that it is a pointer, to implement the - // reference behavior for assignment. - - CORBA::Boolean release_; - // release flag based on parent's flag - }; - -#endif /* end #if !defined */ - - -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - #if !defined (_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CH_) #define _TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CH_ @@ -369,11 +285,7 @@ TAO_NAMESPACE TAO_IOP // ************************************************************* class TAO_Export IORList : public -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList -#else /* TAO_USE_SEQUENCE_TEMPLATES */ TAO_Unbounded_Object_Sequence<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ { public: IORList (void); // default ctor @@ -416,12 +328,7 @@ TAO_NAMESPACE TAO_IOP operator IORList &(); operator IORList &() const; -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Object_Manager<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - operator[] (CORBA::ULong index); + TAO_Object_Manager<CORBA::Object,CORBA::Object_var> operator[] (CORBA::ULong index); // in, inout, out, _retn const IORList &in (void) const; IORList &inout (void); @@ -452,12 +359,7 @@ TAO_NAMESPACE TAO_IOP IORList *&ptr (void); IORList *operator-> (void); -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - _TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Object_Manager<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - operator[] (CORBA::ULong index); + TAO_Object_Manager<CORBA::Object,CORBA::Object_var> operator[] (CORBA::ULong index); private: IORList *&ptr_; diff --git a/TAO/tao/IORC.i b/TAO/tao/IORC.i index 6d504d0b23d..74f2ebace5e 100644 --- a/TAO/tao/IORC.i +++ b/TAO/tao/IORC.i @@ -218,278 +218,6 @@ TAO_IOP::TAO_IOR_Manipulation_out::operator-> (void) // ************************************************************* -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - -#if !defined (__TAO_OBJECT_MANAGER_TAO_IOP_TAO_IOR_MANIPULATION_CORBA_OBJECT_CI_) -#define __TAO_OBJECT_MANAGER_TAO_IOP_TAO_IOR_MANIPULATION_CORBA_OBJECT_CI_ - - // = Initialization and termination methods. - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (const TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &rhs) - : ptr_ (rhs.ptr_), - release_ (rhs.release_) - { - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (CORBA::Object** buffer, CORBA::Boolean release) - : ptr_ (buffer), - release_ (release) - { - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::~_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (void) - { - } - - ACE_INLINE TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object & - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator= (const TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object &rhs) - { - if (this == &rhs) - return *this; - - if (this->release_) - { - CORBA::release (*this->ptr_); - *this->ptr_ = CORBA::Object::_duplicate (*rhs.ptr_); - } - else - *this->ptr_ = *rhs.ptr_; - - return *this; - } - - ACE_INLINE TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object & - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator= (CORBA::Object *p) - // Assignment from CORBA::Object *. - { - if (this->release_) - { - CORBA::release (*this->ptr_); - *this->ptr_ = p; - } - else - *this->ptr_ = p; - - return *this; - } - - ACE_INLINE TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object & - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator= (CORBA::Object_var &p) - // Assignment from CORBA::Object_var . - { - if (this->release_) - { - CORBA::release (*this->ptr_); - *this->ptr_ = CORBA::Object::_duplicate(p.in()); - } - else - *this->ptr_ = p.in (); - - return *this; - } - - ACE_INLINE - CORBA::Object* - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator-> (void) const - { - return *this->ptr_; - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator const CORBA::Object *() const // Cast (read-only). - { - return *this->ptr_; - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::operator CORBA::Object *&() // Cast. - { - return *this->ptr_; - } - - ACE_INLINE CORBA::Object * - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::in (void) const // in - { - return *this->ptr_; - } - - ACE_INLINE CORBA::Object *& - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::inout (void) // inout - { - return *this->ptr_; - } - - ACE_INLINE CORBA::Object *& - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::out (void) // out - { - CORBA::release (*this->ptr_); - *this->ptr_ = CORBA::Object::_nil (); - return *this->ptr_; - } - - ACE_INLINE CORBA::Object * - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object::_retn (void) // retn - { - CORBA::Object *temp = *this->ptr_; - *this->ptr_ = CORBA::Object::_nil (); - return temp; - } - -#endif /* end #if !defined */ - - -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - -#if !defined (__TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CI_) -#define __TAO_UNBOUNDED_OBJECT_SEQUENCE_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CI_ - - ACE_INLINE CORBA::Object ** - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (CORBA::ULong nelems) - { - CORBA::Object **buf = 0; - - ACE_NEW_RETURN (buf, CORBA::Object*[nelems], 0); - - for (CORBA::ULong i = 0; i < nelems; i++) - buf[i] = CORBA::Object::_nil (); - - return buf; - } - - ACE_INLINE void - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::freebuf (CORBA::Object **buffer) - { - if (buffer == 0) - return; - delete[] buffer; - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (void) - { - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (CORBA::ULong maximum) - : TAO_Unbounded_Base_Sequence (maximum, TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (maximum)) - { - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList (CORBA::ULong maximum, - CORBA::ULong length, - CORBA::Object* *value, - CORBA::Boolean release) - : TAO_Unbounded_Base_Sequence (maximum, length, value, release) - { - } - - ACE_INLINE - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList(const TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList &rhs) - : TAO_Unbounded_Base_Sequence (rhs) - { - CORBA::Object **tmp1 = TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (this->maximum_); - CORBA::Object ** const tmp2 = ACE_reinterpret_cast (CORBA::Object ** ACE_CAST_CONST, rhs.buffer_); - - for (CORBA::ULong i = 0; i < rhs.length_; ++i) - tmp1[i] = CORBA::Object::_duplicate (tmp2[i]); - - this->buffer_ = tmp1; - } - - ACE_INLINE TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList & - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::operator= (const TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList &rhs) - { - if (this == &rhs) - return *this; - - if (this->release_) - { - CORBA::Object **tmp = ACE_reinterpret_cast (CORBA::Object **, this->buffer_); - - for (CORBA::ULong i = 0; i < this->length_; ++i) - { - CORBA::release (tmp[i]); - tmp[i] = CORBA::Object::_nil (); - } - if (this->maximum_ < rhs.maximum_) - { - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::freebuf (tmp); - this->buffer_ = TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (rhs.maximum_); - } - } - else - this->buffer_ = TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (rhs.maximum_); - - TAO_Unbounded_Base_Sequence::operator= (rhs); - - CORBA::Object **tmp1 = ACE_reinterpret_cast (CORBA::Object **, this->buffer_); - CORBA::Object ** const tmp2 = ACE_reinterpret_cast (CORBA::Object ** ACE_CAST_CONST, rhs.buffer_); - - for (CORBA::ULong i = 0; i < rhs.length_; ++i) - tmp1[i] = CORBA::Object::_duplicate (tmp2[i]); - - return *this; - } - - ACE_INLINE TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::operator[] (CORBA::ULong index) const - // read-write accessor - { - ACE_ASSERT (index < this->maximum_); - CORBA::Object ** const tmp = ACE_reinterpret_cast (CORBA::Object ** ACE_CAST_CONST, this->buffer_); - return TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object (tmp + index, this->release_); - } - - ACE_INLINE CORBA::Object* * - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::get_buffer (CORBA::Boolean orphan) - { - CORBA::Object **result = 0; - if (orphan == 0) - { - // We retain ownership. - if (this->buffer_ == 0) - { - result = TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::allocbuf (this->maximum_); - this->buffer_ = result; - } - else - { - result = ACE_reinterpret_cast (CORBA::Object**, this->buffer_); - } - } - else // if (orphan == 1) - { - if (this->release_ != 0) - { - // We set the state back to default and relinquish - // ownership. - result = ACE_reinterpret_cast(CORBA::Object**,this->buffer_); - this->maximum_ = 0; - this->length_ = 0; - this->buffer_ = 0; - this->release_ = 0; - } - } - return result; - } - - ACE_INLINE const CORBA::Object* * - TAO_IOP::TAO_IOR_Manipulation::_TAO_Unbounded_Object_Sequence_TAO_IOP_TAO_IOR_Manipulation_IORList::get_buffer (void) const - { - return ACE_reinterpret_cast(const CORBA::Object ** ACE_CAST_CONST, this->buffer_); - } - - -#endif /* end #if !defined */ - - -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - #if !defined (_TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CI_) #define _TAO_IOP_TAO_IOR_MANIPULATION_IORLIST_CI_ @@ -571,13 +299,7 @@ TAO_IOP::TAO_IOR_Manipulation::IORList_var::operator TAO_IOP::TAO_IOR_Manipulati return *this->ptr_; } -ACE_INLINE -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Object_Manager<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - +ACE_INLINE TAO_Object_Manager<CORBA::Object,CORBA::Object_var> TAO_IOP::TAO_IOR_Manipulation::IORList_var::operator[] (CORBA::ULong index) { return this->ptr_->operator[] (index); @@ -674,13 +396,7 @@ TAO_IOP::TAO_IOR_Manipulation::IORList_out::operator-> (void) return this->ptr_; } -ACE_INLINE -#if !defined (TAO_USE_SEQUENCE_TEMPLATES) - TAO_IOP::TAO_IOR_Manipulation::_TAO_Object_Manager_TAO_IOP_TAO_IOR_Manipulation_CORBA_Object -#else /* TAO_USE_SEQUENCE_TEMPLATES */ - TAO_Object_Manager<CORBA::Object,CORBA::Object_var> -#endif /* !TAO_USE_SEQUENCE_TEMPLATES */ - +ACE_INLINE TAO_Object_Manager<CORBA::Object,CORBA::Object_var> TAO_IOP::TAO_IOR_Manipulation::IORList_out::operator[] (CORBA::ULong index) { return this->ptr_->operator[] (index); @@ -834,4 +550,3 @@ operator>> ( ACE_ENDTRY; return 0; } - diff --git a/TAO/tao/IORManipulation.cpp b/TAO/tao/IORManipulation.cpp index ede77a4ab7f..623c06e2808 100644 --- a/TAO/tao/IORManipulation.cpp +++ b/TAO/tao/IORManipulation.cpp @@ -283,3 +283,15 @@ TAO_IOR_Manipulation_impl::get_profile_count ( return count; } + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +template class TAO_Object_Manager<CORBA_Object,CORBA_Object_var>; +template class TAO_Unbounded_Object_Sequence<CORBA_Object,CORBA_Object_var>; + +#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#pragma instantiate TAO_Object_Manager<CORBA_Object,CORBA_Object_var> +#pragma instantiate TAO_Unbounded_Object_Sequence<CORBA_Object,CORBA_Object_var> + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/Makefile b/TAO/tao/Makefile index 790d1ab6c3e..ee7177cb8e3 100644 --- a/TAO/tao/Makefile +++ b/TAO/tao/Makefile @@ -10266,7 +10266,8 @@ realclean: $(TAO_ROOT)/tao/Environment.h \ $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Any.h \ - $(TAO_ROOT)/tao/Any.i DomainC.i \ + $(TAO_ROOT)/tao/Any.i \ + DomainC.i \ $(TAO_ROOT)/tao/Operation_Table.h \ $(ACE_ROOT)/ace/Hash_Map_Manager.h \ $(ACE_ROOT)/ace/Functor.h \ @@ -10399,8 +10400,9 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ - TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i + $(TAO_ROOT)/tao/Any.i \ + TimeBaseC.i TimeBaseS.h TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp \ + TimeBaseS.i .obj/TimeBaseS.o .obj/TimeBaseS.so .shobj/TimeBaseS.o .shobj/TimeBaseS.so: TimeBaseS.cpp TimeBaseS.h TimeBaseC.h \ $(TAO_ROOT)/tao/Any.h \ $(TAO_ROOT)/tao/CDR.h \ @@ -10479,8 +10481,8 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ - TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i + $(TAO_ROOT)/tao/Any.i \ + TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i .obj/Principal.o .obj/Principal.so .shobj/Principal.o .shobj/Principal.so: Principal.cpp \ $(TAO_ROOT)/tao/Principal.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -14300,8 +14302,8 @@ realclean: $(TAO_ROOT)/tao/Sequence_T.h \ $(TAO_ROOT)/tao/Sequence_T.i \ $(TAO_ROOT)/tao/Sequence_T.cpp \ - $(TAO_ROOT)/tao/IOPC.i IOPS_T.h \ - IOPS_T.i IOPS_T.cpp IOPS.i + $(TAO_ROOT)/tao/IOPC.i \ + IOPS_T.h IOPS_T.i IOPS_T.cpp IOPS.i .obj/CONV_FRAMEC.o .obj/CONV_FRAMEC.so .shobj/CONV_FRAMEC.o .shobj/CONV_FRAMEC.so: CONV_FRAMEC.cpp CONV_FRAMEC.h \ $(TAO_ROOT)/tao/CDR.h \ $(TAO_ROOT)/tao/corbafwd.h \ @@ -15952,8 +15954,9 @@ realclean: $(TAO_ROOT)/tao/Environment.i \ $(TAO_ROOT)/tao/Object.h \ $(TAO_ROOT)/tao/Object.i \ - $(TAO_ROOT)/tao/Any.i TimeBaseC.i \ - TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i POA_CORBA.h \ + $(TAO_ROOT)/tao/Any.i \ + TimeBaseC.i TimeBaseS_T.h TimeBaseS_T.i TimeBaseS_T.cpp TimeBaseS.i \ + POA_CORBA.h \ $(TAO_ROOT)/tao/CurrentC.h \ $(TAO_ROOT)/tao/CurrentC.i \ $(TAO_ROOT)/tao/PolicyC.h \ diff --git a/TAO/tao/MessagingC.cpp b/TAO/tao/MessagingC.cpp index f82f38c3548..1e64afec470 100644 --- a/TAO/tao/MessagingC.cpp +++ b/TAO/tao/MessagingC.cpp @@ -2192,8 +2192,8 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, Messaging::Poller_ptr &_ template class TAO_Unbounded_Sequence<Messaging::PolicyValue>; #if defined(TAO_POLLER) - template class TAO_Object_Field_T<Messaging::ReplyHandler>; - template class TAO_Object_Field_T<Messaging::Poller>; + template class TAO_Object_Field_T<Messaging::ReplyHandler,Messaging::ReplyHandler_var>; + template class TAO_Object_Field_T<Messaging::Poller,Messaging::Poller_var>; #endif /* TAO_POLLER */ #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) @@ -2201,8 +2201,8 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, Messaging::Poller_ptr &_ #pragma instantiate TAO_Unbounded_Sequence<Messaging::PolicyValue> #if defined(TAO_POLLER) -# pragma instantiate TAO_Object_Field_T<Messaging::ReplyHandler> -# pragma instantiate TAO_Object_Field_T<Messaging::Poller> +# pragma instantiate TAO_Object_Field_T<Messaging::ReplyHandler,Messaging::ReplyHandler_var> +# pragma instantiate TAO_Object_Field_T<Messaging::Poller,Messaging::Poller_var> #endif /* TAO_POLLER */ #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp index 51a5141746e..2c71ca6db33 100644 --- a/TAO/tao/ORB.cpp +++ b/TAO/tao/ORB.cpp @@ -1714,7 +1714,7 @@ CORBA_ORB::_find_collocated_servant (TAO_Stub *sobj, const TAO_Profile* profile = mprofile.get_profile (j); TAO_ObjectKey_var objkey = profile->_key (); - CORBA::Environment ACE_TRY_ENV; + ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { PortableServer::Servant servant = diff --git a/TAO/tao/ORB_Core.h b/TAO/tao/ORB_Core.h index ab8cea69762..2cdb22b9f3a 100644 --- a/TAO/tao/ORB_Core.h +++ b/TAO/tao/ORB_Core.h @@ -92,7 +92,7 @@ public: // (potentially) TSS object. int is_server_thread_; - // Is this thread a leader for this ORB? + // Is this thread a server for this ORB? int is_leader_thread_; // Is this thread a leader for this ORB? diff --git a/TAO/tao/Object.cpp b/TAO/tao/Object.cpp index 767ac6463f6..0424406bb8d 100644 --- a/TAO/tao/Object.cpp +++ b/TAO/tao/Object.cpp @@ -557,13 +557,13 @@ TAO_Object_Field::~TAO_Object_Field (void) #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class TAO_Object_Field_T<CORBA_Object>; +template class TAO_Object_Field_T<CORBA_Object,CORBA_Object_var>; template class auto_ptr<TAO_MProfile>; template class ACE_Auto_Basic_Ptr<TAO_MProfile>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate TAO_Object_Field_T<CORBA_Object> +#pragma instantiate TAO_Object_Field_T<CORBA_Object,CORBA_Object_var> #pragma instantiate auto_ptr<TAO_MProfile> #pragma instantiate ACE_Auto_Basic_Ptr<TAO_MProfile> diff --git a/TAO/tao/PolicyC.cpp b/TAO/tao/PolicyC.cpp index 3bfe675b5c6..6e5b9734393 100644 --- a/TAO/tao/PolicyC.cpp +++ b/TAO/tao/PolicyC.cpp @@ -978,9 +978,9 @@ template class TAO_Unbounded_Sequence<CORBA::ULong>; template class TAO_Unbounded_Object_Sequence<CORBA_Policy,CORBA_Policy_var>; template class TAO_Object_Manager<CORBA_Policy,CORBA_Policy_var>; -// template class TAO_Object_Field_T<CORBA_Policy>; -// template class TAO_Object_Field_T<CORBA_PolicyManager>; -// template class TAO_Object_Field_T<CORBA_PolicyCurrent>; +// template class TAO_Object_Field_T<CORBA_Policy,CORBA_Policy_var>; +// template class TAO_Object_Field_T<CORBA_PolicyManager,CORBA_PolicyManager_var>; +// template class TAO_Object_Field_T<CORBA_PolicyCurrent,CORBA_PolicyCurrent_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) @@ -989,8 +989,8 @@ template class TAO_Object_Manager<CORBA_Policy,CORBA_Policy_var>; #pragma instantiate TAO_Unbounded_Object_Sequence<CORBA_Policy,CORBA_Policy_var> #pragma instantiate TAO_Object_Manager<CORBA_Policy,CORBA_Policy_var> -//# pragma instantiate TAO_Object_Field_T<CORBA_Policy> -//# pragma instantiate TAO_Object_Field_T<CORBA_PolicyManager> -//# pragma instantiate TAO_Object_Field_T<CORBA_PolicyCurrent> +//# pragma instantiate TAO_Object_Field_T<CORBA_Policy,CORBA_Policy_var> +//# pragma instantiate TAO_Object_Field_T<CORBA_PolicyManager,CORBA_PolicyManager_var> +//# pragma instantiate TAO_Object_Field_T<CORBA_PolicyCurrent,CORBA_PolicyCurrent_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/TAO/tao/PollableC.cpp b/TAO/tao/PollableC.cpp index b1f0bfd6f48..a58dbda1df0 100644 --- a/TAO/tao/PollableC.cpp +++ b/TAO/tao/PollableC.cpp @@ -736,9 +736,9 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, CORBA_Pollable_ptr &_tao } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA_Pollable>; + template class TAO_Object_Field_T<CORBA_Pollable,CORBA_Pollable_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA_Pollable> +# pragma instantiate TAO_Object_Field_T<CORBA_Pollable,CORBA_Pollable_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ void operator<<= (CORBA::Any &_tao_any, CORBA::DIIPollable_ptr _tao_elem) @@ -792,9 +792,9 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, CORBA::DIIPollable_ptr & } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA::DIIPollable>; + template class TAO_Object_Field_T<CORBA::DIIPollable,CORBA::DIIPollable_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA::DIIPollable> +# pragma instantiate TAO_Object_Field_T<CORBA::DIIPollable,CORBA::DIIPollable_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ void operator<<= (CORBA::Any &_tao_any, CORBA_PollableSet_ptr _tao_elem) @@ -848,9 +848,9 @@ CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, CORBA_PollableSet_ptr &_ } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) - template class TAO_Object_Field_T<CORBA_PollableSet>; + template class TAO_Object_Field_T<CORBA_PollableSet,CORBA_PollableSet_var>; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -# pragma instantiate TAO_Object_Field_T<CORBA_PollableSet> +# pragma instantiate TAO_Object_Field_T<CORBA_PollableSet,CORBA_PollableSet_var> #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ void operator<<= (CORBA::Any &_tao_any, const CORBA_PollableSet::NoPossiblePollable &_tao_elem) // copying diff --git a/TAO/tao/decode.cpp b/TAO/tao/decode.cpp index 9639b6d9989..6cb581ac6cc 100644 --- a/TAO/tao/decode.cpp +++ b/TAO/tao/decode.cpp @@ -61,6 +61,8 @@ ACE_RCSID(tao, decode, "$Id$") // code out into a separate routine called both by CDR::decoder () and // by the code retrieving typecode parameters from encapsulations. +typedef TAO_Object_Field_T<CORBA::Object,CORBA::Object_var> TAO_Object_Field_Class; + CORBA::TypeCode::traverse_status TAO_Marshal_Primitive::decode (CORBA::TypeCode_ptr tc, const void *data, @@ -693,8 +695,8 @@ TAO_Marshal_Struct::decode (CORBA::TypeCode_ptr tc, if (retval == CORBA::TypeCode::TRAVERSE_CONTINUE) { - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, ACE_const_cast (void *, data)); field->_downcast (object, ACE_TRY_ENV); } @@ -855,7 +857,7 @@ TAO_Marshal_Union::decode (CORBA::TypeCode_ptr tc, // get the member typecode member_tc = tc->member_type (i, ACE_TRY_ENV); ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - + // have we reached the default label?, if so, // save a handle to the typecode for the default if (default_index >= 0 && default_index-- == 0) @@ -875,8 +877,8 @@ TAO_Marshal_Union::decode (CORBA::TypeCode_ptr tc, { // we know that the object pointer is stored in a // TAO_Object_Field_T parametrized type - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, member_val); field->_downcast (object, ACE_TRY_ENV); ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); @@ -906,8 +908,8 @@ TAO_Marshal_Union::decode (CORBA::TypeCode_ptr tc, { // we know that the object pointer is stored in a // TAO_Object_Field_T parametrized type - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, member_val); field->_downcast (object, ACE_TRY_ENV); ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); diff --git a/TAO/tao/deep_free.cpp b/TAO/tao/deep_free.cpp index 7541b4e1b95..0ba247223df 100644 --- a/TAO/tao/deep_free.cpp +++ b/TAO/tao/deep_free.cpp @@ -233,8 +233,10 @@ TAO_Marshal_Struct::deep_free (CORBA::TypeCode_ptr tc, case CORBA::tk_objref: { - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + typedef TAO_Object_Field_T<CORBA::Object,CORBA::Object_var> + TAO_Object_Field_Class; + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, ACE_const_cast (void *, source)); field->_release (); retval = CORBA::TypeCode::TRAVERSE_CONTINUE; diff --git a/TAO/tao/encode.cpp b/TAO/tao/encode.cpp index 2f8dac65374..1676ee0183d 100644 --- a/TAO/tao/encode.cpp +++ b/TAO/tao/encode.cpp @@ -41,6 +41,8 @@ ACE_RCSID(tao, encode, "$Id$") // components. "context" is the marshaling stream on which to encode // the data value. +typedef TAO_Object_Field_T<CORBA::Object,CORBA::Object_var> TAO_Object_Field_Class; + CORBA::TypeCode::traverse_status TAO_Marshal_Primitive::encode (CORBA::TypeCode_ptr tc, const void *data, @@ -375,8 +377,8 @@ TAO_Marshal_Struct::encode (CORBA::TypeCode_ptr tc, { // we know that the object pointer is stored in a // TAO_Object_Field_T parametrized type - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, ACE_const_cast (void *, data)); CORBA::Object_ptr ptr = field->_upcast (); retval = stream->encode (param, &ptr, 0, ACE_TRY_ENV); @@ -568,8 +570,8 @@ TAO_Marshal_Union::encode (CORBA::TypeCode_ptr tc, { // we know that the object pointer is stored in a // TAO_Object_Field_T parametrized type - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, member_val); CORBA::Object_ptr ptr = field->_upcast (); return stream->encode (member_tc, &ptr, data2, ACE_TRY_ENV); @@ -589,8 +591,8 @@ TAO_Marshal_Union::encode (CORBA::TypeCode_ptr tc, { // we know that the object pointer is stored in a // TAO_Object_Field_T parametrized type - TAO_Object_Field_T<CORBA_Object>* field = - ACE_reinterpret_cast (TAO_Object_Field_T<CORBA_Object> *, + TAO_Object_Field_Class* field = + ACE_reinterpret_cast (TAO_Object_Field_Class *, member_val); CORBA::Object_ptr ptr = field->_upcast (); return stream->encode (default_tc, &ptr, data2, ACE_TRY_ENV); @@ -1103,7 +1105,7 @@ TAO_Marshal_Except::encode (CORBA::TypeCode_ptr tc, // typecode pointer continue_encoding = stream->write_string (tc->id (ACE_TRY_ENV)); ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - + #if defined (__BORLANDC__) // Borland C++ Builder 4.0 doesn't seem to align caught exceptions // along the correct boundaries! Therefore we will assume that the @@ -1117,7 +1119,7 @@ TAO_Marshal_Except::encode (CORBA::TypeCode_ptr tc, // of the the base class and its private data members (type_ and // refcount_). After skipping these data members, we will have the data // members of the derived class which must be encoded. - + int member_count = tc->member_count (ACE_TRY_ENV); ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); diff --git a/TAO/tao/varout.cpp b/TAO/tao/varout.cpp index 87c644a975f..d06b4241fb0 100644 --- a/TAO/tao/varout.cpp +++ b/TAO/tao/varout.cpp @@ -22,6 +22,7 @@ #define TAO_VAROUT_C #include "tao/varout.h" +#include "tao/Sequence.h" #if !defined (__ACE_INLINE__) #include "tao/varout.i" @@ -29,23 +30,59 @@ ACE_RCSID(tao, varout, "$Id$") -template<class T> void -TAO_Object_Field_T<T>::_downcast (CORBA_Object* base_ptr, - CORBA_Environment &ACE_TRY_ENV) +template<class T, class T_var> +TAO_Object_Field_T<T,T_var>:: + TAO_Object_Field_T (const TAO_Object_Manager<T,T_var> & rhs) + : ptr_ (T::_duplicate (rhs.in ())) +{ +} + +template<class T, class T_var> TAO_Object_Field_T<T,T_var>& +TAO_Object_Field_T<T,T_var>:: + operator= (const TAO_Object_Manager<T,T_var> & rhs) +{ + T* tmp = T::_duplicate (rhs.in ()); + CORBA::release (this->ptr_); + this->ptr_ = tmp; + + return *this; +} + +template<class T, class T_var> +TAO_Object_Field_T<T,T_var>:: + TAO_Object_Field_T (const T_var & rhs) + : ptr_ (T::_duplicate (rhs.in ())) +{ +} + +template<class T, class T_var> TAO_Object_Field_T<T,T_var>& +TAO_Object_Field_T<T,T_var>:: + operator= (const T_var & rhs) +{ + T* tmp = T::_duplicate (rhs.in ()); + CORBA::release (this->ptr_); + this->ptr_ = tmp; + + return *this; +} + +template<class T, class T_var> void +TAO_Object_Field_T<T,T_var>::_downcast (CORBA_Object* base_ptr, + CORBA_Environment &ACE_TRY_ENV) { CORBA::release (this->ptr_); this->ptr_ = 0; this->ptr_ = T::_narrow (base_ptr, ACE_TRY_ENV); } -template<class T> CORBA_Object* -TAO_Object_Field_T<T>::_upcast (void) +template<class T, class T_var> CORBA_Object* +TAO_Object_Field_T<T,T_var>::_upcast (void) { return this->ptr_; } -template<class T> void -TAO_Object_Field_T<T>::_release (void) +template<class T, class T_var> void +TAO_Object_Field_T<T,T_var>::_release (void) { CORBA::release (this->ptr_); this->ptr_ = 0; diff --git a/TAO/tao/varout.h b/TAO/tao/varout.h index 16ed5d2af77..aa053598ef4 100644 --- a/TAO/tao/varout.h +++ b/TAO/tao/varout.h @@ -22,7 +22,9 @@ #include "tao/Object.h" -template <class T> +template<class T, class T_var> class TAO_Object_Manager; + +template <class T, class T_var> class TAO_Object_Field_T : public TAO_Object_Field { // = TITLE @@ -45,18 +47,30 @@ public: // constructor from a T *, assumes ownership of <object> i.e. it // *will* release it. - TAO_Object_Field_T (const TAO_Object_Field_T<T> &); + TAO_Object_Field_T (const T_var &); + // constructor from a var + + TAO_Object_Field_T (const TAO_Object_Field_T<T,T_var> &); // copy constructor + TAO_Object_Field_T (const TAO_Object_Manager<T,T_var> &); + // constructor from an Object_Manager (sequence var-like class) + virtual ~TAO_Object_Field_T (void); // destructor - TAO_Object_Field_T<T> &operator= (T *object); + TAO_Object_Field_T<T,T_var> &operator= (T *object); // Assignment from a T*, it assumes ownership of <object>. - TAO_Object_Field_T<T> &operator= (const TAO_Object_Field_T<T> &); + TAO_Object_Field_T<T,T_var> &operator= (const T_var& var); + // Assignment from a T_var, make a duplicate of the object + + TAO_Object_Field_T<T,T_var> &operator= (const TAO_Object_Field_T<T,T_var> &); // Assignment operator, in duplicates the underlying objects. + TAO_Object_Field_T<T,T_var> &operator= (const TAO_Object_Manager<T,T_var>&); + // Assignment from a T_var, make a duplicate of the object + T *operator-> (void) const; // smart pointer (const) @@ -96,618 +110,6 @@ private: T *ptr_; }; -#if 0 -// **************************************************************** -// The following classes are experimental, some of them do *not* -// compile and produce errors in compilers that check templates before -// instantiation time. In the future we may use them to implement -// several classes generated by IDL compiler, possibly reducing the -// complexity of the compiler. -// **************************************************************** - -template <class T> -class TAO_Fixed_var - // = TITLE - // template<class T> TAO_Fixed_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for fixed - // length data structs and unions. -{ -public: - // = Operations - - TAO_Fixed_var (void); - // default constructor - - TAO_Fixed_var (T *); - // constructor from a pointer to T - - TAO_Fixed_var (const TAO_Fixed_var<T> &); - // copy constructor - - ~TAO_Fixed_var (void); - // destructor - - TAO_Fixed_var<T> &operator= (T *); - // assignment from a pointer to T - - TAO_Fixed_var<T> &operator= (const TAO_Fixed_var<T> &); - // assignment from a TAO_Fixed_var - - T *operator-> (void); - // smart pointer - - const T *operator-> (void) const; - // smart pointer (const) - - operator const T *&() const; - // cast operator - - operator T *&(); - // cast operator - - // = Operations for parameter passing modes. - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T &out (void); - // for out parameter - - T _retn (void); - // for return type - -private: - T *ptr_; - // instance -}; - -template <class T> -class TAO_Variable_var - // = TITLE - // template<class T> TAO_Variable_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for Variable - // length data structs and unions. -{ -public: - // = Operations - - TAO_Variable_var (void); - // default constructor - - TAO_Variable_var (T *); - // constructor from a pointer to T - - TAO_Variable_var (const TAO_Variable_var<T> &); - // copy constructor - - ~TAO_Variable_var (void); - // destructor - - TAO_Variable_var<T> &operator= (T *); - // assignment from a pointer to T - - TAO_Variable_var<T> &operator= (const TAO_Variable_var<T> &); - // assignment from a TAO_Variable_var - - T *operator-> (void); - // smart pointer - - const T *operator-> (void) const; - // smart pointer (const) - - operator const T *&() const; - // cast operator - - operator T *&(); - // cast operator - - // = operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T *&out (void); - // for out parameter - - T *_retn (void); - // for return type - -private: - T *ptr_; -}; - -template <class T> -class TAO_Sequence_var - // = TITLE - // template<class T> TAO_Sequence_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for Sequence - // data type. CORBA sequences are considered to always be - // variable length. -{ -public: - // = Operations - - TAO_Sequence_var (void); - // default constructor - - TAO_Sequence_var (T *); - // constructor from a pointer to T - - TAO_Sequence_var (const TAO_Sequence_var &); - // copy constructor - - ~TAO_Sequence_var (void); - // destructor - - TAO_Sequence_var<T> &operator= (T *); - // assignment from a pointer to T - - TAO_Sequence_var<T> &operator= (const TAO_Sequence_var &); - // assignment from a TAO_Sequence_var - - T *operator-> (void); - // smart pointer - - const T *operator-> (void) const; - // smart pointer (const) - - operator const T *&() const; - // cast operator - - operator T *&(); - // cast operator - - // = additional operators for sequence - - T::ElemType &operator[] (CORBA::ULong); - // operator [] that passes the argument to the [] operator of T - - // = operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T *&out (void); - // for out parameter - - T *_retn (void); - // for return type - -private: - T *ptr_; - // seq instance -}; - -template <class T, class T_ptr> -class TAO_Object_var - // = TITLE - // template<class T, class T_ptr> TAO_Object_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for obj - // references. -{ -public: - // =Operations - - TAO_Object_var (void); - // default constructor - - TAO_Object_var (T_ptr); - // constructor from a pointer to T - - TAO_Object_var (const TAO_Object_var<T,T_ptr> &); - // copy constructor - - ~TAO_Object_var (void); - // destructor - - TAO_Object_var<T_ptr> &operator= (T_ptr); - // assignment from a pointer to T - - TAO_Object_var<T_ptr> &operator= (const TAO_Object_var<T,T_ptr> &); - // assignment from a TAO_Object_var - - T_ptr operator-> (void) const; - // smart pointer (const) - - operator const T_ptr &() const; - // cast operator - - operator T_ptr &(); - // cast operator - - // = operations for parameter passing modes - - const T_ptr &in (void); - // for in type parameter - - T_ptr &inout (void); - // for inout type parameter - - T_ptr &out (void); - // for out parameter - - T_ptr _retn (void); - // for return type - -private: - T_ptr ptr_; -}; - -template <class T, class T_slice> -class TAO_FixedArray_var - // = TITLE - // template<class T, class T_slice> TAO_FixedArray_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for obj - // references. -{ -public: - // = Operations - - TAO_FixedArray_var (void); - // default constructor - - TAO_FixedArray_var (T_slice *); - // constructor from a pointer to T - - TAO_FixedArray_var (const TAO_FixedArray_var<T, T_slice> &); - // copy constructor - - ~TAO_FixedArray_var (void); - // destructor - - TAO_FixedArray_var<T, T_slice> &operator= (T_slice *); - // assignment from a pointer to T - - TAO_FixedArray_var<T, T_slice> &operator= (const TAO_FixedArray_var<T, T_slice> &); - // assignment from a TAO_FixedArray_var - - T_slice &operator[] (CORBA::ULong); - // index - - const T_slice &operator[] (CORBA::ULong) const; - // index - - operator const T_slice &() const; - // cast operator - - operator T_slice &(); - // cast operator - - // = operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T &out (void); - // for out parameter - - T_slice *_retn (void); - // for return type - -private: - T_slice *ptr_; -}; - -template <class T, class T_slice> -class TAO_VariableArray_var - // = TITLE - // template<class T, class T_slice> TAO_VariableArray_var - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for obj - // references. -{ -public: - // = Operations - - TAO_VariableArray_var (void); - // default constructor - - TAO_VariableArray_var (T_slice *); - // constructor from a pointer to T - - TAO_VariableArray_var (const TAO_VariableArray_var<T, T_slice> &); - // copy constructor - - ~TAO_VariableArray_var (void); - // destructor - - TAO_VariableArray_var<T, T_slice> &operator= (T_slice *); - // assignment from a pointer to T - - TAO_VariableArray_var<T, T_slice> &operator= (const TAO_VariableArray_var<T, T_slice> &); - // assignment from a TAO_VariableArray_var - - T_slice &operator[] (CORBA::ULong); - // index - - const T_slice &operator[] (CORBA::ULong) const; - // index - - operator const T_slice &() const; - // cast operator - - operator T_slice &(); - // cast operator - - // = operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T_slice *&out (void); - // for out parameter - - T_slice *_retn (void); - // for return type - -private: - T_slice *ptr_; -}; - -template <class T, class T_slice> -class TAO_FixedArray_forany - // = TITLE - // template<class T, class T_slice> TAO_FixedArray_forany - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for obj - // references. -{ -public: - // =Operations - - TAO_FixedArray_forany (void); - // default constructor - - TAO_FixedArray_forany (T_slice *, CORBA::Boolean nocopy=0); - // constructor from a pointer to T slice - - TAO_FixedArray_forany (const TAO_FixedArray_forany<T, T_slice> &); - // copy constructor - - ~TAO_FixedArray_forany (void); - // destructor - - TAO_FixedArray_forany<T, T_slice> &operator= (T_slice *); - // assignment from a pointer to T - - TAO_FixedArray_forany<T, T_slice> &operator= (const TAO_FixedArray_forany<T, T_slice> &); - // assignment from a TAO_FixedArray_forany - - T_slice &operator[] (CORBA::ULong); - // index - - const T_slice &operator[] (CORBA::ULong) const; - // index - - operator const T_slice &() const; - // cast operator - - operator T_slice &(); - // cast operator - - // =operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T &out (void); - // for out parameter - - T_slice *_retn (void); - // for return type - -private: - T_slice *ptr_; -}; - -template <class T, class T_slice> -class TAO_VariableArray_forany - // = TITLE - // template<class T, class T_slice> TAO_VariableArray_forany - // - // = DESCRIPTION - // Provides a parametrized version of the _var class for obj - // references. -{ -public: - // =Operations - - TAO_VariableArray_forany (void); - // default constructor - - TAO_VariableArray_forany (T_slice *, CORBA::Boolean nocopy=0); - // constructor from a pointer to T slice - - TAO_VariableArray_forany (const TAO_VariableArray_forany<T, T_slice> &); - // copy constructor - - ~TAO_VariableArray_forany (void); - // destructor - - TAO_VariableArray_forany<T, T_slice> &operator= (T_slice *); - // assignment from a pointer to T - - TAO_VariableArray_forany<T, T_slice> &operator= (const TAO_VariableArray_forany<T, T_slice> &); - // assignment from a TAO_VariableArray_forany - - T_slice &operator[] (CORBA::ULong); - // index - - const T_slice &operator[] (CORBA::ULong) const; - // index - - operator const T_slice &() const; - // cast operator - - operator T_slice &(); - // cast operator - - // =operations for parameter passing modes - - const T &in (void); - // for in type parameter - - T &inout (void); - // for inout type parameter - - T_slice *&out (void); - // for out parameter - - T_slice *_retn (void); - // for return type - -private: - T_slice *ptr_; -}; - -template <class T, class T_var> -class TAO_Variable_out - // = TITLE - // TAO_Variable_out - // - // = Description - // _out class definition for variable size struct/union. -{ -public: - TAO_Variable_out (T *&); - // constructor - - TAO_Variable_out (T_var &); - // constructor - - TAO_Variable_out (TAO_Variable_out <T,T_var> &); - // copy constructor - - TAO_Variable_out<T,T_var> &operator= (TAO_Variable_out<T,T_var> &); - // assignment operator - - TAO_Variable_out<T,T_var> &operator= (T *); - // assignment - - operator T *&(); - // cast - - T *&ptr (void); - // ptr method, returns a pointer to class T - - T *operator-> (void); - // arrow operator (smart pointer) - -private: - T *&ptr_; -}; - -template <class T, class T_var> -class TAO_Sequence_out - // = TITLE - // TAO_Sequence_out - // - // = Description - // _out class definition for Sequence -{ -public: - TAO_Sequence_out (T *&); - // constructor - - TAO_Sequence_out (T_var &); - // constructor - - TAO_Sequence_out (TAO_Sequence_out <T,T_var> &); - // copy constructor - - TAO_Sequence_out<T,T_var> &operator= (TAO_Sequence_out<T,T_var> &); - // assignment operator - - TAO_Sequence_out<T,T_var> &operator= (T *); - // assignment - - operator T *&(); - // cast - - T *&ptr (void); - // ptr method, returns a pointer to class T - - T *operator-> (void); - // arrow operator (smart pointer) - - T::ElemType operator[] (CORBA::ULong); - // return the element at index i - -private: - T *&ptr_; -}; - -template <class T_ptr, class T_var> -class TAO_Object_out -{ - // = TITLE - // TAO_Object_out - // - // = Description - // _out class definition for Object -public: - TAO_Object_out (T_ptr &); - // constructor - - TAO_Object_out (T_var &); - // constructor - - TAO_Object_out (TAO_Object_out <T_ptr,T_var> &); - // copy constructor - - TAO_Object_out<T_ptr,T_var> &operator= (TAO_Object_out<T_ptr,T_var> &); - // assignment operator - - TAO_Object_out<T_ptr,T_var> &operator= (const T_var &); - // assignment operator - - TAO_Object_out<T_ptr,T_var> &operator= (T_ptr); - // assignment - - operator T_ptr &(); - // cast - - T_ptr &ptr (void); - // ptr method, returns a pointer to class T - - T_ptr operator-> (void); - // arrow operator (smart pointer) - -private: - T_ptr &ptr_; -}; -#endif /* 0 */ - #if defined (__ACE_INLINE__) #include "tao/varout.i" #endif /* __ACE_INLINE__ */ diff --git a/TAO/tao/varout.i b/TAO/tao/varout.i index 6e2e92d5f47..c506733d29f 100644 --- a/TAO/tao/varout.i +++ b/TAO/tao/varout.i @@ -2,41 +2,43 @@ // $Id$ // -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::TAO_Object_Field_T (void) +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>::TAO_Object_Field_T (void) : ptr_ (0) { } -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::TAO_Object_Field_T (T* object) +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>::TAO_Object_Field_T (T* object) : ptr_ (object) { } -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::TAO_Object_Field_T (const TAO_Object_Field_T<T>& rhs) +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>:: + TAO_Object_Field_T (const TAO_Object_Field_T<T,T_var>& rhs) : TAO_Object_Field (rhs), // keep HP/aCC happy ptr_ (T::_duplicate (rhs.ptr_)) { } -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::~TAO_Object_Field_T (void) +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>::~TAO_Object_Field_T (void) { CORBA::release (this->ptr_); } -template<class T> ACE_INLINE TAO_Object_Field_T<T> & -TAO_Object_Field_T<T>::operator= (T* object) +template<class T, class T_var> ACE_INLINE TAO_Object_Field_T<T,T_var> & +TAO_Object_Field_T<T,T_var>::operator= (T* object) { CORBA::release (this->ptr_); this->ptr_ = object; return *this; } -template<class T> ACE_INLINE TAO_Object_Field_T<T> & -TAO_Object_Field_T<T>::operator= (const TAO_Object_Field_T<T> &rhs) +template<class T, class T_var> ACE_INLINE TAO_Object_Field_T<T,T_var> & +TAO_Object_Field_T<T,T_var>:: + operator= (const TAO_Object_Field_T<T,T_var> &rhs) { if (this != &rhs) { @@ -46,52 +48,52 @@ TAO_Object_Field_T<T>::operator= (const TAO_Object_Field_T<T> &rhs) return *this; } -template<class T> ACE_INLINE T* -TAO_Object_Field_T<T>::ptr (void) const +template<class T, class T_var> ACE_INLINE T* +TAO_Object_Field_T<T,T_var>::ptr (void) const { return this->ptr_; } -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::operator T* const &() const +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>::operator T* const &() const { return this->ptr_; } -template<class T> ACE_INLINE -TAO_Object_Field_T<T>::operator T* &() +template<class T, class T_var> ACE_INLINE +TAO_Object_Field_T<T,T_var>::operator T* &() { return this->ptr_; } -template<class T> ACE_INLINE T* -TAO_Object_Field_T<T>::operator-> (void) const +template<class T, class T_var> ACE_INLINE T* +TAO_Object_Field_T<T,T_var>::operator-> (void) const { return this->ptr_; } -template<class T> ACE_INLINE T* -TAO_Object_Field_T<T>::in (void) const +template<class T, class T_var> ACE_INLINE T* +TAO_Object_Field_T<T,T_var>::in (void) const { return this->ptr_; } -template<class T> ACE_INLINE T* & -TAO_Object_Field_T<T>::inout (void) +template<class T, class T_var> ACE_INLINE T* & +TAO_Object_Field_T<T,T_var>::inout (void) { return this->ptr_; } -template<class T> ACE_INLINE T* & -TAO_Object_Field_T<T>::out (void) +template<class T, class T_var> ACE_INLINE T* & +TAO_Object_Field_T<T,T_var>::out (void) { CORBA::release (this->ptr_); this->ptr_ = 0; return this->ptr_; } -template<class T> ACE_INLINE T* -TAO_Object_Field_T<T>::_retn (void) +template<class T, class T_var> ACE_INLINE T* +TAO_Object_Field_T<T,T_var>::_retn (void) { // yield ownership of managed obj reference T* val = this->ptr_; |