00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef TAO_GET_ARG_H
00028 #define TAO_GET_ARG_H
00029 
00030 #include  "ace/pre.h"
00031 
00032 #include "tao/operation_details.h"
00033 
00034 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00035 
00036 namespace TAO
00037 {
00038   namespace Portable_Server
00039   {
00040 
00041     template<typename T>
00042     typename TAO::SArg_Traits<T>::ret_arg_type
00043     get_ret_arg (TAO_Operation_Details const * details,
00044                  TAO::Argument * const * skel_args)
00045     {
00046       return
00047         (details != 0 && details->args () != 0)
00048         ? static_cast<typename TAO::Arg_Traits<T>::ret_val *> (
00049             details->args ()[0])->arg ()
00050         : static_cast<typename TAO::SArg_Traits<T>::ret_val *> (
00051             skel_args[0])->arg ();
00052     }
00053 
00054 
00055     template<typename T>
00056     typename TAO::SArg_Traits<T>::in_arg_type
00057     get_in_arg (TAO_Operation_Details const * details,
00058                 TAO::Argument * const * skel_args,
00059                 size_t i)
00060     {
00061       return
00062         (details != 0 && details->args () != 0)
00063         ? static_cast<typename TAO::Arg_Traits<T>::in_arg_val *> (
00064             details->args ()[i])->arg ()
00065         : static_cast<typename TAO::SArg_Traits<T>::in_arg_val *> (
00066             skel_args[i])->arg ();
00067     }
00068 
00069 
00070     template<typename T>
00071     typename TAO::SArg_Traits<T>::inout_arg_type
00072     get_inout_arg (TAO_Operation_Details const * details,
00073                    TAO::Argument * const * skel_args,
00074                    size_t i)
00075     {
00076       return
00077         (details != 0 && details->args () != 0)
00078         ? static_cast<typename TAO::Arg_Traits<T>::inout_arg_val *> (
00079             details->args ()[i])->arg ()
00080         : static_cast<typename TAO::SArg_Traits<T>::inout_arg_val *> (
00081             skel_args[i])->arg ();
00082     }
00083 
00084 
00085     template<typename T>
00086     typename TAO::SArg_Traits<T>::out_arg_type
00087     get_out_arg (TAO_Operation_Details const * details,
00088                  TAO::Argument * const * skel_args,
00089                  size_t i)
00090     {
00091       return
00092         (details != 0 && details->args () != 0)
00093         ? static_cast<typename TAO::Arg_Traits<T>::out_arg_val *> (
00094             details->args ()[i])->arg ()
00095         : static_cast<typename TAO::SArg_Traits<T>::out_arg_val *> (
00096             skel_args[i])->arg ();
00097     }
00098   }
00099 }
00100 
00101 TAO_END_VERSIONED_NAMESPACE_DECL
00102 
00103 #include  "ace/post.h"
00104 
00105 #endif