summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-20 18:24:22 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-20 18:24:22 +0000
commit66a49b20b6e182082016096732470415adc81a3d (patch)
treeb1ce9c506e30e094b4f0d9fbd7a53c10d127b6e6
parenteb2ad7c29c77760d8b894e9f8ae9f5cdd7341b45 (diff)
downloadATCD-66a49b20b6e182082016096732470415adc81a3d.tar.gz
ChangeLogTag: Fri Jun 20 13:12:35 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref31
-rw-r--r--TAO/tao/Arg_Traits_T.h38
-rw-r--r--TAO/tao/BD_String_Argument_T.h30
-rw-r--r--TAO/tao/Basic_Arguments.cpp106
-rw-r--r--TAO/tao/Basic_Arguments.h81
-rw-r--r--TAO/tao/Object_Argument_T.cpp281
-rw-r--r--TAO/tao/Object_Argument_T.h253
-rw-r--r--TAO/tao/Special_Basic_Arguments.cpp10
-rw-r--r--TAO/tao/Special_Basic_Arguments.h57
-rw-r--r--TAO/tao/UB_String_Argument_T.cpp8
-rw-r--r--TAO/tao/UB_String_Arguments.cpp16
-rw-r--r--TAO/tao/UB_String_Arguments.h27
-rw-r--r--TAO/tests/Bench/wire/testC.cpp8
-rw-r--r--TAO/tests/Bench/wire/testS.cpp8
14 files changed, 669 insertions, 285 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 286d963ca3e..55b5d1e12e9 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,34 @@
+Fri Jun 20 13:12:35 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tao/Arg_Traits_T.h:
+
+ Eliminated the need for the TAO::Arg_Traits_T<> class
+ and removed this file.
+
+ * tao/BD_String_Argument_T.h:
+ * tao/Basic_Arguments.cpp:
+ * tao/Basic_Arguments.h:
+ * tao/Special_Basic_Arguments.cpp:
+ * tao/Special_Basic_Arguments.h:
+ * tao/UB_String_Argument_T.cpp:
+ * tao/UB_String_Arguments.cpp:
+ * tao/UB_String_Arguments.h:
+
+ Replaced TAO::Arg_Traits_T<> subclass of the above
+ basic arguments type classes with typedefs whose
+ names can be easily generated by the IDL compiler.
+
+ * tao/Object_Argument_T.cpp:
+ * tao/Object_Argument_T.h:
+
+ New files, for interface and pseudo object arguments.
+
+ * tests/Bench/wire/testC.cpp:
+ * tests/Bench/wire/testS.cpp:
+
+ Changed these hand crafted files to use the typedefs
+ mentioned above.
+
Thu Jun 19 22:24:47 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* tao/BD_String_Argument_T.cpp:
diff --git a/TAO/tao/Arg_Traits_T.h b/TAO/tao/Arg_Traits_T.h
deleted file mode 100644
index c9c7e812f8c..00000000000
--- a/TAO/tao/Arg_Traits_T.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// This may look like C, but it's really -*- C++ -*-
-
-//=============================================================================
-/**
- * @file Traits_T.h
- *
- * $Id$
- *
- * @authors Jeff Parsons and Carlos O'Ryan
- */
-//=============================================================================
-
-
-#ifndef TAO_TRAITS_T_H
-#define TAO_TRAITS_T_H
-
-#include "ace/pre.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-namespace TAO
-{
- /**
- *
- * @brief Template class specialized for IDL arg/return types.
- *
- */
- template<typename S>
- class Arg_Traits
- {
- };
-};
-
-#include "ace/post.h"
-
-#endif /* TAO_TRAITS_T_H */
diff --git a/TAO/tao/BD_String_Argument_T.h b/TAO/tao/BD_String_Argument_T.h
index 35b3faca420..d480de14db3 100644
--- a/TAO/tao/BD_String_Argument_T.h
+++ b/TAO/tao/BD_String_Argument_T.h
@@ -246,53 +246,53 @@ namespace TAO
size_t BOUND>
struct BD_String_Arg_Traits_T
{
- typedef T * ret_type;
- typedef const T * in_type;
- typedef T *& inout_type;
- typedef T_out out_type;
+ typedef T * ret_type;
+ typedef const T * in_type;
+ typedef T *& inout_type;
+ typedef T_out out_type;
typedef In_BD_String_Argument_T<T,
to_T,
from_T,
- BOUND> in_arg_val;
+ BOUND> in_arg_val;
typedef Inout_BD_String_Argument_T<T,
to_T,
from_T,
- BOUND> inout_arg_val;
+ BOUND> inout_arg_val;
typedef Out_BD_String_Argument_T<T,
T_out,
to_T,
from_T,
- BOUND> out_arg_val;
+ BOUND> out_arg_val;
typedef Ret_BD_String_Argument_T<T,
T_var,
to_T,
from_T,
- BOUND> stub_ret_val;
+ BOUND> stub_ret_val;
typedef In_BD_String_SArgument_T<T,
T_var,
to_T,
from_T,
- BOUND> in_sarg_val;
+ BOUND> in_sarg_val;
typedef Inout_BD_String_SArgument_T<T,
T_var,
to_T,
from_T,
- BOUND> inout_sarg_val;
+ BOUND> inout_sarg_val;
typedef Out_BD_String_SArgument_T<T,
T_var,
T_out,
to_T,
from_T,
- BOUND> out_sarg_val;
+ BOUND> out_sarg_val;
typedef Ret_BD_String_SArgument_T<T,
T_var,
to_T,
from_T,
- BOUND> skel_ret_val;
+ BOUND> skel_ret_val;
- typedef BD_String_Tag idl_tag;
+ typedef BD_String_Tag idl_tag;
};
/**
@@ -302,7 +302,7 @@ namespace TAO
*/
template<size_t BOUND>
- class BD_String_Traits
+ class BD_String_Arg_Traits
: public BD_String_Arg_Traits_T<CORBA::Char,
CORBA::String_var,
CORBA::String_out,
@@ -313,7 +313,7 @@ namespace TAO
};
template<size_t BOUND>
- class BD_WString_Traits
+ class BD_WString_Arg_Traits
: public BD_String_Arg_Traits_T<CORBA::WChar,
CORBA::WString_var,
CORBA::WString_out,
diff --git a/TAO/tao/Basic_Arguments.cpp b/TAO/tao/Basic_Arguments.cpp
index 45d2bfa32bf..67e52b81fe6 100644
--- a/TAO/tao/Basic_Arguments.cpp
+++ b/TAO/tao/Basic_Arguments.cpp
@@ -6,98 +6,28 @@ ACE_RCSID (tao,
Basic_Arguments,
"$Id$")
-template<>
-CORBA::Boolean
-TAO::Ret_Basic_Argument_T<void>::marshal (TAO_OutputCDR &)
-{
- return 1;
-}
-
-template<>
-CORBA::Boolean
-TAO::Ret_Basic_Argument_T<void>::demarshal (TAO_InputCDR &)
-{
- return 1;
-}
-
-template<>
-void
-TAO::Ret_Basic_Argument_T<void>::add_to_interceptor (CORBA::Any *)
-{
-}
-
-template<>
-TAO::Ret_Basic_Argument_T<void>::operator void () const
-{
-}
-
-template<>
-CORBA::Boolean
-TAO::Ret_Basic_SArgument_T<void>::marshal (TAO_OutputCDR &)
-{
- return 1;
-}
-
-template<>
-CORBA::Boolean
-TAO::Ret_Basic_SArgument_T<void>::demarshal (TAO_InputCDR &)
-{
- return 1;
-}
-
-template<>
-void
-TAO::Ret_Basic_SArgument_T<void>::add_to_interceptor (CORBA::Any *)
-{
-}
-
-template<>
-TAO::Ret_Basic_SArgument_T<void>::operator void () const
-{
-}
-
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class TAO::Arg_Traits<CORBA::Short>;
-template class TAO::Arg_Traits<CORBA::Long>;
-template class TAO::Arg_Traits<CORBA::UShort>;
-template class TAO::Arg_Traits<CORBA::ULong>;
-template class TAO::Arg_Traits<CORBA::Float>;
-template class TAO::Arg_Traits<CORBA::Double>;
-template class TAO::Arg_Traits<CORBA::LongLong>;
-template class TAO::Arg_Traits<CORBA::ULongLong>;
-template class TAO::Arg_Traits<CORBA::LongDouble>;
-
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::Short>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::Long>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::UShort>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::ULong>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::Float>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::Double>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::LongLong>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::ULongLong>;
-template class TAO::Special_Basic_Arg_Traits_T<CORBA::LongDouble>;
+template class TAO::Basic_Arg_Traits_T<CORBA::Short>;
+template class TAO::Basic_Arg_Traits_T<CORBA::Long>;
+template class TAO::Basic_Arg_Traits_T<CORBA::UShort>;
+template class TAO::Basic_Arg_Traits_T<CORBA::ULong>;
+template class TAO::Basic_Arg_Traits_T<CORBA::Float>;
+template class TAO::Basic_Arg_Traits_T<CORBA::Double>;
+template class TAO::Basic_Arg_Traits_T<CORBA::LongLong>;
+template class TAO::Basic_Arg_Traits_T<CORBA::ULongLong>;
+template class TAO::Basic_Arg_Traits_T<CORBA::LongDouble>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-# pragma instantiate TAO::Arg_Traits<CORBA::Short>
-# pragma instantiate TAO::Arg_Traits<CORBA::Long>
-# pragma instantiate TAO::Arg_Traits<CORBA::UShort>
-# pragma instantiate TAO::Arg_Traits<CORBA::ULong>
-# pragma instantiate TAO::Arg_Traits<CORBA::Float>
-# pragma instantiate TAO::Arg_Traits<CORBA::Double>
-# pragma instantiate TAO::Arg_Traits<CORBA::LongLong>
-# pragma instantiate TAO::Arg_Traits<CORBA::ULongLong>
-# pragma instantiate TAO::Arg_Traits<CORBA::LongDouble>
-
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::Short>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::Long>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::UShort>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::ULong>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::Float>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::Double>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::LongLong>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::ULongLong>
-# pragma instantiate TAO::Special_Basic_Arg_Traits_T<CORBA::LongDouble>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::Short>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::Long>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::UShort>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::ULong>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::Float>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::Double>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::LongLong>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::ULongLong>
+# pragma instantiate TAO::Basic_Arg_Traits_T<CORBA::LongDouble>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/Basic_Arguments.h b/TAO/tao/Basic_Arguments.h
index b2ddd2454c5..e8a58e70844 100644
--- a/TAO/tao/Basic_Arguments.h
+++ b/TAO/tao/Basic_Arguments.h
@@ -21,7 +21,6 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "Basic_Argument_T.h"
-#include "Arg_Traits_T.h"
namespace TAO
{
@@ -31,89 +30,39 @@ namespace TAO
*
*/
- template<>
- class TAO_Export Ret_Basic_Argument_T<void> : public Argument
+ struct Void_Arg_Traits
{
- public:
- virtual CORBA::Boolean marshal (TAO_OutputCDR &);
- virtual CORBA::Boolean demarshal (TAO_InputCDR &);
- virtual void add_to_interceptor (CORBA::Any *);
+ typedef void ret_type;
- operator void () const;
- };
-
- template<>
- class TAO_Export Ret_Basic_SArgument_T<void> : public Argument
- {
- public:
- virtual CORBA::Boolean marshal (TAO_OutputCDR &);
- virtual CORBA::Boolean demarshal (TAO_InputCDR &);
- virtual void add_to_interceptor (CORBA::Any *);
+ typedef Argument stub_ret_val;
+ typedef Argument skel_ret_val;
- operator void () const;
- };
-
- template<>
- class Arg_Traits<void>
- {
- typedef void ret_type;
-
- typedef Ret_Basic_Argument_T<void> stub_ret_val;
- typedef Ret_Basic_SArgument_T<void> skel_ret_val;
-
- typedef Basic_Tag idl_tag;
+ typedef Basic_Tag idl_tag;
};
/**
*
- * @brief Specializations for most of the basic IDL types.
+ * @brief Typedefs for basic IDL arg types, except (w)char/boolean/octet.
*
*/
- template<>
- class Arg_Traits<CORBA::Short> : public Basic_Arg_Traits_T<CORBA::Short>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::Short> Short_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::Long> : public Basic_Arg_Traits_T<CORBA::Long>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::Long> Long_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::UShort> : public Basic_Arg_Traits_T<CORBA::UShort>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::UShort> UShort_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::ULong> : public Basic_Arg_Traits_T<CORBA::ULong>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::ULong> ULong_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::Float> : public Basic_Arg_Traits_T<CORBA::Float>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::Float> Float_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::Double> : public Basic_Arg_Traits_T<CORBA::Double>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::Double> Double_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::LongLong> : public Basic_Arg_Traits_T<CORBA::LongLong>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::LongLong> LongLong_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::ULongLong> : public Basic_Arg_Traits_T<CORBA::ULongLong>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::ULongLong> ULongLong_Arg_Traits;
- template<>
- class Arg_Traits<CORBA::LongDouble> : public Basic_Arg_Traits_T<CORBA::LongDouble>
- {
- };
+ typedef Basic_Arg_Traits_T<CORBA::LongDouble> LongDouble_Arg_Traits;
};
#include "ace/post.h"
diff --git a/TAO/tao/Object_Argument_T.cpp b/TAO/tao/Object_Argument_T.cpp
new file mode 100644
index 00000000000..4748153f0ce
--- /dev/null
+++ b/TAO/tao/Object_Argument_T.cpp
@@ -0,0 +1,281 @@
+// $Id$
+
+#ifndef TAO_OBJECT_ARGUMENT_T_C
+#define TAO_OBJECT_ARGUMENT_T_C
+
+#include "tao/Object_Argument_T.h"
+
+ACE_RCSID (tao,
+ String_Argument_T,
+ "$Id$")
+
+template<typename S_ptr>
+TAO::In_Object_Argument_T<S_ptr>::In_Object_Argument_T (S_ptr x)
+ : x_ (x)
+{}
+
+template<typename S_ptr>
+CORBA::Boolean
+TAO::In_Object_Argument_T<S_ptr>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S_ptr>
+void
+TAO::In_Object_Argument_T<S_ptr>::interceptor_param (Dynamic::Parameter & p)
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_IN;
+}
+
+template<typename S_ptr>
+CORBA::Boolean
+TAO::In_Object_Argument_T<S_ptr>::interceptor_replace (CORBA::Any & any)
+{
+ return any >>= this->x_;
+}
+
+// ===========================================================
+
+template<typename S_ptr>
+TAO::Inout_Object_Argument_T<S_ptr>::Inout_Object_Argument_T (S_ptr & x)
+ : x_ (x)
+{}
+
+template<typename S_ptr>
+CORBA::Boolean
+TAO::Inout_Object_Argument_T<S_ptr>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S_ptr>
+CORBA::Boolean
+TAO::Inout_Object_Argument_T<S_ptr>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S_ptr>
+void
+TAO::Inout_Object_Argument_T<S_ptr>::interceptor_param (
+ Dynamic::Parameter & p
+ )
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_INOUT;
+}
+
+template<typename S_ptr>
+CORBA::Boolean
+TAO::Inout_Object_Argument_T<S_ptr>::interceptor_replace (CORBA::Any & any)
+{
+ return any >>= this->x_;
+}
+
+// ==============================================================
+
+template<typename S_ptr, typename S_out>
+TAO::Out_Object_Argument_T<S_ptr,S_out>::Out_Object_Argument_T (S_out & x)
+ : x_ (x.ptr ())
+{}
+
+template<typename S_ptr, typename S_out>
+CORBA::Boolean
+TAO::Out_Object_Argument_T<S_ptr,S_out>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+// ============================================================
+
+template<typename S_ptr, typename S_var>
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::Ret_Object_Argument_T (void)
+{
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+void
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::interceptor_result (CORBA::Any * any)
+{
+ (*any) <<= this->x_.in ();
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
+{
+ return any >>= this->x_;
+}
+
+template<typename S_ptr, typename S_var>
+S_ptr
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::excp (void)
+{
+ return this->x_.ptr ();
+}
+
+template<typename S_ptr, typename S_var>
+S_ptr
+TAO::Ret_Object_Argument_T<S_ptr,S_var>::retn (void)
+{
+ return this->x_._retn ();
+}
+
+// ============================================================
+
+template<typename S_ptr, typename S_var>
+TAO::In_Object_SArgument_T<S_ptr,S_var>::In_Object_SArgument_T (void)
+{}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::In_Object_SArgument_T<S_ptr,S_var>::demarshal (TAO_InputCDR &cdr)
+{
+ return cdr >> this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+void
+TAO::In_Object_SArgument_T<S_ptr,S_var>::interceptor_param (
+ Dynamic::Parameter & p
+ )
+{
+ p.argument <<= this->x_.in ();
+ p.mode = CORBA::PARAM_IN;
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::In_Object_SArgument_T<S_ptr,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
+{
+ return any >>= this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+S_ptr
+TAO::In_Object_SArgument_T<S_ptr,S_var>::arg (void) const
+{
+ return this->x_.in ();
+}
+
+// ===========================================================
+
+template<typename S_ptr, typename S_var>
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::Inout_Object_SArgument_T (void)
+{}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_.in ();
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+void
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::interceptor_param (
+ Dynamic::Parameter & p
+ )
+{
+ p.argument <<= this->x_.in ();
+ p.mode = CORBA::PARAM_INOUT;
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
+{
+ return any >>= this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+S_ptr&
+TAO::Inout_Object_SArgument_T<S_ptr,S_var>::arg (void)
+{
+ return this->x_.inout ();
+}
+
+// ==============================================================
+
+template<typename S_ptr, typename S_var, typename S_out>
+TAO::Out_Object_SArgument_T<S_ptr,S_var,S_out>::Out_Object_SArgument_T (
+ void
+ )
+{}
+
+template<typename S_ptr, typename S_var, typename S_out>
+CORBA::Boolean
+TAO::Out_Object_SArgument_T<S_ptr,S_var,S_out>::marshal (TAO_OutputCDR &cdr)
+{
+ return cdr << this->x_.in ();
+}
+
+template<typename S_ptr, typename S_var, typename S_out>
+S_out
+TAO::Out_Object_SArgument_T<S_ptr,S_var,S_out>::arg (void)
+{
+ return this->x_.out ();
+}
+
+// ============================================================
+
+template<typename S_ptr, typename S_var>
+TAO::Ret_Object_SArgument_T<S_ptr,S_var>::Ret_Object_SArgument_T (void)
+{
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Ret_Object_SArgument_T<S_ptr,S_var>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_.in ();
+}
+
+template<typename S_ptr, typename S_var>
+void
+TAO::Ret_Object_SArgument_T<S_ptr,S_var>::interceptor_result (
+ CORBA::Any * any
+ )
+{
+ (*any) <<= this->x_.in ();
+}
+
+template<typename S_ptr, typename S_var>
+CORBA::Boolean
+TAO::Ret_Object_SArgument_T<S_ptr,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
+{
+ return any >>= this->x_.out ();
+}
+
+template<typename S_ptr, typename S_var>
+S_ptr&
+TAO::Ret_Object_SArgument_T<S_ptr,S_var>::arg (void)
+{
+ return this->x_.out ();
+}
+
+#endif /* TAO_OBJECT_ARGUMENT_T_C */
diff --git a/TAO/tao/Object_Argument_T.h b/TAO/tao/Object_Argument_T.h
new file mode 100644
index 00000000000..5635855f420
--- /dev/null
+++ b/TAO/tao/Object_Argument_T.h
@@ -0,0 +1,253 @@
+// This may look like C, but it's really -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Object_Argument_T.h
+ *
+ * $Id$
+ *
+ * @authors Jeff Parsons and Carlos O'Ryan
+ */
+//=============================================================================
+
+
+#ifndef TAO_OBJECT_ARGUMENT_T_H
+#define TAO_OBJECT_ARGUMENT_T_H
+
+#include "ace/pre.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/Argument.h"
+
+namespace TAO
+{
+ /**
+ * @class In_Object_Argument_T
+ *
+ * @brief Template class for IN object argument.
+ *
+ */
+ template<typename S_ptr>
+ class In_Object_Argument_T : public Argument
+ {
+ public:
+ In_Object_Argument_T (S_ptr x);
+
+ virtual CORBA::Boolean marshal (TAO_OutputCDR &);
+
+ virtual void interceptor_param (Dynamic::Parameter &);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ private:
+ S_ptr x_;
+ };
+
+ /**
+ * @class Inout_Object_Argument_T
+ *
+ * @brief Template class for INOUT object argument.
+ *
+ */
+ template<typename S_ptr>
+ class Inout_Object_Argument_T : public Argument
+ {
+ public:
+ Inout_Object_Argument_T (S_ptr & x);
+
+ virtual CORBA::Boolean marshal (TAO_OutputCDR &);
+ virtual CORBA::Boolean demarshal (TAO_InputCDR &);
+
+ virtual void interceptor_param (Dynamic::Parameter &);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ private:
+ mutable S_ptr & x_;
+ };
+
+ /**
+ * @class Out_Object_Argument_T
+ *
+ * @brief Template class for INOUT object argument.
+ *
+ */
+ template<typename S_ptr, typename S_out>
+ class Out_Object_Argument_T : public Argument
+ {
+ public:
+ Out_Object_Argument_T (S_out & x);
+
+ virtual CORBA::Boolean demarshal (TAO_InputCDR &);
+
+ private:
+ mutable S_ptr & x_;
+ };
+
+ /**
+ * @class Ret_Object_Argument_T
+ *
+ * @brief Template class for return stub value of object argument.
+ *
+ */
+ template<typename S_ptr, typename S_var>
+ class Ret_Object_Argument_T : public Argument
+ {
+ public:
+ Ret_Object_Argument_T (void);
+
+ virtual CORBA::Boolean demarshal (TAO_InputCDR &);
+
+ virtual void interceptor_result (CORBA::Any *);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ S_ptr excp (void);
+ S_ptr retn (void);
+
+ private:
+ S_var x_;
+ };
+
+ /**
+ * @class In_Object_SArgument_T
+ *
+ * @brief Template class for IN skeleton object argument.
+ *
+ */
+ template<typename S_ptr, typename S_var>
+ class In_Object_SArgument_T : public Argument
+ {
+ public:
+ In_Object_SArgument_T (void);
+
+ virtual CORBA::Boolean demarshal (TAO_InputCDR &);
+
+ virtual void interceptor_param (Dynamic::Parameter &);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ S_ptr arg (void) const;
+
+ private:
+ S_var x_;
+ };
+
+ /**
+ * @class Inout_Object_SArgument_T
+ *
+ * @brief Template class for INOUT skeleton object argument.
+ *
+ */
+ template<typename S_ptr, typename S_var>
+ class Inout_Object_SArgument_T : public Argument
+ {
+ public:
+ Inout_Object_SArgument_T (void);
+
+ virtual CORBA::Boolean marshal (TAO_OutputCDR &);
+ virtual CORBA::Boolean demarshal (TAO_InputCDR &);
+
+ virtual void interceptor_param (Dynamic::Parameter &);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ S_ptr & arg (void);
+
+ private:
+ S_var x_;
+ };
+
+ /**
+ * @class Out_Object_SArgument_T
+ *
+ * @brief Template class for INOUT skeleton object argument.
+ *
+ */
+ template<typename S_ptr, typename S_var, typename S_out>
+ class Out_Object_SArgument_T : public Argument
+ {
+ public:
+ Out_Object_SArgument_T (void);
+
+ virtual CORBA::Boolean marshal (TAO_OutputCDR &);
+
+ S_out arg (void);
+
+ private:
+ S_var x_;
+ };
+
+ /**
+ * @class Ret_Object_SArgument_T
+ *
+ * @brief Template class for return skeleton value of object.
+ *
+ */
+ template<typename S_ptr, typename S_var>
+ class Ret_Object_SArgument_T : public Argument
+ {
+ public:
+ Ret_Object_SArgument_T (void);
+
+ virtual CORBA::Boolean marshal (TAO_OutputCDR &);
+
+ virtual void interceptor_result (CORBA::Any *);
+ virtual CORBA::Boolean interceptor_replace (CORBA::Any &);
+
+ S_ptr & arg (void);
+
+ private:
+ S_var x_;
+ };
+
+ /**
+ * @struct Object_Tag
+ *
+ * @brief Struct for object arguments id tag.
+ *
+ */
+ struct TAO_Export Object_Tag {};
+
+ /**
+ * @struct Basic_Arg_Traits_T
+ *
+ * @brief Template class for argument traits of objects.
+ *
+ */
+ template<typename T_ptr, typename T_var, typename T_out>
+ struct Object_Arg_Traits_T
+ {
+ typedef T_ptr ret_type;
+ typedef T_ptr in_type;
+ typedef T_ptr & inout_type;
+ typedef T_out out_type;
+
+ typedef In_Object_Argument_T<T_ptr> in_arg_val;
+ typedef Inout_Object_Argument_T<T_ptr> inout_arg_val;
+ typedef Out_Object_Argument_T<T_ptr,T_out> out_arg_val;
+ typedef Ret_Object_Argument_T<T_ptr,T_var> stub_ret_val;
+
+ typedef In_Object_SArgument_T<T_ptr,T_var> in_sarg_val;
+ typedef Inout_Object_SArgument_T<T_ptr,T_var> inout_sarg_val;
+ typedef Out_Object_SArgument_T<T_ptr,T_var,T_out> out_sarg_val;
+ typedef Ret_Object_SArgument_T<T_ptr,T_var> skel_ret_val;
+
+ typedef Object_Tag idl_tag;
+ };
+};
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "tao/Object_Argument_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("Object_Argument_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include "ace/post.h"
+
+#endif /* TAO_OBJECT_ARGUMENT_T_H */
+
diff --git a/TAO/tao/Special_Basic_Arguments.cpp b/TAO/tao/Special_Basic_Arguments.cpp
index c5f892b74fc..2bc86262e4f 100644
--- a/TAO/tao/Special_Basic_Arguments.cpp
+++ b/TAO/tao/Special_Basic_Arguments.cpp
@@ -8,11 +8,6 @@ ACE_RCSID (tao,
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class TAO::Arg_Traits<CORBA::Char>;
-template class TAO::Arg_Traits<CORBA::WChar>;
-template class TAO::Arg_Traits<CORBA::Octet>;
-template class TAO::Arg_Traits<ACE_InputCDR::to_boolean>;
-
template class TAO::Special_Basic_Arg_Traits_T<CORBA::Char,
ACE_InputCDR::to_char,
ACE_OutputCDR::from_char>;
@@ -31,11 +26,6 @@ template class TAO::Special_Basic_Arg_Traits_T<CORBA::Boolean,
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-# pragma instantiate TAO::Arg_Traits<CORBA::Char>
-# pragma instantiate TAO::Arg_Traits<CORBA::WChar>
-# pragma instantiate TAO::Arg_Traits<CORBA::Octet>
-# pragma instantiate TAO::Arg_Traits<ACE_InputCDR::to_boolean>
-
# pragma instantiate TAO::Special_Basic_Arg_Traits_T< \
CORBA::Char, \
ACE_InputCDR::to_char, \
diff --git a/TAO/tao/Special_Basic_Arguments.h b/TAO/tao/Special_Basic_Arguments.h
index 6f077a885c3..cf8a1faf488 100644
--- a/TAO/tao/Special_Basic_Arguments.h
+++ b/TAO/tao/Special_Basic_Arguments.h
@@ -21,47 +21,38 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "Special_Basic_Argument_T.h"
-#include "Arg_Traits_T.h"
namespace TAO
{
/**
*
- * @brief Specializations for (w)char, octet and boolean.
+ * @brief Typedefs for (w)char, octet and boolean.
*
*/
- template<>
- class Arg_Traits<CORBA::Char>
- : public Special_Basic_Arg_Traits_T<CORBA::Char,
- ACE_InputCDR::to_char,
- ACE_OutputCDR::from_char>
- {
- };
-
- template<>
- class Arg_Traits<CORBA::WChar>
- : public Special_Basic_Arg_Traits_T<CORBA::WChar,
- ACE_InputCDR::to_wchar,
- ACE_OutputCDR::from_wchar>
- {
- };
-
- template<>
- class Arg_Traits<CORBA::Octet>
- : public Special_Basic_Arg_Traits_T<CORBA::Octet,
- ACE_InputCDR::to_octet,
- ACE_OutputCDR::from_octet>
- {
- };
-
- template<>
- class Arg_Traits<ACE_InputCDR::to_boolean>
- : public Special_Basic_Arg_Traits_T<CORBA::Boolean,
- ACE_InputCDR::to_boolean,
- ACE_OutputCDR::from_boolean>
- {
- };
+ typedef
+ Special_Basic_Arg_Traits_T<CORBA::Char,
+ ACE_InputCDR::to_char,
+ ACE_OutputCDR::from_char>
+ Char_Arg_Traits;
+
+ typedef
+ Special_Basic_Arg_Traits_T<CORBA::WChar,
+ ACE_InputCDR::to_wchar,
+ ACE_OutputCDR::from_wchar>
+ WChar_Arg_Traits;
+
+ typedef
+ Special_Basic_Arg_Traits_T<CORBA::Octet,
+ ACE_InputCDR::to_octet,
+ ACE_OutputCDR::from_octet>
+ Octet_Arg_Traits;
+
+ typedef
+ Special_Basic_Arg_Traits_T<CORBA::Boolean,
+ ACE_InputCDR::to_boolean,
+ ACE_OutputCDR::from_boolean>
+ Boolean_Arg_Traits;
};
#endif /* TAO_SPECIAL_BASIC_ARGUMENTS_H */
diff --git a/TAO/tao/UB_String_Argument_T.cpp b/TAO/tao/UB_String_Argument_T.cpp
index 6cb066d2b50..971291322c9 100644
--- a/TAO/tao/UB_String_Argument_T.cpp
+++ b/TAO/tao/UB_String_Argument_T.cpp
@@ -198,7 +198,9 @@ TAO::Inout_UB_String_SArgument_T<S,S_var>::interceptor_param (
template<typename S, typename S_var>
CORBA::Boolean
-TAO::Inout_UB_String_SArgument_T<S,S_var>::interceptor_replace (CORBA::Any & any)
+TAO::Inout_UB_String_SArgument_T<S,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
{
return any >>= this->x_.out ();
}
@@ -255,7 +257,9 @@ TAO::Ret_UB_String_SArgument_T<S,S_var>::interceptor_result (CORBA::Any * any)
template<typename S, typename S_var>
CORBA::Boolean
-TAO::Ret_UB_String_SArgument_T<S,S_var>::interceptor_replace (CORBA::Any & any)
+TAO::Ret_UB_String_SArgument_T<S,S_var>::interceptor_replace (
+ CORBA::Any & any
+ )
{
return any >>= this->x_.out ();
}
diff --git a/TAO/tao/UB_String_Arguments.cpp b/TAO/tao/UB_String_Arguments.cpp
index d9aa03433ac..bf8da550bfd 100644
--- a/TAO/tao/UB_String_Arguments.cpp
+++ b/TAO/tao/UB_String_Arguments.cpp
@@ -8,20 +8,20 @@ ACE_RCSID (tao,
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class TAO::Arg_Traits<ACE_InputCDR::to_string>;
-template class TAO::Arg_Traits<ACE_InputCDR::to_wstring>;
-
-template class TAO::UB_String_Arg_Traits_T<CORBA::Char, CORBA::String_out>;
-template class TAO::UB_String_Arg_Traits_T<CORBA::WChar, CORBA::WString_out>;
+template class TAO::UB_String_Arg_Traits_T<CORBA::Char,
+ CORBA::String_var,
+ CORBA::String_out>;
+template class TAO::UB_String_Arg_Traits_T<CORBA::WChar,
+ CORBA::WString_var,
+ CORBA::WString_out>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-# pragma instantiate TAO::Arg_Traits<ACE_InputCDR::to_string>
-# pragma instantiate TAO::Arg_Traits<ACE_InputCDR::to_wstring>
-
# pragma instantiate TAO::UB_String_Arg_Traits_T<CORBA::Char, \
+ CORBA::String_var, \
CORBA::String_out>
# pragma instantiate TAO::UB_String_Arg_Traits_T<CORBA::WChar, \
+ CORBA::WString_var, \
CORBA::WString_out>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
diff --git a/TAO/tao/UB_String_Arguments.h b/TAO/tao/UB_String_Arguments.h
index 76e8ec30129..ea9ec679c79 100644
--- a/TAO/tao/UB_String_Arguments.h
+++ b/TAO/tao/UB_String_Arguments.h
@@ -21,31 +21,24 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "UB_String_Argument_T.h"
-#include "Arg_Traits_T.h"
namespace TAO
{
/**
*
- * @brief Specializations for unbounded (w)strings
+ * @brief Typedefs for unbounded (w)strings.
*
*/
- template<>
- class Arg_Traits<ACE_InputCDR::to_string>
- : public UB_String_Arg_Traits_T<CORBA::Char,
- CORBA::String_var,
- CORBA::String_out>
- {
- };
-
- template<>
- class Arg_Traits<ACE_InputCDR::to_wstring>
- : public UB_String_Arg_Traits_T<CORBA::WChar,
- CORBA::WString_var,
- CORBA::WString_out>
- {
- };
+ typedef UB_String_Arg_Traits_T<CORBA::Char,
+ CORBA::String_var,
+ CORBA::String_out>
+ UB_String_Arg_Traits;
+
+ typedef UB_String_Arg_Traits_T<CORBA::WChar,
+ CORBA::WString_var,
+ CORBA::WString_out>
+ UB_WString_Arg_Traits;
};
#include "ace/post.h"
diff --git a/TAO/tests/Bench/wire/testC.cpp b/TAO/tests/Bench/wire/testC.cpp
index d1712cfeecb..2c289720962 100644
--- a/TAO/tests/Bench/wire/testC.cpp
+++ b/TAO/tests/Bench/wire/testC.cpp
@@ -274,10 +274,10 @@ char * _TAO_foo_Remote_Proxy_Impl::all_str (
CORBA::SystemException
))
{
- TAO::Arg_Traits<ACE_InputCDR::to_string>::stub_ret_val _tao_retval;
- TAO::Arg_Traits<ACE_InputCDR::to_string>::in_arg_val _tao_inarg (inarg);
- TAO::Arg_Traits<ACE_InputCDR::to_string>::inout_arg_val _tao_inoutarg (inoutarg);
- TAO::Arg_Traits<ACE_InputCDR::to_string>::out_arg_val _tao_outarg (outarg);
+ TAO::UB_String_Arg_Traits::stub_ret_val _tao_retval;
+ TAO::UB_String_Arg_Traits::in_arg_val _tao_inarg (inarg);
+ TAO::UB_String_Arg_Traits::inout_arg_val _tao_inoutarg (inoutarg);
+ TAO::UB_String_Arg_Traits::out_arg_val _tao_outarg (outarg);
TAO::Argument *_tao_signature [] =
{
diff --git a/TAO/tests/Bench/wire/testS.cpp b/TAO/tests/Bench/wire/testS.cpp
index 9270e1e3e93..c90bd660c67 100644
--- a/TAO/tests/Bench/wire/testS.cpp
+++ b/TAO/tests/Bench/wire/testS.cpp
@@ -539,10 +539,10 @@ void POA_foo::all_str_skel (
ACE_ENV_ARG_DECL
)
{
- TAO::Arg_Traits<ACE_InputCDR::to_string>::skel_ret_val _tao_retval;
- TAO::Arg_Traits<ACE_InputCDR::to_string>::in_sarg_val _tao_inarg;
- TAO::Arg_Traits<ACE_InputCDR::to_string>::inout_sarg_val _tao_inoutarg;
- TAO::Arg_Traits<ACE_InputCDR::to_string>::out_sarg_val _tao_outarg;
+ TAO::UB_String_Arg_Traits::skel_ret_val _tao_retval;
+ TAO::UB_String_Arg_Traits::in_sarg_val _tao_inarg;
+ TAO::UB_String_Arg_Traits::inout_sarg_val _tao_inoutarg;
+ TAO::UB_String_Arg_Traits::out_sarg_val _tao_outarg;
TAO::Argument *_tao_signature [] =
{