diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 21:15:35 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-07-07 21:15:35 +0000 |
commit | 5a2e0d4a4d171f5337b1fce257bce3d22e086d57 (patch) | |
tree | a734a5aef5b1b51d32695f752c8a78a50a81a547 | |
parent | 1e9baac38925f6ad4172614c9fdd8dc7df61697a (diff) | |
download | ATCD-5a2e0d4a4d171f5337b1fce257bce3d22e086d57.tar.gz |
ChangeLogTag:Wed Jul 7 16:14:55 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLog-99c | 7 | ||||
-rw-r--r-- | TAO/tao/Sequence_T.cpp | 22 | ||||
-rw-r--r-- | TAO/tao/Sequence_T.h | 7 |
3 files changed, 33 insertions, 3 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index bef4213b905..b4d0396ecd2 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,3 +1,10 @@ +Wed Jul 7 16:14:55 1999 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tao/Sequence_T.h: + * tao/Sequence_T.cpp: + Fixed assignment from TAO_Object_Field_T<> to + TAO_Object_Manager<>. + Wed Jul 7 15:50:10 1999 Vishal Kachroo <vishal@cs.wustl.edu> * orbsvcs/orbsvcs/IOR_Multicast.cpp: Removed some commented out diff --git a/TAO/tao/Sequence_T.cpp b/TAO/tao/Sequence_T.cpp index 31f1927083f..658b5d15af5 100644 --- a/TAO/tao/Sequence_T.cpp +++ b/TAO/tao/Sequence_T.cpp @@ -4,6 +4,7 @@ #define TAO_SEQUENCE_T_C #include "tao/Sequence_T.h" +#include "tao/varout.h" #if !defined (__ACE_INLINE__) #include "tao/Sequence_T.i" @@ -193,9 +194,9 @@ TAO_Bounded_Sequence<T, MAX>::_deallocate_buffer (void) // class TAO_Object_Manager // ************************************************************* -template <class T, class T_var> -TAO_Object_Manager<T,T_var>& -TAO_Object_Manager<T,T_var>::operator= (const TAO_Object_Manager<T,T_var> &rhs) +template <class T, class T_var> TAO_Object_Manager<T,T_var>& +TAO_Object_Manager<T,T_var>:: + operator= (const TAO_Object_Manager<T,T_var> &rhs) { if (this == &rhs) return *this; @@ -211,6 +212,21 @@ TAO_Object_Manager<T,T_var>::operator= (const TAO_Object_Manager<T,T_var> &rhs) return *this; } +template <class T, class T_var> TAO_Object_Manager<T,T_var>& +TAO_Object_Manager<T,T_var>:: + operator= (const TAO_Object_Field_T<T,T_var> &rhs) +{ + if (this->release_) + { + CORBA::release (*this->ptr_); + *this->ptr_ = T::_duplicate (rhs.in ()); + } + else + *this->ptr_ = rhs.in (); + + return *this; +} + template <class T, class T_var>TAO_Object_Manager<T,T_var> & TAO_Object_Manager<T,T_var>::operator=(T* p) { diff --git a/TAO/tao/Sequence_T.h b/TAO/tao/Sequence_T.h index 0ff1be6c304..5e735ce23c0 100644 --- a/TAO/tao/Sequence_T.h +++ b/TAO/tao/Sequence_T.h @@ -218,6 +218,8 @@ template<class T,class T_var> class TAO_Unbounded_Object_Sequence; template<class T, class T_var, size_t MAX> class TAO_Bounded_Object_Sequence; template<size_t MAX> class TAO_Bounded_String_Sequence; +template<class T,class T_var> class TAO_Object_Field_T; + // ************************************************************* template<class T, class T_var> @@ -278,6 +280,11 @@ public: // @@ TODO what happens if rhs.release_ is true an this->relase_ is // false? + TAO_Object_Manager<T,T_var> &operator= (const TAO_Object_Field_T<T,T_var> &rhs); + // Assignment from another var-like type, only release if + // <this->release_> is true and only duplicate if this->release_ is + // true. + TAO_Object_Manager<T,T_var> &operator= (T *); // Assignment from T *. |