diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-02-17 07:19:44 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-02-17 07:19:44 +0000 |
commit | d80f6ec9dd3a7aaeb59294b631982bda2580dc83 (patch) | |
tree | 116333094bdf0ff9c51e44742de447909f616f8a | |
parent | 98ae19d524d7e7dcba3383a836eb8019efe262a2 (diff) | |
download | ATCD-d80f6ec9dd3a7aaeb59294b631982bda2580dc83.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/tao/Argument_T.h | 40 |
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 |