summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-22 05:39:02 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-22 05:39:02 +0000
commit10d34906068242121d8f342973b62e5a280e78f4 (patch)
treeb1703cb8f53ef502b8cd7c909d470482946750ed
parentc4bb9ba7645091dda22c052df74d7f8d99300756 (diff)
downloadATCD-10d34906068242121d8f342973b62e5a280e78f4.tar.gz
ChangeLogTag: Sun Jun 22 000:31:20 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref19
-rw-r--r--TAO/tao/BD_String_Argument_T.cpp11
-rw-r--r--TAO/tao/BD_String_Argument_T.h4
-rw-r--r--TAO/tao/Fixed_Size_Argument_T.cpp263
-rw-r--r--TAO/tao/Fixed_Size_Argument_T.h251
-rw-r--r--TAO/tao/Makefile.tao2
-rw-r--r--TAO/tao/TAO.dsp18
-rw-r--r--TAO/tao/UB_String_Argument_T.cpp14
-rw-r--r--TAO/tao/UB_String_Argument_T.h6
-rw-r--r--TAO/tao/Var_Size_Argument_T.cpp268
-rw-r--r--TAO/tao/Var_Size_Argument_T.h251
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 */