diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-22 05:39:02 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-06-22 05:39:02 +0000 |
commit | 10d34906068242121d8f342973b62e5a280e78f4 (patch) | |
tree | b1703cb8f53ef502b8cd7c909d470482946750ed | |
parent | c4bb9ba7645091dda22c052df74d7f8d99300756 (diff) | |
download | ATCD-10d34906068242121d8f342973b62e5a280e78f4.tar.gz |
ChangeLogTag: Sun Jun 22 000:31:20 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 19 | ||||
-rw-r--r-- | TAO/tao/BD_String_Argument_T.cpp | 11 | ||||
-rw-r--r-- | TAO/tao/BD_String_Argument_T.h | 4 | ||||
-rw-r--r-- | TAO/tao/Fixed_Size_Argument_T.cpp | 263 | ||||
-rw-r--r-- | TAO/tao/Fixed_Size_Argument_T.h | 251 | ||||
-rw-r--r-- | TAO/tao/Makefile.tao | 2 | ||||
-rw-r--r-- | TAO/tao/TAO.dsp | 18 | ||||
-rw-r--r-- | TAO/tao/UB_String_Argument_T.cpp | 14 | ||||
-rw-r--r-- | TAO/tao/UB_String_Argument_T.h | 6 | ||||
-rw-r--r-- | TAO/tao/Var_Size_Argument_T.cpp | 268 | ||||
-rw-r--r-- | TAO/tao/Var_Size_Argument_T.h | 251 |
11 files changed, 1087 insertions, 20 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index d8c2cf9bae8..35b0be65700 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,22 @@ +Sun Jun 22 000:31:20 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * tao/BD_String_Argument_T.cpp: + * tao/BD_String_Argument_T.h: + * tao/UB_String_Argument_T.cpp: + * tao/UB_String_Argument_T.h: + + Removed unnecessary template parameter. + + * tao/Var_Size_Argument_T.cpp: + * tao/Var_Size_Argument_T.h: + * tao/Fixed_Size_Argument_T.cpp: + * tao/Fixed_Size_Argument_T.h: + * tao/Makefile.tao: + * tao/TAO.dsp: + + Added new files and classes for fixed and variable size structs, + unions, and sequences. + Fri Jun 20 17:17:57 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * tao/Basic_Argument_T.h: diff --git a/TAO/tao/BD_String_Argument_T.cpp b/TAO/tao/BD_String_Argument_T.cpp index 797f5ce16ab..8a21ca7c699 100644 --- a/TAO/tao/BD_String_Argument_T.cpp +++ b/TAO/tao/BD_String_Argument_T.cpp @@ -320,22 +320,20 @@ TAO::Inout_BD_String_SArgument_T<S,S_var,to_S,from_S,BOUND>::arg (void) template<typename S, typename S_var, - typename S_out, typename to_S, typename from_S, size_t BOUND> -TAO::Out_BD_String_SArgument_T<S,S_var,S_out,to_S,from_S,BOUND>:: +TAO::Out_BD_String_SArgument_T<S,S_var,to_S,from_S,BOUND>:: Out_BD_String_SArgument_T (void) {} template<typename S, typename S_var, - typename S_out, typename to_S, typename from_S, size_t BOUND> CORBA::Boolean -TAO::Out_BD_String_SArgument_T<S,S_var,S_out,to_S,from_S,BOUND>::marshal ( +TAO::Out_BD_String_SArgument_T<S,S_var,to_S,from_S,BOUND>::marshal ( TAO_OutputCDR &cdr ) { @@ -344,12 +342,11 @@ TAO::Out_BD_String_SArgument_T<S,S_var,S_out,to_S,from_S,BOUND>::marshal ( template<typename S, typename S_var, - typename S_out, typename to_S, typename from_S, size_t BOUND> -S_out -TAO::Out_BD_String_SArgument_T<S,S_var,S_out,to_S,from_S,BOUND>::arg (void) +S *& +TAO::Out_BD_String_SArgument_T<S,S_var,to_S,from_S,BOUND>::arg (void) { return this->x_.out (); } diff --git a/TAO/tao/BD_String_Argument_T.h b/TAO/tao/BD_String_Argument_T.h index d480de14db3..d5f18f6ae1b 100644 --- a/TAO/tao/BD_String_Argument_T.h +++ b/TAO/tao/BD_String_Argument_T.h @@ -180,7 +180,6 @@ namespace TAO */ template<typename S, typename S_var, - typename S_out, typename to_S, typename from_S, size_t BOUND> @@ -191,7 +190,7 @@ namespace TAO virtual CORBA::Boolean marshal (TAO_OutputCDR &); - S_out arg (void); + S *& arg (void); private: S_var x_; @@ -282,7 +281,6 @@ namespace TAO BOUND> inout_sarg_val; typedef Out_BD_String_SArgument_T<T, T_var, - T_out, to_T, from_T, BOUND> out_sarg_val; diff --git a/TAO/tao/Fixed_Size_Argument_T.cpp b/TAO/tao/Fixed_Size_Argument_T.cpp new file mode 100644 index 00000000000..aee7ca4bdf4 --- /dev/null +++ b/TAO/tao/Fixed_Size_Argument_T.cpp @@ -0,0 +1,263 @@ +// $Id$ + +#ifndef TAO_FIXED_SIZE_ARGUMENT_T_C +#define TAO_FIXED_SIZE_ARGUMENT_T_C + +#include "tao/Fixed_Size_Argument_T.h" + +ACE_RCSID (tao, + Fixed_Size_Argument_T, + "$Id$") + +template<typename S> +TAO::In_Fixed_Size_Argument_T<S>::In_Fixed_Size_Argument_T (S const & x) + : x_ (&x) +{} + +template<typename S> +CORBA::Boolean +TAO::In_Fixed_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +void +TAO::In_Fixed_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_IN; +} + +template<typename S> +CORBA::Boolean +TAO::In_Fixed_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +// =========================================================== + +template<typename S> +TAO::Inout_Fixed_Size_Argument_T<S>::Inout_Fixed_Size_Argument_T (S & x) + : x_ (&x) +{} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::Inout_Fixed_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_INOUT; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +// ============================================================== + +template<typename S> +TAO::Out_Fixed_Size_Argument_T<S>::Out_Fixed_Size_Argument_T (S & x) + : x_ (x) +{} + +template<typename S> +CORBA::Boolean +TAO::Out_Fixed_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> this->x_; +} + +// ============================================================ + +template<typename S> +TAO::Ret_Fixed_Size_Argument_T<S>::Ret_Fixed_Size_Argument_T (void) +{ +} + +template<typename S> +CORBA::Boolean +TAO::Ret_Fixed_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::Ret_Fixed_Size_Argument_T<S>::interceptor_result (CORBA::Any * any) +{ + (*any) <<= *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Ret_Fixed_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +S +TAO::Ret_Fixed_Size_Argument_T<S>::excp (void) +{ + return *this->x_; +} + +template<typename S> +S +TAO::Ret_Fixed_Size_Argument_T<S>::retn (void) +{ + return *this->x_; +} + +// ============================================================ + +template<typename S> +TAO::In_Fixed_Size_SArgument_T<S>::In_Fixed_Size_SArgument_T (void) +{} + +template<typename S> +CORBA::Boolean +TAO::In_Fixed_Size_SArgument_T<S>::demarshal (TAO_InputCDR &cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::In_Fixed_Size_SArgument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_IN; +} + +template<typename S> +CORBA::Boolean +TAO::In_Fixed_Size_SArgument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +const S & +TAO::In_Fixed_Size_SArgument_T<S>::arg (void) const +{ + return *this->x_; +} + +// =========================================================== + +template<typename S> +TAO::Inout_Fixed_Size_SArgument_T<S>::Inout_Fixed_Size_SArgument_T (void) +{} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_SArgument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_SArgument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::Inout_Fixed_Size_SArgument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_INOUT; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Fixed_Size_SArgument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +S & +TAO::Inout_Fixed_Size_SArgument_T<S>::arg (void) +{ + return *this->x_; +} + +// ============================================================== + +template<typename S> +TAO::Out_Fixed_Size_SArgument_T<S>::Out_Fixed_Size_SArgument_T (void) +{} + +template<typename S> +CORBA::Boolean +TAO::Out_Fixed_Size_SArgument_T<S>::marshal (TAO_OutputCDR &cdr) +{ + return cdr << this->x_; +} + +template<typename S> +S & +TAO::Out_Fixed_Size_SArgument_T<S>::arg (void) +{ + return this->x_; +} + +// ============================================================ + +template<typename S> +TAO::Ret_Fixed_Size_SArgument_T<S>::Ret_Fixed_Size_SArgument_T (void) +{ +} + +template<typename S> +CORBA::Boolean +TAO::Ret_Fixed_Size_SArgument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +void +TAO::Ret_Fixed_Size_SArgument_T<S>::interceptor_result (CORBA::Any * any) +{ + (*any) <<= *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Ret_Fixed_Size_SArgument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +S & +TAO::Ret_Fixed_Size_SArgument_T<S>::arg (void) +{ + return *this->x_; +} + +#endif /* TAO_FIXED_SIZE_ARGUMENT_T_C */ diff --git a/TAO/tao/Fixed_Size_Argument_T.h b/TAO/tao/Fixed_Size_Argument_T.h new file mode 100644 index 00000000000..64b5380a0d5 --- /dev/null +++ b/TAO/tao/Fixed_Size_Argument_T.h @@ -0,0 +1,251 @@ +// This may look like C, but it's really -*- C++ -*- + +//============================================================================= +/** + * @file Basic_Argument_T.h + * + * $Id$ + * + * @authors Jeff Parsons and Carlos O'Ryan + */ +//============================================================================= + + +#ifndef TAO_FIXED_SIZE_ARGUMENT_T_H +#define TAO_FIXED_SIZE_ARGUMENT_T_H + +#include "ace/pre.h" +#include "tao/Argument.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace TAO +{ + /** + * @class In_Fixed_Size_Argument_T + * + * @brief Template class for IN stub argument of fixed size IDL types. + * + */ + template<typename S> + class In_Fixed_Size_Argument_T : public Argument + { + public: + In_Fixed_Size_Argument_T (S const & x); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + virtual void interceptor_param (Dynamic::Parameter &); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + private: + const S * x_; + }; + + /** + * @class Inout_Fixed_Size_Argument_T + * + * @brief Template class for INOUT stub argument of fixed size IDL types. + * + */ + template<typename S> + class Inout_Fixed_Size_Argument_T : public Argument + { + public: + Inout_Fixed_Size_Argument_T (S & 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: + S * x_; + }; + + /** + * @class Out_Fixed_Size_Argument_T + * + * @brief Template class for OUT stub argument of fixed size IDL types. + * + */ + template<typename S> + class Out_Fixed_Size_Argument_T : public Argument + { + public: + Out_Fixed_Size_Argument_T (S & x); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + private: + mutable S & x_; + }; + + /** + * @class Ret_Fixed_Size_Argument_T + * + * @brief Template class for return stub value of fixed size IDL types. + * + */ + template<typename S> + class Ret_Fixed_Size_Argument_T : public Argument + { + public: + Ret_Fixed_Size_Argument_T (void); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + virtual void interceptor_result (CORBA::Any *); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + S excp (void); + S retn (void); + + protected: + S * x_; + }; + + /** + * @class In_Fixed_Size_SArgument_T + * + * @brief Template class for IN skeleton argument of fixed size IDL types. + * + */ + template<typename S> + class In_Fixed_Size_SArgument_T : public Argument + { + public: + In_Fixed_Size_SArgument_T (void); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + virtual void interceptor_param (Dynamic::Parameter &); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + const S & arg (void) const; + + private: + S * x_; + }; + + /** + * @class Inout_Fixed_Size_SArgument_T + * + * @brief Template class for INOUT skeleton arg of fixed size IDL types. + * + */ + template<typename S> + class Inout_Fixed_Size_SArgument_T : public Argument + { + public: + Inout_Fixed_Size_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 & arg (void); + + private: + S * x_; + }; + + /** + * @class Out_Fixed_Size_SArgument_T + * + * @brief Template class for OUT skeleton argument of fixed size IDL types. + * + */ + template<typename S> + class Out_Fixed_Size_SArgument_T : public Argument + { + public: + Out_Fixed_Size_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + S & arg (void); + + private: + S x_; + }; + + /** + * @class Ret_Fixed_Size_SArgument_T + * + * @brief Template class for return skeleton value of fixed size IDL types. + * + */ + template<typename S> + class Ret_Fixed_Size_SArgument_T : public Argument + { + public: + Ret_Fixed_Size_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + virtual void interceptor_result (CORBA::Any *); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + S & arg (void); + + private: + S * x_; + }; + + /** + * @struct Basic_Tag + * + * @brief Struct for fixed size IDL type arguments id tag. + * + */ + struct TAO_Export Fixed_Size_Tag {}; + + /** + * @struct Basic_Arg_Traits_T + * + * @brief Template class for argument traits of fixed size IDL types. + * + */ + template<typename T> + struct Fixed_Size_Arg_Traits_T + { + typedef T ret_type; + typedef const T & in_type; + typedef T & inout_type; + typedef T & out_type; + + typedef In_Fixed_Size_Argument_T<T> in_arg_val; + typedef Inout_Fixed_Size_Argument_T<T> inout_arg_val; + typedef Out_Fixed_Size_Argument_T<T> out_arg_val; + typedef Ret_Fixed_Size_Argument_T<T> stub_ret_val; + + typedef In_Fixed_Size_SArgument_T<T> in_sarg_val; + typedef Inout_Fixed_Size_SArgument_T<T> inout_sarg_val; + typedef Out_Fixed_Size_SArgument_T<T> out_sarg_val; + typedef Ret_Fixed_Size_SArgument_T<T> skel_ret_val; + + typedef Fixed_Size_Tag idl_tag; + }; +}; + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "tao/Fixed_Size_Argument_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Fixed_Size_Argument_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" + +#endif /* TAO_FIXED_SIZE_ARGUMENT_T_H */ diff --git a/TAO/tao/Makefile.tao b/TAO/tao/Makefile.tao index 55cce10d9ce..6da005b0925 100644 --- a/TAO/tao/Makefile.tao +++ b/TAO/tao/Makefile.tao @@ -332,6 +332,8 @@ TEMPLATE_FILES = \ Object_Argument_T \ Special_Basic_Argument_T \ UB_String_Argument_T \ + Fixed_Size_Argument_T \ + Var_Size_Argument_T \ TAO_Singleton ifndef TAO_ROOT diff --git a/TAO/tao/TAO.dsp b/TAO/tao/TAO.dsp index 387e143cbb6..27b6e8304e7 100644 --- a/TAO/tao/TAO.dsp +++ b/TAO/tao/TAO.dsp @@ -1328,6 +1328,10 @@ SOURCE=.\FILE_Parser.h # End Source File
# Begin Source File
+SOURCE=.\Fixed_Size_Argument_T.h
+# End Source File
+# Begin Source File
+
SOURCE=.\Flushing_Strategy.h
# End Source File
# Begin Source File
@@ -1968,6 +1972,10 @@ SOURCE=.\Valuetype_Adapter.h # End Source File
# Begin Source File
+SOURCE=.\Var_Size_Argument_T.h
+# End Source File
+# Begin Source File
+
SOURCE=.\varbase.h
# End Source File
# Begin Source File
@@ -2666,6 +2674,11 @@ SOURCE=.\Codeset_Translator_Factory_T.cpp # End Source File
# Begin Source File
+SOURCE=.\Fixed_Size_Argument_T.cpp
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
SOURCE=.\Object_Argument_T.cpp
# PROP Exclude_From_Build 1
# End Source File
@@ -2706,6 +2719,11 @@ SOURCE=.\UB_String_Argument_T.cpp # End Source File
# Begin Source File
+SOURCE=.\Var_Size_Argument_T.cpp
+# PROP Exclude_From_Build 1
+# End Source File
+# Begin Source File
+
SOURCE=.\VarOut_T.cpp
# PROP Exclude_From_Build 1
# End Source File
diff --git a/TAO/tao/UB_String_Argument_T.cpp b/TAO/tao/UB_String_Argument_T.cpp index 971291322c9..9afcc40b11e 100644 --- a/TAO/tao/UB_String_Argument_T.cpp +++ b/TAO/tao/UB_String_Argument_T.cpp @@ -214,22 +214,22 @@ TAO::Inout_UB_String_SArgument_T<S,S_var>::arg (void) // ============================================================== -template<typename S, typename S_var, typename S_out> -TAO::Out_UB_String_SArgument_T<S,S_var,S_out>::Out_UB_String_SArgument_T ( +template<typename S, typename S_var> +TAO::Out_UB_String_SArgument_T<S,S_var>::Out_UB_String_SArgument_T ( void ) {} -template<typename S, typename S_var, typename S_out> +template<typename S, typename S_var> CORBA::Boolean -TAO::Out_UB_String_SArgument_T<S,S_var,S_out>::marshal (TAO_OutputCDR &cdr) +TAO::Out_UB_String_SArgument_T<S,S_var>::marshal (TAO_OutputCDR &cdr) { return cdr << this->x_.in (); } -template<typename S, typename S_var, typename S_out> -S_out -TAO::Out_UB_String_SArgument_T<S,S_var,S_out>::arg (void) +template<typename S, typename S_var> +S *& +TAO::Out_UB_String_SArgument_T<S,S_var>::arg (void) { return this->x_.out (); } diff --git a/TAO/tao/UB_String_Argument_T.h b/TAO/tao/UB_String_Argument_T.h index 7270e274a08..3ff6f54fece 100644 --- a/TAO/tao/UB_String_Argument_T.h +++ b/TAO/tao/UB_String_Argument_T.h @@ -161,7 +161,7 @@ namespace TAO * @brief Template class for INOUT skeleton UB (w)string argument. * */ - template<typename S, typename S_var, typename S_out> + template<typename S, typename S_var> class Out_UB_String_SArgument_T : public Argument { public: @@ -169,7 +169,7 @@ namespace TAO virtual CORBA::Boolean marshal (TAO_OutputCDR &); - S_out arg (void); + S *& arg (void); private: S_var x_; @@ -227,7 +227,7 @@ namespace TAO typedef In_UB_String_SArgument_T<T,T_var> in_sarg_val; typedef Inout_UB_String_SArgument_T<T,T_var> inout_sarg_val; - typedef Out_UB_String_SArgument_T<T,T_var,T_out> out_sarg_val; + typedef Out_UB_String_SArgument_T<T,T_var> out_sarg_val; typedef Ret_UB_String_SArgument_T<T,T_var> skel_ret_val; typedef UB_String_Tag idl_tag; diff --git a/TAO/tao/Var_Size_Argument_T.cpp b/TAO/tao/Var_Size_Argument_T.cpp new file mode 100644 index 00000000000..655cb59e81f --- /dev/null +++ b/TAO/tao/Var_Size_Argument_T.cpp @@ -0,0 +1,268 @@ +// $Id$ + +#ifndef TAO_VAR_SIZE_ARGUMENT_T_C +#define TAO_VAR_SIZE_ARGUMENT_T_C + +#include "tao/Var_Size_Argument_T.h" + +ACE_RCSID (tao, + Var_Size_Argument_T, + "$Id$") + +template<typename S> +TAO::In_Var_Size_Argument_T<S>::In_Var_Size_Argument_T (S const & x) + : x_ (&x) +{} + +template<typename S> +CORBA::Boolean +TAO::In_Var_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +void +TAO::In_Var_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_IN; +} + +template<typename S> +CORBA::Boolean +TAO::In_Var_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +// =========================================================== + +template<typename S> +TAO::Inout_Var_Size_Argument_T<S>::Inout_Var_Size_Argument_T (S & x) + : x_ (&x) +{} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_Argument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_Argument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::Inout_Var_Size_Argument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_INOUT; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_Argument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +// ============================================================== + +template<typename S, typename S_out> +TAO::Out_Var_Size_Argument_T<S,S_out>::Out_Var_Size_Argument_T (S_out x) + : x_ (x.ptr ()) +{ + ACE_NEW (this->x_, + S); +} + +template<typename S, typename S_out> +CORBA::Boolean +TAO::Out_Var_Size_Argument_T<S,S_out>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +// ============================================================ + +template<typename S, typename S_var> +TAO::Ret_Var_Size_Argument_T<S,S_var>::Ret_Var_Size_Argument_T (void) +{ + ACE_NEW (this->x_.out (), + S); +} + +template<typename S, typename S_var> +CORBA::Boolean +TAO::Ret_Var_Size_Argument_T<S,S_var>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_.out (); +} + +template<typename S, typename S_var> +void +TAO::Ret_Var_Size_Argument_T<S,S_var>::interceptor_result (CORBA::Any * any) +{ + (*any) <<= this->x_.in (); +} + +template<typename S, typename S_var> +CORBA::Boolean +TAO::Ret_Var_Size_Argument_T<S,S_var>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_.out (); +} + +template<typename S, typename S_var> +S * +TAO::Ret_Var_Size_Argument_T<S,S_var>::excp (void) +{ + return this->x_.ptr (); +} + +template<typename S, typename S_var> +S * +TAO::Ret_Var_Size_Argument_T<S,S_var>::retn (void) +{ + return this->x_._retn (); +} + +// ============================================================ + +template<typename S> +TAO::In_Var_Size_SArgument_T<S>::In_Var_Size_SArgument_T (void) +{} + +template<typename S> +CORBA::Boolean +TAO::In_Var_Size_SArgument_T<S>::demarshal (TAO_InputCDR &cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::In_Var_Size_SArgument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_IN; +} + +template<typename S> +CORBA::Boolean +TAO::In_Var_Size_SArgument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +const S & +TAO::In_Var_Size_SArgument_T<S>::arg (void) const +{ + return *this->x_; +} + +// =========================================================== + +template<typename S> +TAO::Inout_Var_Size_SArgument_T<S>::Inout_Var_Size_SArgument_T (void) +{} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_SArgument_T<S>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << *this->x_; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_SArgument_T<S>::demarshal (TAO_InputCDR & cdr) +{ + return cdr >> *this->x_; +} + +template<typename S> +void +TAO::Inout_Var_Size_SArgument_T<S>::interceptor_param (Dynamic::Parameter & p) +{ + p.argument <<= *this->x_; + p.mode = CORBA::PARAM_INOUT; +} + +template<typename S> +CORBA::Boolean +TAO::Inout_Var_Size_SArgument_T<S>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_; +} + +template<typename S> +S & +TAO::Inout_Var_Size_SArgument_T<S>::arg (void) +{ + return *this->x_; +} + +// ============================================================== + +template<typename S, typename S_var> +TAO::Out_Var_Size_SArgument_T<S,S_var>::Out_Var_Size_SArgument_T (void) +{} + +template<typename S, typename S_var> +CORBA::Boolean +TAO::Out_Var_Size_SArgument_T<S,S_var>::marshal (TAO_OutputCDR &cdr) +{ + return cdr << this->x_.in (); +} + +template<typename S, typename S_var> +S *& +TAO::Out_Var_Size_SArgument_T<S,S_var>::arg (void) +{ + return this->x_.out (); +} + +// ============================================================ + +template<typename S, typename S_var> +TAO::Ret_Var_Size_SArgument_T<S,S_var>::Ret_Var_Size_SArgument_T (void) +{ +} + +template<typename S, typename S_var> +CORBA::Boolean +TAO::Ret_Var_Size_SArgument_T<S,S_var>::marshal (TAO_OutputCDR & cdr) +{ + return cdr << this->x_.in (); +} + +template<typename S, typename S_var> +void +TAO::Ret_Var_Size_SArgument_T<S,S_var>::interceptor_result (CORBA::Any * any) +{ + (*any) <<= this->x_.in (); +} + +template<typename S, typename S_var> +CORBA::Boolean +TAO::Ret_Var_Size_SArgument_T<S,S_var>::interceptor_replace (CORBA::Any & any) +{ + return any >>= this->x_.out (); +} + +template<typename S, typename S_var> +S *& +TAO::Ret_Var_Size_SArgument_T<S,S_var>::arg (void) +{ + return this->x_.out (); +} + +#endif /* TAO_VAR_SIZE_ARGUMENT_T_C */ diff --git a/TAO/tao/Var_Size_Argument_T.h b/TAO/tao/Var_Size_Argument_T.h new file mode 100644 index 00000000000..c0a298ae764 --- /dev/null +++ b/TAO/tao/Var_Size_Argument_T.h @@ -0,0 +1,251 @@ +// This may look like C, but it's really -*- C++ -*- + +//============================================================================= +/** + * @file Basic_Argument_T.h + * + * $Id$ + * + * @authors Jeff Parsons and Carlos O'Ryan + */ +//============================================================================= + + +#ifndef TAO_VAR_SIZE_ARGUMENT_T_H +#define TAO_VAR_SIZE_ARGUMENT_T_H + +#include "ace/pre.h" +#include "tao/Argument.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace TAO +{ + /** + * @class In_Var_Size_Argument_T + * + * @brief Template class for IN stub argument of fixed size IDL types. + * + */ + template<typename S> + class In_Var_Size_Argument_T : public Argument + { + public: + In_Var_Size_Argument_T (S const & x); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + virtual void interceptor_param (Dynamic::Parameter &); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + private: + const S * x_; + }; + + /** + * @class Inout_Var_Size_Argument_T + * + * @brief Template class for INOUT stub argument of fixed size IDL types. + * + */ + template<typename S> + class Inout_Var_Size_Argument_T : public Argument + { + public: + Inout_Var_Size_Argument_T (S & 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: + S * x_; + }; + + /** + * @class Out_Var_Size_Argument_T + * + * @brief Template class for OUT stub argument of fixed size IDL types. + * + */ + template<typename S, typename S_out> + class Out_Var_Size_Argument_T : public Argument + { + public: + Out_Var_Size_Argument_T (S_out x); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + private: + S *& x_; + }; + + /** + * @class Ret_Var_Size_Argument_T + * + * @brief Template class for return stub value of fixed size IDL types. + * + */ + template<typename S, typename S_var> + class Ret_Var_Size_Argument_T : public Argument + { + public: + Ret_Var_Size_Argument_T (void); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + virtual void interceptor_result (CORBA::Any *); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + S * excp (void); + S * retn (void); + + protected: + S_var x_; + }; + + /** + * @class In_Var_Size_SArgument_T + * + * @brief Template class for IN skeleton argument of fixed size IDL types. + * + */ + template<typename S> + class In_Var_Size_SArgument_T : public Argument + { + public: + In_Var_Size_SArgument_T (void); + + virtual CORBA::Boolean demarshal (TAO_InputCDR &); + + virtual void interceptor_param (Dynamic::Parameter &); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + const S & arg (void) const; + + private: + S * x_; + }; + + /** + * @class Inout_Var_Size_SArgument_T + * + * @brief Template class for INOUT skeleton arg of fixed size IDL types. + * + */ + template<typename S> + class Inout_Var_Size_SArgument_T : public Argument + { + public: + Inout_Var_Size_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 & arg (void); + + private: + S * x_; + }; + + /** + * @class Out_Var_Size_SArgument_T + * + * @brief Template class for OUT skeleton argument of fixed size IDL types. + * + */ + template<typename S, typename S_var> + class Out_Var_Size_SArgument_T : public Argument + { + public: + Out_Var_Size_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + S *& arg (void); + + private: + S_var x_; + }; + + /** + * @class Ret_Var_Size_SArgument_T + * + * @brief Template class for return skeleton value of fixed size IDL types. + * + */ + template<typename S, typename S_var> + class Ret_Var_Size_SArgument_T : public Argument + { + public: + Ret_Var_Size_SArgument_T (void); + + virtual CORBA::Boolean marshal (TAO_OutputCDR &); + + virtual void interceptor_result (CORBA::Any *); + virtual CORBA::Boolean interceptor_replace (CORBA::Any &); + + S *& arg (void); + + private: + S_var x_; + }; + + /** + * @struct Basic_Tag + * + * @brief Struct for fixed size IDL type arguments id tag. + * + */ + struct TAO_Export Var_Size_Tag {}; + + /** + * @struct Basic_Arg_Traits_T + * + * @brief Template class for argument traits of fixed size IDL types. + * + */ + template<typename T, typename T_var, typename T_out> + struct Var_Size_Arg_Traits_T + { + typedef T * ret_type; + typedef const T & in_type; + typedef T & inout_type; + typedef T_out out_type; + + typedef In_Var_Size_Argument_T<T> in_arg_val; + typedef Inout_Var_Size_Argument_T<T> inout_arg_val; + typedef Out_Var_Size_Argument_T<T,T_out> out_arg_val; + typedef Ret_Var_Size_Argument_T<T,T_var> stub_ret_val; + + typedef In_Var_Size_SArgument_T<T> in_sarg_val; + typedef Inout_Var_Size_SArgument_T<T> inout_sarg_val; + typedef Out_Var_Size_SArgument_T<T,T_var> out_sarg_val; + typedef Ret_Var_Size_SArgument_T<T,T_var> skel_ret_val; + + typedef Var_Size_Tag idl_tag; + }; +}; + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "tao/Var_Size_Argument_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("Var_Size_Argument_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include "ace/post.h" + +#endif /* TAO_VAR_SIZE_ARGUMENT_T_H */ |