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->use_stub_args ())
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->use_stub_args ())
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->use_stub_args ())
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->use_stub_args ())
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