summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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