summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2005-02-17 07:19:44 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2005-02-17 07:19:44 +0000
commitd80f6ec9dd3a7aaeb59294b631982bda2580dc83 (patch)
tree116333094bdf0ff9c51e44742de447909f616f8a
parent98ae19d524d7e7dcba3383a836eb8019efe262a2 (diff)
downloadATCD-d80f6ec9dd3a7aaeb59294b631982bda2580dc83.tar.gz
*** empty log message ***
-rw-r--r--TAO/tao/Argument_T.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/TAO/tao/Argument_T.h b/TAO/tao/Argument_T.h
index 1c388886ec2..9fbdcd42dd1 100644
--- a/TAO/tao/Argument_T.h
+++ b/TAO/tao/Argument_T.h
@@ -28,9 +28,47 @@ namespace TAO
/**
* @class Const_Argument_T
*
- * @brief
+ * @brief Type-specific base class subclassed by stub and skeleton
+ * and argument class templates.
+ *
+ * The purpose of this class is to make it possible to
+ * polymorphically retrieve an argument from either stub or skeleton
+ * argument class template. Both the corresponding stub and
+ * skeleton argument class templates must of course have the same
+ * template parameter type in order for the polymorphism to work.
+ * Use of polymorphism in this manner allows us to avoid having to
+ * convert between client and server side arguments, which can be
+ * tedious, and ultimately allows the server side thru-POA
+ * collocated and uncollocated code paths to share the same single
+ * set of skeleton code.
+ *
+ * This abstract base class requires that subclasses define @c const
+ * @c arg() method for the sake of const-correctness. The template
+ * parameter @c T corresponds to the type of argument passed to an
+ * IDL-defined operation according to the C++ mapping. For example,
+ * given the following IDL:
+ *
+ * @code
+ * typedef sequence<short> ShortSeq;
+ *
+ * interface Foo {
+ * void op (in ShortSeq s);
+ * };
+ * @endcode
+ *
+ * the @c Const_Argument_T template parameter @c T would be:
+ *
+ * @code
+ * ShortSeq const &
+ * @endcode
+ *
+ * since that would be parameter type for the corresponding C++
+ * @c Foo::op() function.
*
+ * @note This class template is generally only suitable for IDL "in"
+ * parameters since they are read-only.
*
+ * @see Mutable_Argument_T
*/
template <typename T>
class Const_Argument_T : public Argument