diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-19 04:00:16 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-19 04:00:16 +0000 |
commit | ed712be81d024cda0d0477d3297625632b95bba9 (patch) | |
tree | 0c248d16d1a01f0879f2e1a9482bb39843ba9e34 | |
parent | 8bebed5183233f822f45b234855530bab6a62673 (diff) | |
download | ATCD-ed712be81d024cda0d0477d3297625632b95bba9.tar.gz |
ChangeLogTag: Wed Jun 18 22:57:37 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 13 | ||||
-rw-r--r-- | TAO/tao/Arg_Traits_T.h | 2 | ||||
-rw-r--r-- | TAO/tao/BD_String_Argument_T.cpp | 311 | ||||
-rw-r--r-- | TAO/tao/BD_String_Argument_T.h | 273 | ||||
-rw-r--r-- | TAO/tao/UB_String_Argument_T.h | 6 | ||||
-rw-r--r-- | TAO/tao/UB_String_Arguments.cpp | 2 |
6 files changed, 602 insertions, 5 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index c69ae14db77..029a8937b13 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,16 @@ +Wed Jun 18 22:57:37 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * tao/BD_String_Argument_T.cpp: + * tao/BD_String_Argument_T.h: + + New files, for bounded string and wstring arguments. + + * tao/Arg_Traits_T.h: + * tao/UB_String_Argument_T.h: + * tao/UB_String_Arguments.cpp: + + Fixed mistakes in comments. + Wed Jun 18 19:09:55 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * tao/Arg_Traits_T.h: diff --git a/TAO/tao/Arg_Traits_T.h b/TAO/tao/Arg_Traits_T.h index f27d11a3b4d..c9c7e812f8c 100644 --- a/TAO/tao/Arg_Traits_T.h +++ b/TAO/tao/Arg_Traits_T.h @@ -24,7 +24,7 @@ namespace TAO { /** * - * @brief Template class specialized for each IDL arg/return type. + * @brief Template class specialized for IDL arg/return types. * */ template<typename S> diff --git a/TAO/tao/BD_String_Argument_T.cpp b/TAO/tao/BD_String_Argument_T.cpp new file mode 100644 index 00000000000..ec71ba06b26 --- /dev/null +++ b/TAO/tao/BD_String_Argument_T.cpp @@ -0,0 +1,311 @@ +// $Id$ + +#ifndef TAO_BD_STRING_ARGUMENT_T_C +#define TAO_BD_STRING_ARGUMENT_T_C + +#include "tao/BD_String_Argument_T.h" + +ACE_RCSID (tao, + String_Argument_T, + "$Id$") + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::In_BD_String_Argument_T<S,to_S,from_S,BOUND>::In_BD_String_Argument_T ( + S * const & x + ) + : x_ (x) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::In_BD_String_Argument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & cdr + ) +{ + return cdr << from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::In_BD_String_Argument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & + ) +{ + return 1; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::In_BD_String_Argument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & p + ) +{ + p.argument <<= from_S (this->x_, BOUND); + p.mode = CORBA::PARAM_IN; +} + +// =========================================================== + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Inout_BD_String_Argument_T<S,to_S,from_S,BOUND>:: +Inout_BD_String_Argument_T (S *& x) + : x_ (x) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Inout_BD_String_Argument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & cdr + ) +{ + return cdr << from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Inout_BD_String_Argument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & cdr + ) +{ + return cdr >> to_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Inout_BD_String_Argument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & p + ) +{ + p.argument <<= from_S (this->x_, BOUND); + p.mode = CORBA::PARAM_INOUT; +} + +// ============================================================== + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Out_BD_String_Argument_T<S,to_S,from_S,BOUND>::Out_BD_String_Argument_T ( + S *& x + ) + : x_ (x) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Out_BD_String_Argument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & + ) +{ + return 1; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Out_BD_String_Argument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & cdr + ) +{ + return cdr >> to_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Out_BD_String_Argument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & + ) +{ +} + +// ============================================================ + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Ret_BD_String_Argument_T<S,to_S,from_S,BOUND>::Ret_BD_String_Argument_T ( + void + ) +{ +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Ret_BD_String_Argument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & cdr + ) +{ + return cdr >> to_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Ret_BD_String_Argument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + CORBA::Any * any + ) +{ + (*any) <<= from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Ret_BD_String_Argument_T<S,to_S,from_S,BOUND>::operator S * () const +{ + return this->x_; +} + +// ============================================================ + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::In_BD_String_SArgument_T<S,to_S,from_S,BOUND>::In_BD_String_SArgument_T ( + void + ) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::In_BD_String_SArgument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & + ) +{ + return 1; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::In_BD_String_SArgument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & cdr + ) +{ + return cdr >> to_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::In_BD_String_SArgument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & p + ) +{ + p.argument <<= from_S (this->x_, BOUND); + p.mode = CORBA::PARAM_IN; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::In_BD_String_SArgument_T<S,to_S,from_S,BOUND>::operator S * () const +{ + return this->x_; +} + +// =========================================================== + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Inout_BD_String_SArgument_T<S,to_S,from_S,BOUND>:: +Inout_BD_String_SArgument_T (void) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Inout_BD_String_SArgument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & cdr + ) +{ + return cdr << from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Inout_BD_String_SArgument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & cdr + ) +{ + return cdr >> to_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Inout_BD_String_SArgument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & p + ) +{ + p.argument <<= from_S (this->x_, BOUND); + p.mode = CORBA::PARAM_INOUT; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Inout_BD_String_SArgument_T<S,to_S,from_S,BOUND>::operator S *& () +{ + return this->x_; +} + +// ============================================================== + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Out_BD_String_SArgument_T<S,to_S,from_S,BOUND>:: +Out_BD_String_SArgument_T (void) +{} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Out_BD_String_SArgument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR &cdr + ) +{ + return cdr << from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Out_BD_String_SArgument_T<S,to_S,from_S,BOUND>::demarshal ( + TAO_InputCDR & + ) +{ + return 1; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Out_BD_String_SArgument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + Dynamic::Parameter & + ) +{ +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Out_BD_String_SArgument_T<S,to_S,from_S,BOUND>::operator S *& () +{ + return this->x_; +} + +// ============================================================ + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Ret_BD_String_SArgument_T<S,to_S,from_S,BOUND>:: +Ret_BD_String_SArgument_T (void) +{ +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +CORBA::Boolean +TAO::Ret_BD_String_SArgument_T<S,to_S,from_S,BOUND>::marshal ( + TAO_OutputCDR & cdr + ) +{ + return cdr << from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +void +TAO::Ret_BD_String_SArgument_T<S,to_S,from_S,BOUND>::add_to_interceptor ( + CORBA::Any * any + ) +{ + (*any) <<= from_S (this->x_, BOUND); +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Ret_BD_String_SArgument_T<S,to_S,from_S,BOUND>::operator S * () const +{ + return this->x_; +} + +template<typename S, typename to_S, typename from_S, size_t BOUND> +TAO::Ret_BD_String_SArgument_T<S,to_S,from_S,BOUND>::operator S *& () +{ + return this->x_; +} + +#endif /* TAO_BD_STRING_ARGUMENT_T_C */ diff --git a/TAO/tao/BD_String_Argument_T.h b/TAO/tao/BD_String_Argument_T.h new file mode 100644 index 00000000000..bbaf00a737e --- /dev/null +++ b/TAO/tao/BD_String_Argument_T.h @@ -0,0 +1,273 @@ +// This may look like C, but it's really -*- C++ -*- + +//============================================================================= +/** + * @file BD_String_Argument_T.h + * + * $Id$ + * + * @authors Jeff Parsons and Carlos O'Ryan + */ +//============================================================================= + + +#ifndef TAO_BD_STRING_ARGUMENT_T_H +#define TAO_BD_STRING_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_BD_String_Argument_T + * + * @brief Template class for IN unbounded (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class In_BD_String_Argument_T : public Argument + { + public: + In_BD_String_Argument_T (S * const & x); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + private: + S * const & x_; + }; + + /** + * @class Inout_BD_String_Argument_T + * + * @brief Template class for INOUT unbounded (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Inout_BD_String_Argument_T : public Argument + { + public: + Inout_BD_String_Argument_T (S *& x); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + private: + mutable S *& x_; + }; + + /** + * @class Out_BD_String_Argument_T + * + * @brief Template class for INOUT unbounded (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Out_BD_String_Argument_T : public Argument + { + public: + Out_BD_String_Argument_T (S *& x); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + private: + mutable S *& x_; + }; + + /** + * @class Ret_BD_String_Argument_T + * + * @brief Template class for return stub value of ub (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Ret_BD_String_Argument_T : public Stub_Retval + { + public: + Ret_BD_String_Argument_T (void); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (CORBA::Any *); + + operator S * () const; + + private: + S * x_; + }; + + /** + * @class In_BD_String_SArgument_T + * + * @brief Template class for IN skeleton UB (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class In_BD_String_SArgument_T : public Argument + { + public: + In_BD_String_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + operator S * () const; + + private: + S * x_; + }; + + /** + * @class Inout_BD_String_SArgument_T + * + * @brief Template class for INOUT skeleton UB (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Inout_BD_String_SArgument_T : public Argument + { + public: + Inout_BD_String_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + operator S *& (); + + private: + S * x_; + }; + + /** + * @class Out_BD_String_SArgument_T + * + * @brief Template class for INOUT skeleton UB (w)string argument. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Out_BD_String_SArgument_T : public Argument + { + public: + Out_BD_String_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + virtual void add_to_interceptor (Dynamic::Parameter &); + + operator S *& (); + + private: + S * x_; + }; + + /** + * @class Ret_BD_String_SArgument_T + * + * @brief Template class for return skeleton value of UB (w)string. + * + */ + template<typename S, typename to_S, typename from_S, size_t BOUND> + class Ret_BD_String_SArgument_T : public Skel_Retval + { + public: + Ret_BD_String_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + virtual void add_to_interceptor (CORBA::Any *); + + operator S * () const; + operator S *& (); + + private: + S * x_; + }; + + /** + * @struct BD_String_Tag + * + * @brief Struct for bounded (w)string arguments id tag. + * + */ + struct TAO_Export BD_String_Tag {}; + + /** + * @struct Basic_Arg_Traits_T + * + * @brief Template class for argument traits of bounded (w)strings. + * + */ + template<typename T, typename T_out, typename to_T, typename from_T, 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 In_BD_String_Argument_T<T,to_T,from_T,BOUND> in_arg_val; + typedef Inout_BD_String_Argument_T<T,to_T,from_T,BOUND> inout_arg_val; + typedef Out_BD_String_Argument_T<T,to_T,from_T,BOUND> out_arg_val; + typedef Ret_BD_String_Argument_T<T,to_T,from_T,BOUND> stub_ret_val; + + typedef In_BD_String_SArgument_T<T,to_T,from_T,BOUND> in_sarg_val; + typedef Inout_BD_String_SArgument_T<T,to_T,from_T,BOUND> inout_sarg_val; + typedef Out_BD_String_SArgument_T<T,to_T,from_T,BOUND> out_sarg_val; + typedef Ret_BD_String_SArgument_T<T,to_T,from_T,BOUND> skel_ret_val; + + typedef BD_String_Tag idl_tag; + }; + + /** + * + * @brief Specializations for bounded (w)strings + * + */ + + template<size_t BOUND> + class BD_String_Traits + : public BD_String_Arg_Traits_T<CORBA::Char, + CORBA::String_out, + ACE_InputCDR::to_string, + ACE_OutputCDR::from_string, + size_t BOUND> + { + }; + + template<size_t BOUND> + class BD_WString_Traits + : public BD_String_Arg_Traits_T<CORBA::WChar, + CORBA::WString_out, + ACE_InputCDR::to_wstring, + ACE_OutputCDR::from_wstring, + size_t BOUND> + { + }; +}; + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "tao/BD_String_Argument_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("BD_String_Argument_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" + +#endif /* TAO_BD_STRING_ARGUMENT_T_H */ + diff --git a/TAO/tao/UB_String_Argument_T.h b/TAO/tao/UB_String_Argument_T.h index 9518e11226c..46865d8f7db 100644 --- a/TAO/tao/UB_String_Argument_T.h +++ b/TAO/tao/UB_String_Argument_T.h @@ -2,7 +2,7 @@ //============================================================================= /** - * @file String_Argument_T.h + * @file UB_String_Argument_T.h * * $Id$ * @@ -196,7 +196,7 @@ namespace TAO /** * @struct UB_String_Tag * - * @brief Struct for basic IDL type arguments id tag. + * @brief Struct for unbounded (w)string arguments id tag. * */ struct TAO_Export UB_String_Tag {}; @@ -204,7 +204,7 @@ namespace TAO /** * @struct Basic_Arg_Traits_T * - * @brief Template class for argument traits of basic IDL types. + * @brief Template class for argument traits of unbounded (w)strings. * */ template<typename T, typename T_out> diff --git a/TAO/tao/UB_String_Arguments.cpp b/TAO/tao/UB_String_Arguments.cpp index f112e2e243a..d9aa03433ac 100644 --- a/TAO/tao/UB_String_Arguments.cpp +++ b/TAO/tao/UB_String_Arguments.cpp @@ -1,6 +1,6 @@ // $Id$ -#include "tao/Special_Basic_Arguments.h" +#include "tao/UB_String_Arguments.h" ACE_RCSID (tao, Special_Basic_Arguments, |