summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-25 13:50:11 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-25 13:50:11 +0000
commit41e83ee103bea2eac259d5bc08aabc1fe7389671 (patch)
tree7b57b08521e2a996df2444245f4108a55f4e8916
parent6d542a944be1794b2a4174ab1e328c4d30050c41 (diff)
downloadATCD-41e83ee103bea2eac259d5bc08aabc1fe7389671.tar.gz
ChangeLogTag: Wed Jun 25 08:36:06 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref20
-rw-r--r--TAO/tao/PolicyC.cpp47
-rw-r--r--TAO/tao/Policy_ForwardC.h26
-rw-r--r--TAO/tao/Sequence_T.cpp68
-rw-r--r--TAO/tao/Sequence_T.i2
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>