summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-19 00:15:14 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-06-19 00:15:14 +0000
commitfd4f134a4dd6073c812d8351420c6db6f202d49a (patch)
treeba8dab96c97ea80d927fe5b0f9de1268f6235552
parent95a32d57dc697f30e392105fa726ee1e9a09bc52 (diff)
downloadATCD-fd4f134a4dd6073c812d8351420c6db6f202d49a.tar.gz
ChangeLogTag: Wed Jun 18 19:09:55 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref29
-rw-r--r--TAO/tao/Arg_Traits_T.h (renamed from TAO/tao/Traits_T.h)2
-rw-r--r--TAO/tao/Argument.h5
-rw-r--r--TAO/tao/Basic_Argument_T.cpp39
-rw-r--r--TAO/tao/Basic_Argument_T.h26
-rw-r--r--TAO/tao/Basic_Arguments.cpp36
-rw-r--r--TAO/tao/Basic_Arguments.h22
-rw-r--r--TAO/tao/Special_Basic_Argument_T.cpp45
-rw-r--r--TAO/tao/Special_Basic_Argument_T.h26
-rw-r--r--TAO/tao/Special_Basic_Arguments.cpp16
-rw-r--r--TAO/tao/Special_Basic_Arguments.h10
-rw-r--r--TAO/tao/TAO.dsp37
-rw-r--r--TAO/tao/UB_String_Argument_T.cpp257
-rw-r--r--TAO/tao/UB_String_Argument_T.h247
-rw-r--r--TAO/tao/UB_String_Arguments.cpp27
-rw-r--r--TAO/tao/UB_String_Arguments.h49
16 files changed, 739 insertions, 134 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 3517eaa94eb..a02aec0fc8b 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,32 @@
+Wed Jun 18 19:09:55 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * tao/Arg_Traits_T.h:
+
+ Renamed Traits_T.h as this.
+
+ * tao/Argument.h:
+ * tao/Basic_Argument_T.cpp:
+ * tao/Basic_Argument_T.h:
+ * tao/Basic_Arguments.cpp:
+ * tao/Basic_Arguments.h:
+ * tao/Special_Basic_Argument_T.cpp:
+ * tao/Special_Basic_Argument_T.h:
+ * tao/Special_Basic_Arguments.cpp:
+ * tao/Special_Basic_Arguments.h:
+
+ Removed string argument name member - it's never used.
+
+ * tao/Traits_T.h:
+
+ Renamed this as Arg_Traits_T.h.
+
+ * tao/UB_String_Argument_T.cpp:
+ * tao/UB_String_Argument_T.h:
+ * tao/UB_String_Arguments.cpp:
+ * tao/UB_String_Arguments.h:
+
+ New files, for unbounded string and wstring arguments.
+
Tue Jun 17 18:27:44 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* tao/Argument.h:
diff --git a/TAO/tao/Traits_T.h b/TAO/tao/Arg_Traits_T.h
index c40b675583f..f27d11a3b4d 100644
--- a/TAO/tao/Traits_T.h
+++ b/TAO/tao/Arg_Traits_T.h
@@ -28,7 +28,7 @@ namespace TAO
*
*/
template<typename S>
- class Traits
+ class Arg_Traits
{
};
};
diff --git a/TAO/tao/Argument.h b/TAO/tao/Argument.h
index 9f1fcb2095c..758bbb1338a 100644
--- a/TAO/tao/Argument.h
+++ b/TAO/tao/Argument.h
@@ -34,14 +34,9 @@ namespace TAO
class TAO_Export Argument
{
public:
- Argument (char const *argname) : argname_ (argname ) {}
-
virtual CORBA::Boolean marshal (TAO_OutputCDR &) = 0;
virtual CORBA::Boolean demarshal (TAO_InputCDR &) = 0;
virtual void add_to_interceptor (Dynamic::Parameter &) = 0;
-
- private:
- char const * argname_;
};
/**
diff --git a/TAO/tao/Basic_Argument_T.cpp b/TAO/tao/Basic_Argument_T.cpp
index 34f97e89f4e..4df89f8546c 100644
--- a/TAO/tao/Basic_Argument_T.cpp
+++ b/TAO/tao/Basic_Argument_T.cpp
@@ -10,10 +10,8 @@ ACE_RCSID (tao,
"$Id$")
template<typename S>
-TAO::In_Basic_Argument_T<S>::In_Basic_Argument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (x)
+TAO::In_Basic_Argument_T<S>::In_Basic_Argument_T (S const & x)
+ : x_ (x)
{}
template<typename S>
@@ -41,10 +39,8 @@ TAO::In_Basic_Argument_T<S>::add_to_interceptor (Dynamic::Parameter & p)
// ===========================================================
template<typename S>
-TAO::Inout_Basic_Argument_T<S>::Inout_Basic_Argument_T (S & x,
- char const * argname)
- : Argument (argname),
- x_ (x)
+TAO::Inout_Basic_Argument_T<S>::Inout_Basic_Argument_T (S & x)
+ : x_ (x)
{}
template<typename S>
@@ -72,10 +68,8 @@ TAO::Inout_Basic_Argument_T<S>::add_to_interceptor (Dynamic::Parameter & p)
// ==============================================================
template<typename S>
-TAO::Out_Basic_Argument_T<S>::Out_Basic_Argument_T (S & x,
- char const * argname)
- : Argument (argname),
- x_ (x)
+TAO::Out_Basic_Argument_T<S>::Out_Basic_Argument_T (S & x)
+ : x_ (x)
{}
template<typename S>
@@ -101,8 +95,7 @@ TAO::Out_Basic_Argument_T<S>::add_to_interceptor (Dynamic::Parameter &)
// ============================================================
template<typename S>
-TAO::Ret_Basic_Argument_T<S>::Ret_Basic_Argument_T (S const & x)
- : x_ (ACE_const_cast (S &, x))
+TAO::Ret_Basic_Argument_T<S>::Ret_Basic_Argument_T (void)
{
}
@@ -129,10 +122,7 @@ TAO::Ret_Basic_Argument_T<S>::operator S () const
// ============================================================
template<typename S>
-TAO::In_Basic_SArgument_T<S>::In_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+TAO::In_Basic_SArgument_T<S>::In_Basic_SArgument_T (void)
{}
template<typename S>
@@ -166,10 +156,7 @@ TAO::In_Basic_SArgument_T<S>::operator S () const
// ===========================================================
template<typename S>
-TAO::Inout_Basic_SArgument_T<S>::Inout_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+TAO::Inout_Basic_SArgument_T<S>::Inout_Basic_SArgument_T (void)
{}
template<typename S>
@@ -203,10 +190,7 @@ TAO::Inout_Basic_SArgument_T<S>::operator S & ()
// ==============================================================
template<typename S>
-TAO::Out_Basic_SArgument_T<S>::Out_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+TAO::Out_Basic_SArgument_T<S>::Out_Basic_SArgument_T (void)
{}
template<typename S>
@@ -238,8 +222,7 @@ TAO::Out_Basic_SArgument_T<S>::operator S & ()
// ============================================================
template<typename S>
-TAO::Ret_Basic_SArgument_T<S>::Ret_Basic_SArgument_T (S const & x)
- : x_ (ACE_const_cast (S &, x))
+TAO::Ret_Basic_SArgument_T<S>::Ret_Basic_SArgument_T (void)
{
}
diff --git a/TAO/tao/Basic_Argument_T.h b/TAO/tao/Basic_Argument_T.h
index 45ff805c8bc..b0b1499cd85 100644
--- a/TAO/tao/Basic_Argument_T.h
+++ b/TAO/tao/Basic_Argument_T.h
@@ -34,7 +34,7 @@ namespace TAO
class In_Basic_Argument_T : public Argument
{
public:
- In_Basic_Argument_T (S const & x, char const * argname);
+ In_Basic_Argument_T (S const & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -54,7 +54,7 @@ namespace TAO
class Inout_Basic_Argument_T : public Argument
{
public:
- Inout_Basic_Argument_T (S & x, char const * argname);
+ Inout_Basic_Argument_T (S & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -74,7 +74,7 @@ namespace TAO
class Out_Basic_Argument_T : public Argument
{
public:
- Out_Basic_Argument_T (S & x, char const * argname);
+ Out_Basic_Argument_T (S & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -94,7 +94,7 @@ namespace TAO
class Ret_Basic_Argument_T : public Stub_Retval
{
public:
- Ret_Basic_Argument_T (S const & x);
+ Ret_Basic_Argument_T (void);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
virtual void add_to_interceptor (CORBA::Any *);
@@ -102,7 +102,7 @@ namespace TAO
operator S () const;
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -115,7 +115,7 @@ namespace TAO
class In_Basic_SArgument_T : public Argument
{
public:
- In_Basic_SArgument_T (S const & x, char const * argname);
+ In_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -124,7 +124,7 @@ namespace TAO
operator S () const;
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -137,7 +137,7 @@ namespace TAO
class Inout_Basic_SArgument_T : public Argument
{
public:
- Inout_Basic_SArgument_T (S const & x, char const * argname);
+ Inout_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -146,7 +146,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -159,7 +159,7 @@ namespace TAO
class Out_Basic_SArgument_T : public Argument
{
public:
- Out_Basic_SArgument_T (S const & x, char const * argname);
+ Out_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -168,7 +168,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -181,7 +181,7 @@ namespace TAO
class Ret_Basic_SArgument_T : public Skel_Retval
{
public:
- Ret_Basic_SArgument_T (S const & x);
+ Ret_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual void add_to_interceptor (CORBA::Any *);
@@ -190,7 +190,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
diff --git a/TAO/tao/Basic_Arguments.cpp b/TAO/tao/Basic_Arguments.cpp
index 177450ef614..7caa381e161 100644
--- a/TAO/tao/Basic_Arguments.cpp
+++ b/TAO/tao/Basic_Arguments.cpp
@@ -44,15 +44,15 @@ TAO::Ret_Basic_SArgument_T<void>::operator void () const
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class TAO::Traits<CORBA::Short>;
-template class TAO::Traits<CORBA::Long>;
-template class TAO::Traits<CORBA::UShort>;
-template class TAO::Traits<CORBA::ULong>;
-template class TAO::Traits<CORBA::Float>;
-template class TAO::Traits<CORBA::Double>;
-template class TAO::Traits<CORBA::LongLong>;
-template class TAO::Traits<CORBA::ULongLong>;
-template class TAO::Traits<CORBA::LongDouble>;
+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>;
@@ -66,15 +66,15 @@ template class TAO::Special_Basic_Arg_Traits_T<CORBA::LongDouble>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-# pragma instantiate TAO::Traits<CORBA::Short>
-# pragma instantiate TAO::Traits<CORBA::Long>
-# pragma instantiate TAO::Traits<CORBA::UShort>
-# pragma instantiate TAO::Traits<CORBA::ULong>
-# pragma instantiate TAO::Traits<CORBA::Float>
-# pragma instantiate TAO::Traits<CORBA::Double>
-# pragma instantiate TAO::Traits<CORBA::LongLong>
-# pragma instantiate TAO::Traits<CORBA::ULongLong>
-# pragma instantiate TAO::Traits<CORBA::LongDouble>
+# 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>
diff --git a/TAO/tao/Basic_Arguments.h b/TAO/tao/Basic_Arguments.h
index fe0843d49a1..a8e3ceb91fc 100644
--- a/TAO/tao/Basic_Arguments.h
+++ b/TAO/tao/Basic_Arguments.h
@@ -21,7 +21,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "Basic_Argument_T.h"
-#include "Traits_T.h"
+#include "Arg_Traits_T.h"
namespace TAO
{
@@ -52,7 +52,7 @@ namespace TAO
};
template<>
- class Traits<void>
+ class Arg_Traits<void>
{
typedef void ret_type;
@@ -69,47 +69,47 @@ namespace TAO
*/
template<>
- class Traits<CORBA::Short> : public Basic_Arg_Traits_T<CORBA::Short>
+ class Arg_Traits<CORBA::Short> : public Basic_Arg_Traits_T<CORBA::Short>
{
};
template<>
- class Traits<CORBA::Long> : public Basic_Arg_Traits_T<CORBA::Long>
+ class Arg_Traits<CORBA::Long> : public Basic_Arg_Traits_T<CORBA::Long>
{
};
template<>
- class Traits<CORBA::UShort> : public Basic_Arg_Traits_T<CORBA::UShort>
+ class Arg_Traits<CORBA::UShort> : public Basic_Arg_Traits_T<CORBA::UShort>
{
};
template<>
- class Traits<CORBA::ULong> : public Basic_Arg_Traits_T<CORBA::ULong>
+ class Arg_Traits<CORBA::ULong> : public Basic_Arg_Traits_T<CORBA::ULong>
{
};
template<>
- class Traits<CORBA::Float> : public Basic_Arg_Traits_T<CORBA::Float>
+ class Arg_Traits<CORBA::Float> : public Basic_Arg_Traits_T<CORBA::Float>
{
};
template<>
- class Traits<CORBA::Double> : public Basic_Arg_Traits_T<CORBA::Double>
+ class Arg_Traits<CORBA::Double> : public Basic_Arg_Traits_T<CORBA::Double>
{
};
template<>
- class Traits<CORBA::LongLong> : public Basic_Arg_Traits_T<CORBA::LongLong>
+ class Arg_Traits<CORBA::LongLong> : public Basic_Arg_Traits_T<CORBA::LongLong>
{
};
template<>
- class Traits<CORBA::ULongLong> : public Basic_Arg_Traits_T<CORBA::ULongLong>
+ class Arg_Traits<CORBA::ULongLong> : public Basic_Arg_Traits_T<CORBA::ULongLong>
{
};
template<>
- class Traits<CORBA::LongDouble> : public Basic_Arg_Traits_T<CORBA::LongDouble>
+ class Arg_Traits<CORBA::LongDouble> : public Basic_Arg_Traits_T<CORBA::LongDouble>
{
};
};
diff --git a/TAO/tao/Special_Basic_Argument_T.cpp b/TAO/tao/Special_Basic_Argument_T.cpp
index 1a8a5fb696b..67d67271729 100644
--- a/TAO/tao/Special_Basic_Argument_T.cpp
+++ b/TAO/tao/Special_Basic_Argument_T.cpp
@@ -11,11 +11,9 @@ ACE_RCSID (tao,
template<typename S, typename to_S, typename from_S>
TAO::In_Special_Basic_Argument_T<S,to_S,from_S>::In_Special_Basic_Argument_T (
- const S & x,
- char const * argname
+ const S & x
)
- : Argument (argname),
- x_ (x)
+ : x_ (x)
{}
template<typename S, typename to_S, typename from_S>
@@ -46,10 +44,8 @@ TAO::In_Special_Basic_Argument_T<S,to_S,from_S>::add_to_interceptor (
template<typename S, typename to_S, typename from_S>
TAO::Inout_Special_Basic_Argument_T<S,to_S,from_S>::
-Inout_Special_Basic_Argument_T (S & x,
- char const * argname)
- : Argument (argname),
- x_ (x)
+Inout_Special_Basic_Argument_T (S & x)
+ : x_ (x)
{}
template<typename S, typename to_S, typename from_S>
@@ -84,10 +80,8 @@ TAO::Inout_Special_Basic_Argument_T<S,to_S,from_S>::add_to_interceptor (
template<typename S, typename to_S, typename from_S>
TAO::Out_Special_Basic_Argument_T<S,to_S,from_S>::
-Out_Special_Basic_Argument_T (S & x,
- char const * argname)
- : Argument (argname),
- x_ (x)
+Out_Special_Basic_Argument_T (S & x)
+ : x_ (x)
{}
template<typename S, typename to_S, typename from_S>
@@ -117,10 +111,8 @@ TAO::Out_Special_Basic_Argument_T<S,to_S,from_S>::add_to_interceptor (
// ============================================================
template<typename S, typename to_S, typename from_S>
-TAO::Ret_Special_Basic_Argument_T<S,to_S,from_S>::Ret_Special_Basic_Argument_T (
- S const & x
- )
- : x_ (ACE_const_cast (S &, x))
+TAO::Ret_Special_Basic_Argument_T<S,to_S,from_S>::
+Ret_Special_Basic_Argument_T (void)
{
}
@@ -146,10 +138,7 @@ TAO::Ret_Special_Basic_Argument_T<S,to_S,from_S>::add_to_interceptor (
template<typename S, typename to_S, typename from_S>
TAO::In_Special_Basic_SArgument_T<S,to_S,from_S>::
-In_Special_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+In_Special_Basic_SArgument_T (void)
{}
template<typename S, typename to_S, typename from_S>
@@ -188,10 +177,7 @@ TAO::In_Special_Basic_SArgument_T<S,to_S,from_S>::operator S () const
template<typename S, typename to_S, typename from_S>
TAO::Inout_Special_Basic_SArgument_T<S,to_S,from_S>::
-Inout_Special_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+Inout_Special_Basic_SArgument_T (void)
{}
template<typename S, typename to_S, typename from_S>
@@ -232,10 +218,7 @@ TAO::Inout_Special_Basic_SArgument_T<S,to_S,from_S>::operator S & ()
template<typename S, typename to_S, typename from_S>
TAO::Out_Special_Basic_SArgument_T<S,to_S,from_S>::
-Out_Special_Basic_SArgument_T (S const & x,
- char const * argname)
- : Argument (argname),
- x_ (ACE_const_cast (S &, x))
+Out_Special_Basic_SArgument_T (void)
{}
template<typename S, typename to_S, typename from_S>
@@ -271,10 +254,8 @@ TAO::Out_Special_Basic_SArgument_T<S,to_S,from_S>::operator S & ()
// ==============================================================
template<typename S, typename to_S, typename from_S>
-TAO::Ret_Special_Basic_SArgument_T<S,to_S,from_S>::Ret_Special_Basic_SArgument_T (
- S const & x
- )
- : x_ (ACE_const_cast (S &, x))
+TAO::Ret_Special_Basic_SArgument_T<S,to_S,from_S>::
+Ret_Special_Basic_SArgument_T (void)
{
}
diff --git a/TAO/tao/Special_Basic_Argument_T.h b/TAO/tao/Special_Basic_Argument_T.h
index 353ef5ffa45..8e2626e8ac9 100644
--- a/TAO/tao/Special_Basic_Argument_T.h
+++ b/TAO/tao/Special_Basic_Argument_T.h
@@ -34,7 +34,7 @@ namespace TAO
class TAO_Export In_Special_Basic_Argument_T : public Argument
{
public:
- In_Special_Basic_Argument_T (S const & x, char const * argname);
+ In_Special_Basic_Argument_T (S const & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -54,7 +54,7 @@ namespace TAO
class TAO_Export Inout_Special_Basic_Argument_T : public Argument
{
public:
- Inout_Special_Basic_Argument_T (S & x, char const * argname);
+ Inout_Special_Basic_Argument_T (S & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -74,7 +74,7 @@ namespace TAO
class TAO_Export Out_Special_Basic_Argument_T : public Argument
{
public:
- Out_Special_Basic_Argument_T (S & x, char const * argname);
+ Out_Special_Basic_Argument_T (S & x);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -94,7 +94,7 @@ namespace TAO
class TAO_Export Ret_Special_Basic_Argument_T : public Stub_Retval
{
public:
- Ret_Special_Basic_Argument_T (S const & x);
+ Ret_Special_Basic_Argument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual void add_to_interceptor (CORBA::Any *);
@@ -102,7 +102,7 @@ namespace TAO
operator S () const;
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -115,7 +115,7 @@ namespace TAO
class TAO_Export In_Special_Basic_SArgument_T : public Argument
{
public:
- In_Special_Basic_SArgument_T (S const & x, char const * argname);
+ In_Special_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -124,7 +124,7 @@ namespace TAO
operator S () const;
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -137,7 +137,7 @@ namespace TAO
class TAO_Export Inout_Special_Basic_SArgument_T : public Argument
{
public:
- Inout_Special_Basic_SArgument_T (S const & x, char const * argname);
+ Inout_Special_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -146,7 +146,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -159,7 +159,7 @@ namespace TAO
class TAO_Export Out_Special_Basic_SArgument_T : public Argument
{
public:
- Out_Special_Basic_SArgument_T (S const & x, char const * argname);
+ Out_Special_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual CORBA::Boolean demarshal (TAO_InputCDR &);
@@ -168,7 +168,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
@@ -181,7 +181,7 @@ namespace TAO
class TAO_Export Ret_Special_Basic_SArgument_T : public Skel_Retval
{
public:
- Ret_Special_Basic_SArgument_T (S const & x);
+ Ret_Special_Basic_SArgument_T (void);
virtual CORBA::Boolean marshal (TAO_OutputCDR &);
virtual void add_to_interceptor (CORBA::Any *);
@@ -190,7 +190,7 @@ namespace TAO
operator S & ();
private:
- mutable S & x_;
+ S x_;
};
/**
diff --git a/TAO/tao/Special_Basic_Arguments.cpp b/TAO/tao/Special_Basic_Arguments.cpp
index 972d9773ee4..c5f892b74fc 100644
--- a/TAO/tao/Special_Basic_Arguments.cpp
+++ b/TAO/tao/Special_Basic_Arguments.cpp
@@ -8,10 +8,10 @@ ACE_RCSID (tao,
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class TAO::Traits<CORBA::Char>;
-template class TAO::Traits<CORBA::WChar>;
-template class TAO::Traits<CORBA::Octet>;
-template class TAO::Traits<ACE_InputCDR::to_boolean>;
+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,
@@ -31,10 +31,10 @@ template class TAO::Special_Basic_Arg_Traits_T<CORBA::Boolean,
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-# pragma instantiate TAO::Traits<CORBA::Char>
-# pragma instantiate TAO::Traits<CORBA::WChar>
-# pragma instantiate TAO::Traits<CORBA::Octet>
-# pragma instantiate TAO::Traits<ACE_InputCDR::to_boolean>
+# 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, \
diff --git a/TAO/tao/Special_Basic_Arguments.h b/TAO/tao/Special_Basic_Arguments.h
index 01b5869c04c..6f077a885c3 100644
--- a/TAO/tao/Special_Basic_Arguments.h
+++ b/TAO/tao/Special_Basic_Arguments.h
@@ -21,7 +21,7 @@
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "Special_Basic_Argument_T.h"
-#include "Traits_T.h"
+#include "Arg_Traits_T.h"
namespace TAO
{
@@ -32,7 +32,7 @@ namespace TAO
*/
template<>
- class Traits<CORBA::Char>
+ class Arg_Traits<CORBA::Char>
: public Special_Basic_Arg_Traits_T<CORBA::Char,
ACE_InputCDR::to_char,
ACE_OutputCDR::from_char>
@@ -40,7 +40,7 @@ namespace TAO
};
template<>
- class Traits<CORBA::WChar>
+ class Arg_Traits<CORBA::WChar>
: public Special_Basic_Arg_Traits_T<CORBA::WChar,
ACE_InputCDR::to_wchar,
ACE_OutputCDR::from_wchar>
@@ -48,7 +48,7 @@ namespace TAO
};
template<>
- class Traits<CORBA::Octet>
+ class Arg_Traits<CORBA::Octet>
: public Special_Basic_Arg_Traits_T<CORBA::Octet,
ACE_InputCDR::to_octet,
ACE_OutputCDR::from_octet>
@@ -56,7 +56,7 @@ namespace TAO
};
template<>
- class Traits<ACE_InputCDR::to_boolean>
+ class Arg_Traits<ACE_InputCDR::to_boolean>
: public Special_Basic_Arg_Traits_T<CORBA::Boolean,
ACE_InputCDR::to_boolean,
ACE_OutputCDR::from_boolean>
diff --git a/TAO/tao/TAO.dsp b/TAO/tao/TAO.dsp
index b28bade25a0..ca19e13c799 100644
--- a/TAO/tao/TAO.dsp
+++ b/TAO/tao/TAO.dsp
@@ -200,6 +200,10 @@ SOURCE=.\Base_Transport_Property.cpp
# End Source File
# Begin Source File
+SOURCE=.\Basic_Arguments.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\BiDir_Adapter.cpp
# End Source File
# Begin Source File
@@ -868,6 +872,10 @@ SOURCE=.\skip.cpp
# End Source File
# Begin Source File
+SOURCE=.\Special_Basic_Arguments.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\StringSeqC.cpp
# ADD CPP /GR
# End Source File
@@ -983,6 +991,10 @@ SOURCE=.\TypeCodeFactory_Adapter.cpp
# End Source File
# Begin Source File
+SOURCE=.\UB_String_Arguments.cpp
+# End Source File
+# Begin Source File
+
SOURCE=.\Valuetype_Adapter.cpp
# End Source File
# Begin Source File
@@ -1060,6 +1072,10 @@ SOURCE=.\arg_shifter.h
# End Source File
# Begin Source File
+SOURCE=.\Arg_Traits_T.h
+# End Source File
+# Begin Source File
+
SOURCE=.\Argument.h
# End Source File
# Begin Source File
@@ -1084,6 +1100,10 @@ SOURCE=.\Basic_Argument_T.h
# End Source File
# Begin Source File
+SOURCE=.\Basic_Arguments.h
+# End Source File
+# Begin Source File
+
SOURCE=.\BiDir_Adapter.h
# End Source File
# Begin Source File
@@ -1800,6 +1820,10 @@ SOURCE=.\Special_Basic_Argument_T.h
# End Source File
# Begin Source File
+SOURCE=.\Special_Basic_Arguments.h
+# End Source File
+# Begin Source File
+
SOURCE=.\StringSeqC.h
# End Source File
# Begin Source File
@@ -1920,6 +1944,14 @@ SOURCE=.\TypeCodeFactory_Adapter.h
# End Source File
# Begin Source File
+SOURCE=.\UB_String_Argument_T.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\UB_String_Arguments.h
+# End Source File
+# Begin Source File
+
SOURCE=.\Valuetype_Adapter.h
# End Source File
# Begin Source File
@@ -2647,6 +2679,11 @@ SOURCE=.\Special_Basic_Argument_T.cpp
# End Source File
# Begin Source File
+SOURCE=.\UB_String_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
new file mode 100644
index 00000000000..f9f459b552b
--- /dev/null
+++ b/TAO/tao/UB_String_Argument_T.cpp
@@ -0,0 +1,257 @@
+// $Id$
+
+#ifndef TAO_UB_STRING_ARGUMENT_T_C
+#define TAO_UB_STRING_ARGUMENT_T_C
+
+#include "tao/UB_String_Argument_T.h"
+
+ACE_RCSID (tao,
+ String_Argument_T,
+ "$Id$")
+
+template<typename S>
+TAO::In_UB_String_Argument_T<S>::In_UB_String_Argument_T (S * const & x)
+ : x_ (x)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::In_UB_String_Argument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::In_UB_String_Argument_T<S>::demarshal (TAO_InputCDR &)
+{
+ return 1;
+}
+
+template<typename S>
+void
+TAO::In_UB_String_Argument_T<S>::add_to_interceptor (Dynamic::Parameter & p)
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_IN;
+}
+
+// ===========================================================
+
+template<typename S>
+TAO::Inout_UB_String_Argument_T<S>::Inout_UB_String_Argument_T (S *& x)
+ : x_ (x)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_UB_String_Argument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_UB_String_Argument_T<S>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S>
+void
+TAO::Inout_UB_String_Argument_T<S>::add_to_interceptor (Dynamic::Parameter & p)
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_INOUT;
+}
+
+// ==============================================================
+
+template<typename S>
+TAO::Out_UB_String_Argument_T<S>::Out_UB_String_Argument_T (S *& x)
+ : x_ (x)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::Out_UB_String_Argument_T<S>::marshal (TAO_OutputCDR &)
+{
+ return 1;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Out_UB_String_Argument_T<S>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S>
+void
+TAO::Out_UB_String_Argument_T<S>::add_to_interceptor (Dynamic::Parameter &)
+{
+}
+
+// ============================================================
+
+template<typename S>
+TAO::Ret_UB_String_Argument_T<S>::Ret_UB_String_Argument_T (void)
+{
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Ret_UB_String_Argument_T<S>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S>
+void
+TAO::Ret_UB_String_Argument_T<S>::add_to_interceptor (CORBA::Any * any)
+{
+ (*any) <<= this->x_;
+}
+
+template<typename S>
+TAO::Ret_UB_String_Argument_T<S>::operator S * () const
+{
+ return this->x_;
+}
+
+// ============================================================
+
+template<typename S>
+TAO::In_UB_String_SArgument_T<S>::In_UB_String_SArgument_T (void)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::In_UB_String_SArgument_T<S>::marshal (TAO_OutputCDR &)
+{
+ return 1;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::In_UB_String_SArgument_T<S>::demarshal (TAO_InputCDR &cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S>
+void
+TAO::In_UB_String_SArgument_T<S>::add_to_interceptor (Dynamic::Parameter & p)
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_IN;
+}
+
+template<typename S>
+TAO::In_UB_String_SArgument_T<S>::operator S * () const
+{
+ return this->x_;
+}
+
+// ===========================================================
+
+template<typename S>
+TAO::Inout_UB_String_SArgument_T<S>::Inout_UB_String_SArgument_T (void)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_UB_String_SArgument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Inout_UB_String_SArgument_T<S>::demarshal (TAO_InputCDR & cdr)
+{
+ return cdr >> this->x_;
+}
+
+template<typename S>
+void
+TAO::Inout_UB_String_SArgument_T<S>::add_to_interceptor (
+ Dynamic::Parameter & p
+ )
+{
+ p.argument <<= this->x_;
+ p.mode = CORBA::PARAM_INOUT;
+}
+
+template<typename S>
+TAO::Inout_UB_String_SArgument_T<S>::operator S *& ()
+{
+ return this->x_;
+}
+
+// ==============================================================
+
+template<typename S>
+TAO::Out_UB_String_SArgument_T<S>::Out_UB_String_SArgument_T (void)
+{}
+
+template<typename S>
+CORBA::Boolean
+TAO::Out_UB_String_SArgument_T<S>::marshal (TAO_OutputCDR &cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Out_UB_String_SArgument_T<S>::demarshal (TAO_InputCDR &)
+{
+ return 1;
+}
+
+template<typename S>
+void
+TAO::Out_UB_String_SArgument_T<S>::add_to_interceptor (Dynamic::Parameter &)
+{
+}
+
+template<typename S>
+TAO::Out_UB_String_SArgument_T<S>::operator S *& ()
+{
+ return this->x_;
+}
+
+// ============================================================
+
+template<typename S>
+TAO::Ret_UB_String_SArgument_T<S>::Ret_UB_String_SArgument_T (void)
+{
+}
+
+template<typename S>
+CORBA::Boolean
+TAO::Ret_UB_String_SArgument_T<S>::marshal (TAO_OutputCDR & cdr)
+{
+ return cdr << this->x_;
+}
+
+template<typename S>
+void
+TAO::Ret_UB_String_SArgument_T<S>::add_to_interceptor (CORBA::Any * any)
+{
+ (*any) <<= this->x_;
+}
+
+template<typename S>
+TAO::Ret_UB_String_SArgument_T<S>::operator S * () const
+{
+ return this->x_;
+}
+
+template<typename S>
+TAO::Ret_UB_String_SArgument_T<S>::operator S *& ()
+{
+ return this->x_;
+}
+
+#endif /* TAO_UB_STRING_ARGUMENT_T_C */
diff --git a/TAO/tao/UB_String_Argument_T.h b/TAO/tao/UB_String_Argument_T.h
new file mode 100644
index 00000000000..9518e11226c
--- /dev/null
+++ b/TAO/tao/UB_String_Argument_T.h
@@ -0,0 +1,247 @@
+// This may look like C, but it's really -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file String_Argument_T.h
+ *
+ * $Id$
+ *
+ * @authors Jeff Parsons and Carlos O'Ryan
+ */
+//=============================================================================
+
+
+#ifndef TAO_UB_STRING_ARGUMENT_T_H
+#define TAO_UB_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_UB_String_Argument_T
+ *
+ * @brief Template class for IN unbounded (w)string argument.
+ *
+ */
+ template<typename S>
+ class In_UB_String_Argument_T : public Argument
+ {
+ public:
+ In_UB_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_UB_String_Argument_T
+ *
+ * @brief Template class for INOUT unbounded (w)string argument.
+ *
+ */
+ template<typename S>
+ class Inout_UB_String_Argument_T : public Argument
+ {
+ public:
+ Inout_UB_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_UB_String_Argument_T
+ *
+ * @brief Template class for INOUT unbounded (w)string argument.
+ *
+ */
+ template<typename S>
+ class Out_UB_String_Argument_T : public Argument
+ {
+ public:
+ Out_UB_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_UB_String_Argument_T
+ *
+ * @brief Template class for return stub value of ub (w)string argument.
+ *
+ */
+ template<typename S>
+ class Ret_UB_String_Argument_T : public Stub_Retval
+ {
+ public:
+ Ret_UB_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_UB_String_SArgument_T
+ *
+ * @brief Template class for IN skeleton UB (w)string argument.
+ *
+ */
+ template<typename S>
+ class In_UB_String_SArgument_T : public Argument
+ {
+ public:
+ In_UB_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_UB_String_SArgument_T
+ *
+ * @brief Template class for INOUT skeleton UB (w)string argument.
+ *
+ */
+ template<typename S>
+ class Inout_UB_String_SArgument_T : public Argument
+ {
+ public:
+ Inout_UB_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_UB_String_SArgument_T
+ *
+ * @brief Template class for INOUT skeleton UB (w)string argument.
+ *
+ */
+ template<typename S>
+ class Out_UB_String_SArgument_T : public Argument
+ {
+ public:
+ Out_UB_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_UB_String_SArgument_T
+ *
+ * @brief Template class for return skeleton value of UB (w)string.
+ *
+ */
+ template<typename S>
+ class Ret_UB_String_SArgument_T : public Skel_Retval
+ {
+ public:
+ Ret_UB_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 UB_String_Tag
+ *
+ * @brief Struct for basic IDL type arguments id tag.
+ *
+ */
+ struct TAO_Export UB_String_Tag {};
+
+ /**
+ * @struct Basic_Arg_Traits_T
+ *
+ * @brief Template class for argument traits of basic IDL types.
+ *
+ */
+ template<typename T, typename T_out>
+ struct UB_String_Arg_Traits_T
+ {
+ typedef T * ret_type;
+ typedef const T * in_type;
+ typedef T *& inout_type;
+ typedef T_out out_type;
+
+ typedef In_UB_String_Argument_T<T> in_arg_val;
+ typedef Inout_UB_String_Argument_T<T> inout_arg_val;
+ typedef Out_UB_String_Argument_T<T> out_arg_val;
+ typedef Ret_UB_String_Argument_T<T> stub_ret_val;
+
+ typedef In_UB_String_SArgument_T<T> in_sarg_val;
+ typedef Inout_UB_String_SArgument_T<T> inout_sarg_val;
+ typedef Out_UB_String_SArgument_T<T> out_sarg_val;
+ typedef Ret_UB_String_SArgument_T<T> skel_ret_val;
+
+ typedef UB_String_Tag idl_tag;
+ };
+};
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "tao/UB_String_Argument_T.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("UB_String_Argument_T.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#include "ace/post.h"
+
+#endif /* TAO_UB_STRING_ARGUMENT_T_H */
+
diff --git a/TAO/tao/UB_String_Arguments.cpp b/TAO/tao/UB_String_Arguments.cpp
new file mode 100644
index 00000000000..f112e2e243a
--- /dev/null
+++ b/TAO/tao/UB_String_Arguments.cpp
@@ -0,0 +1,27 @@
+// $Id$
+
+#include "tao/Special_Basic_Arguments.h"
+
+ACE_RCSID (tao,
+ Special_Basic_Arguments,
+ "$Id$")
+
+#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>;
+
+#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_out>
+# pragma instantiate TAO::UB_String_Arg_Traits_T<CORBA::WChar, \
+ 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
new file mode 100644
index 00000000000..d3c779e2e1b
--- /dev/null
+++ b/TAO/tao/UB_String_Arguments.h
@@ -0,0 +1,49 @@
+// This may look like C, but it's really -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file UB_String_Arguments.h
+ *
+ * $Id$
+ *
+ * @authors Jeff Parsons and Carlos O'Ryan
+ */
+//=============================================================================
+
+
+#ifndef TAO_UB_STRING_ARGUMENTS_H
+#define TAO_UB_STRING_ARGUMENTS_H
+
+#include "ace/pre.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "UB_String_Argument_T.h"
+#include "Arg_Traits_T.h"
+
+namespace TAO
+{
+ /**
+ *
+ * @brief Specializations for unbounded (w)strings
+ *
+ */
+
+ template<>
+ class Arg_Traits<ACE_InputCDR::to_string>
+ : public UB_String_Arg_Traits_T<CORBA::Char, CORBA::String_out>
+ {
+ };
+
+ template<>
+ class Arg_Traits<ACE_InputCDR::to_wstring>
+ : public UB_String_Arg_Traits_T<CORBA::WChar, CORBA::WString_out>
+ {
+ };
+};
+
+#include "ace/post.h"
+
+#endif /* TAO_UB_STRING_ARGUMENTS_H */