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