Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

# get_arg.h File Reference

`#include "tao/operation_details.h"`

Include dependency graph for get_arg.h:

This graph shows which files directly or indirectly include this file:

## Namespaces
namespace | TAO
namespace | TAO::Portable_Server
## Functions
template<typename T, typename RET_ARG_TYPE>
RET_ARG_TYPE | get_ret_arg (TAO_Operation_Details const *details, TAO::Argument *const *skel_args)
| Get return value/argument.
template<typename T, typename IN_ARG_TYPE>
IN_ARG_TYPE | get_in_arg (TAO_Operation_Details const *details, TAO::Argument *const *skel_args, size_t i)
| Get "in" argument.
template<typename T, typename INOUT_ARG_TYPE>
INOUT_ARG_TYPE | get_inout_arg (TAO_Operation_Details const *details, TAO::Argument *const *skel_args, size_t i)
| Get "inout" argument.
template<typename T, typename OUT_ARG_TYPE>
OUT_ARG_TYPE | get_out_arg (TAO_Operation_Details const *details, TAO::Argument *const *skel_args, size_t i)
| Get "out" argument.

## Detailed Description

Id
  get_arg.h,v 1.3 2005/11/04 09:26:56 ossama Exp

Thru-POA/skeleton argument selection function templates.

  These function templates are used to choose between arguments supplied in thru-POA collocated invocations and arguments in uncollocated invocations.

Note:
  A function template approach is used to avoid complicated argument conversions between stub supplied arguments and skeleton supplied ones. For example, it is possible to make argument selection more transparent by taking advantage of run-time polymorphism. However, that approach would incur additional footprint overhead on the client side due to the introduction of virtual tables, etc.

Author:
  Ossama Othman

## Function Documentation

template<typename T, typename IN_ARG_TYPE>
IN_ARG_TYPE get_in_arg | ( | TAO_Operation_Details const * | details,
|  | TAO::Argument *const * | skel_args,
|  | size_t | i
| ) |

| Get "in" argument. See also: `get_ret_arg` note to understand why we currently use a second template parameter. Todo: Drop second template parameter, and replace " @c IN_ARG_TYPE " return type with " @c typename TAO::SArg_Traits<T>::in_arg_type ".

template<typename T, typename INOUT_ARG_TYPE>
INOUT_ARG_TYPE get_inout_arg | ( | TAO_Operation_Details const * | details,
|  | TAO::Argument *const * | skel_args,
|  | size_t | i
| ) |

| Get "inout" argument. See also: `get_ret_arg` note to understand why we currently use a second template parameter. Todo: Drop second template parameter, and replace " @c INOUT_ARG_TYPE " return type with " @c typename TAO::SArg_Traits<T>::inout_arg_type ".

template<typename T, typename OUT_ARG_TYPE>
OUT_ARG_TYPE get_out_arg | ( | TAO_Operation_Details const * | details,
|  | TAO::Argument *const * | skel_args,
|  | size_t | i
| ) |

| Get "out" argument. See also: `get_ret_arg` note to understand why we currently use a second template parameter. Todo: Drop second template parameter, and replace " @c OUT_ARG_TYPE " return type with " @c typename TAO::SArg_Traits<T>::out_arg_type ".

template<typename T, typename RET_ARG_TYPE>
RET_ARG_TYPE get_ret_arg | ( | TAO_Operation_Details const * | details,
|  | TAO::Argument *const * | skel_args
| ) |

| Get return value/argument. Note: It is possible to determine the return argument type using typedef traits found in the TAO::SArg_Traits<> template. However, MSVC++ 6 does not support them properly. Until we drop MSVC++ 6 support, we'll have to pass the return argument type in an additional template parameter. Todo: Drop second template parameter, and replace " @c RET_ARG_TYPE " return type with " @c typename TAO::SArg_Traits<T>::ret_arg_type ".