diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-25 13:50:11 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-25 13:50:11 +0000 |
commit | 41e83ee103bea2eac259d5bc08aabc1fe7389671 (patch) | |
tree | 7b57b08521e2a996df2444245f4108a55f4e8916 | |
parent | 6d542a944be1794b2a4174ab1e328c4d30050c41 (diff) | |
download | ATCD-41e83ee103bea2eac259d5bc08aabc1fe7389671.tar.gz |
ChangeLogTag: Wed Jun 25 08:36:06 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 20 | ||||
-rw-r--r-- | TAO/tao/PolicyC.cpp | 47 | ||||
-rw-r--r-- | TAO/tao/Policy_ForwardC.h | 26 | ||||
-rw-r--r-- | TAO/tao/Sequence_T.cpp | 68 | ||||
-rw-r--r-- | TAO/tao/Sequence_T.i | 2 |
5 files changed, 128 insertions, 35 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index 109b070f9e4..1923f6550de 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,23 @@ +Wed Jun 25 08:36:06 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * tao/Sequence_T.cpp: + * tao/Sequence_T.i: + + Added the TAO::Object_Cast<> template struct that contains static + wrappers for the _narrow() and upcast() methods for interfaces. + This template is used instead of the existing tao_*_cast structs + in generated code by sequences of interfaces. Specializations of + this template will be added to generated code, however, to deal + with the case when an undefined forward declared interface is + used in a sequence. + + * tao/PolicyC.cpp: + * tao/Policy_ForwardC.h: + + Hand-crafted additions of TAO::Objref_Traits<> and + TAO::Object_Cast<> for CORBA::Policy, since it is forward declared + in Policy_Forward.pidl and defined in Policy.pidl. + Tue Jun 24 18:12:24 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * tao/Arg_Traits_T.h: diff --git a/TAO/tao/PolicyC.cpp b/TAO/tao/PolicyC.cpp index 2d6f6fca63d..a5fec276946 100644 --- a/TAO/tao/PolicyC.cpp +++ b/TAO/tao/PolicyC.cpp @@ -487,6 +487,53 @@ TAO_NAMESPACE_DEFINE ( ) TAO_NAMESPACE_END +// ======================================================= +// Hand0crafted + +template<> +CORBA::Policy_ptr +TAO::Objref_Traits<CORBA::Policy>::tao_duplicate (CORBA::Policy_ptr p) +{ + return CORBA::Policy::_duplicate (p); +} + +template<> +void +TAO::Objref_Traits<CORBA::Policy>::tao_release (CORBA::Policy_ptr p) +{ + CORBA::release (p); +} + +template<> +CORBA::Policy_ptr +TAO::Objref_Traits<CORBA::Policy>::tao_nil (void) +{ + return CORBA::Policy::_nil (); +} + +template<> +CORBA::Policy_ptr +TAO::Object_Cast<CORBA::Policy>::tao_narrow ( + CORBA::Object *p + ACE_ENV_ARG_DECL + ) +{ + return CORBA::Policy::_narrow (p ACE_ENV_ARG_PARAMETER); +} + +template<> +CORBA::Object_ptr +TAO::Object_Cast<CORBA::Policy>::tao_upcast ( + void *src + ) +{ + CORBA::Policy_ptr *tmp = + ACE_static_cast (CORBA::Policy_ptr *, src); + return *tmp; +} + +// ================================================================= + // TAO_IDL - Generated from // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface/interface_cs.cpp:61 diff --git a/TAO/tao/Policy_ForwardC.h b/TAO/tao/Policy_ForwardC.h index 5b1cb921925..bda110fac4e 100644 --- a/TAO/tao/Policy_ForwardC.h +++ b/TAO/tao/Policy_ForwardC.h @@ -240,6 +240,32 @@ TAO_NAMESPACE CORBA } TAO_NAMESPACE_CLOSE // module CORBA +// ===================================================== +// Hand-crafted + +namespace TAO +{ + template<> + struct Objref_Traits<CORBA::Policy> + { + static CORBA::Policy_ptr tao_duplicate (CORBA::Policy_ptr); + static void tao_release (CORBA::Policy_ptr); + static CORBA::Policy_ptr tao_nil (void); + }; + + template<> + struct Object_Cast<CORBA::Policy> + { + static CORBA::Policy_ptr tao_narrow ( + CORBA::Object_ptr + ACE_ENV_ARG_DECL + ); + static CORBA::Object_ptr tao_upcast (void *); + }; +}; + +// ========================================================== + // TAO_IDL - Generated from // W:\ACE_wrappers\TAO\TAO_IDL\be\be_visitor_interface_fwd/any_op_ch.cpp:65 diff --git a/TAO/tao/Sequence_T.cpp b/TAO/tao/Sequence_T.cpp index ced419332f9..824b6042cf6 100644 --- a/TAO/tao/Sequence_T.cpp +++ b/TAO/tao/Sequence_T.cpp @@ -425,8 +425,8 @@ TAO_Object_Manager<T,T_var,T_life>::operator= ( if (this->release_) { - T_life::tao_release (*this->ptr_); - *this->ptr_ = T_life::tao_duplicate (*rhs.ptr_); + TAO::Objref_Traits<T>::tao_release (*this->ptr_); + *this->ptr_ = TAO::Objref_Traits<T>::tao_duplicate (*rhs.ptr_); } else { @@ -446,7 +446,7 @@ TAO_Object_Manager<T,T_var,T_life>::operator= (T * p) // that of a var variable. Therefore we will not duplicate the // user provided pointer before assigning it to the internal // variable. - T_life::tao_release (*this->ptr_); + TAO::Objref_Traits<T>::tao_release (*this->ptr_); *this->ptr_ = p; } else @@ -467,8 +467,8 @@ TAO_Object_Manager<T,T_var,T_life>::operator= (const T_var & p) // that of a var variable. Therefore we duplicate p's // pointer before assigning it to the internal // variable. - T_life::tao_release (*this->ptr_); - *this->ptr_ = T_life::tao_duplicate (p.in ()); + TAO::Objref_Traits<T>::tao_release (*this->ptr_); + *this->ptr_ = TAO::Objref_Traits<T>::tao_duplicate (p.in ()); } else { @@ -482,8 +482,8 @@ template <typename T, typename T_var, typename T_life> T *& TAO_Object_Manager<T,T_var,T_life>::out (void) { - T_life::tao_release (*this->ptr_); - *this->ptr_ = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (*this->ptr_); + *this->ptr_ = TAO::Objref_Traits<T>::tao_nil (); return *this->ptr_; } @@ -492,7 +492,7 @@ T * TAO_Object_Manager<T,T_var,T_life>::_retn (void) { T *temp = *this->ptr_; - *this->ptr_ = T_life::tao_nil (); + *this->ptr_ = TAO::Objref_Traits<T>::tao_nil (); return temp; } @@ -601,7 +601,7 @@ TAO_Unbounded_Object_Sequence ( for (CORBA::ULong i = 0; i < rhs.length_; ++i) { - tmp1[i] = T_life::tao_duplicate (tmp2[i]); + tmp1[i] = TAO::Objref_Traits<T>::tao_duplicate (tmp2[i]); } this->buffer_ = tmp1; @@ -637,8 +637,8 @@ operator= (const TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast> &rhs) for (CORBA::ULong i = 0; i < this->length_; ++i) { - T_life::tao_release (tmp[i]); - tmp[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (tmp[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_nil (); } if (this->maximum_ < rhs.maximum_) @@ -672,7 +672,7 @@ operator= (const TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast> &rhs) for (CORBA::ULong i = 0; i < rhs.length_; ++i) { - tmp1[i] = T_life::tao_duplicate (tmp2[i]); + tmp1[i] = TAO::Objref_Traits<T>::tao_duplicate (tmp2[i]); } return *this; @@ -691,7 +691,7 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::allocbuf ( for (CORBA::ULong i = 0; i < nelems; ++i) { - buf[i] = T_life::tao_nil (); + buf[i] = TAO::Objref_Traits<T>::tao_nil (); } return buf; @@ -743,7 +743,7 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_allocate_buffer ( // the old instances. if (!this->release_) { - tmp[i] = T_life::tao_duplicate (old[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_duplicate (old[i]); } else { @@ -775,8 +775,8 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_deallocate_buffer ( for (CORBA::ULong i = 0; i < this->length_; ++i) { - T_life::tao_release (tmp[i]); - tmp[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (tmp[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_nil (); } TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::freebuf (tmp); @@ -795,8 +795,8 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_shrink_buffer ( for (CORBA::ULong i = nl; i < ol; ++i) { - T_life::tao_release (tmp[i]); - tmp[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (tmp[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_nil (); } } @@ -811,8 +811,8 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_downcast ( T ** tmp = ACE_static_cast (T **, target); - *tmp = T_cast::tao_narrow (src - ACE_ENV_ARG_PARAMETER); + *tmp = TAO::Object_Cast<T>::tao_narrow (src + ACE_ENV_ARG_PARAMETER); ACE_CHECK; } @@ -823,7 +823,7 @@ TAO_Unbounded_Object_Sequence<T,T_var,T_life,T_cast>::_upcast ( void * src ) const { - return T_cast::tao_upcast (src); + return TAO::Object_Cast<T>::tao_upcast (src); } // ************************************************************* @@ -866,7 +866,7 @@ TAO_Bounded_Object_Sequence ( for (CORBA::ULong i = 0; i < rhs.length_; ++i) { - tmp1[i] = T_life::tao_duplicate (tmp2[i]); + tmp1[i] = TAO::Objref_Traits<T>::tao_duplicate (tmp2[i]); } this->buffer_ = tmp1; @@ -899,8 +899,8 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::operator= ( for (CORBA::ULong i = 0; i < this->length_; ++i) { - T_life::tao_release (tmp[i]); - tmp[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (tmp[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_nil (); } // No need to reallocate the buffer since it is always of size // MAX @@ -929,7 +929,7 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::operator= ( for (CORBA::ULong i=0; i < rhs.length_; ++i) { - tmp1[i] = T_life::tao_duplicate (tmp2[i]); + tmp1[i] = TAO::Objref_Traits<T>::tao_duplicate (tmp2[i]); } return *this; @@ -952,7 +952,7 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::allocbuf ( for (CORBA::ULong i = 0; i < MAX; ++i) { - buf[i] = T_life::tao_nil (); + buf[i] = TAO::Objref_Traits<T>::tao_nil (); } return buf; @@ -971,10 +971,10 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::freebuf (T ** buffer) // complaint and call CORBA::release() on each one. for (CORBA::ULong i = 0; i < MAX; ++i) { - if (buffer[i] != T_life::tao_nil ()) + if (buffer[i] != TAO::Objref_Traits<T>::tao_nil ()) { - T_life::tao_release (buffer[i]); - buffer[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (buffer[i]); + buffer[i] = TAO::Objref_Traits<T>::tao_nil (); } } @@ -1033,8 +1033,8 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::_shrink_buffer ( for (CORBA::ULong i = nl; i < ol; ++i) { - T_life::tao_release (tmp[i]); - tmp[i] = T_life::tao_nil (); + TAO::Objref_Traits<T>::tao_release (tmp[i]); + tmp[i] = TAO::Objref_Traits<T>::tao_nil (); } } @@ -1053,8 +1053,8 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::_downcast ( T ** tmp = ACE_static_cast (T **, target); - *tmp = T_cast::tao_narrow (src - ACE_ENV_ARG_PARAMETER); + *tmp = TAO::Object_Cast<T>::tao_narrow (src + ACE_ENV_ARG_PARAMETER); ACE_CHECK; } @@ -1069,7 +1069,7 @@ TAO_Bounded_Object_Sequence<T,T_var,T_life,T_cast,MAX>::_upcast ( void * src ) const { - return T_cast::tao_upcast (src); + return TAO::Object_Cast<T>::tao_upcast (src); } // ************************************************************* diff --git a/TAO/tao/Sequence_T.i b/TAO/tao/Sequence_T.i index 62febe426fb..1e4a223985c 100644 --- a/TAO/tao/Sequence_T.i +++ b/TAO/tao/Sequence_T.i @@ -159,7 +159,7 @@ template <typename T, typename T_var, typename T_life> ACE_INLINE TAO_Object_Manager<T,T_var,T_life>::operator const T_var () const { - return T_life::tao_duplicate (*this->ptr_); + return TAO::Objref_Traits<T>::tao_duplicate (*this->ptr_); } template <typename T, typename T_var, typename T_life> |