summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-07 21:15:35 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-07-07 21:15:35 +0000
commit5a2e0d4a4d171f5337b1fce257bce3d22e086d57 (patch)
treea734a5aef5b1b51d32695f752c8a78a50a81a547
parent1e9baac38925f6ad4172614c9fdd8dc7df61697a (diff)
downloadATCD-5a2e0d4a4d171f5337b1fce257bce3d22e086d57.tar.gz
ChangeLogTag:Wed Jul 7 16:14:55 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-99c7
-rw-r--r--TAO/tao/Sequence_T.cpp22
-rw-r--r--TAO/tao/Sequence_T.h7
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 *.