diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-20 18:24:22 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-20 18:24:22 +0000 |
commit | 66a49b20b6e182082016096732470415adc81a3d (patch) | |
tree | b1ce9c506e30e094b4f0d9fbd7a53c10d127b6e6 | |
parent | eb2ad7c29c77760d8b894e9f8ae9f5cdd7341b45 (diff) | |
download | ATCD-66a49b20b6e182082016096732470415adc81a3d.tar.gz |
ChangeLogTag: Fri Jun 20 13:12:35 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 31 | ||||
-rw-r--r-- | TAO/tao/Arg_Traits_T.h | 38 | ||||
-rw-r--r-- | TAO/tao/BD_String_Argument_T.h | 30 | ||||
-rw-r--r-- | TAO/tao/Basic_Arguments.cpp | 106 | ||||
-rw-r--r-- | TAO/tao/Basic_Arguments.h | 81 | ||||
-rw-r--r-- | TAO/tao/Object_Argument_T.cpp | 281 | ||||
-rw-r--r-- | TAO/tao/Object_Argument_T.h | 253 | ||||
-rw-r--r-- | TAO/tao/Special_Basic_Arguments.cpp | 10 | ||||
-rw-r--r-- | TAO/tao/Special_Basic_Arguments.h | 57 | ||||
-rw-r--r-- | TAO/tao/UB_String_Argument_T.cpp | 8 | ||||
-rw-r--r-- | TAO/tao/UB_String_Arguments.cpp | 16 | ||||
-rw-r--r-- | TAO/tao/UB_String_Arguments.h | 27 | ||||
-rw-r--r-- | TAO/tests/Bench/wire/testC.cpp | 8 | ||||
-rw-r--r-- | TAO/tests/Bench/wire/testS.cpp | 8 |
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 [] = { |