Go to the documentation of this file.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/PortableServer/SArg_Traits_T.h"
00033 #include "tao/operation_details.h"
00034
00035 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00036
00037 namespace TAO
00038 {
00039 namespace Portable_Server
00040 {
00041
00042 template<typename T>
00043 typename TAO::SArg_Traits<T>::ret_arg_type
00044 get_ret_arg (TAO_Operation_Details const * details,
00045 TAO::Argument * const * skel_args)
00046 {
00047 return
00048 (details != 0 && details->use_stub_args ())
00049 ? static_cast<typename TAO::Arg_Traits<T>::ret_val *> (
00050 details->args ()[0])->arg ()
00051 : static_cast<typename TAO::SArg_Traits<T>::ret_val *> (
00052 skel_args[0])->arg ();
00053 }
00054
00055
00056 template<typename T>
00057 typename TAO::SArg_Traits<T>::in_arg_type
00058 get_in_arg (TAO_Operation_Details const * details,
00059 TAO::Argument * const * skel_args,
00060 size_t i)
00061 {
00062 return
00063 (details != 0 && details->use_stub_args ())
00064 ? static_cast<typename TAO::Arg_Traits<T>::in_arg_val *> (
00065 details->args ()[i])->arg ()
00066 : static_cast<typename TAO::SArg_Traits<T>::in_arg_val *> (
00067 skel_args[i])->arg ();
00068 }
00069
00070
00071 template<typename T>
00072 typename TAO::SArg_Traits<T>::inout_arg_type
00073 get_inout_arg (TAO_Operation_Details const * details,
00074 TAO::Argument * const * skel_args,
00075 size_t i)
00076 {
00077 return
00078 (details != 0 && details->use_stub_args ())
00079 ? static_cast<typename TAO::Arg_Traits<T>::inout_arg_val *> (
00080 details->args ()[i])->arg ()
00081 : static_cast<typename TAO::SArg_Traits<T>::inout_arg_val *> (
00082 skel_args[i])->arg ();
00083 }
00084
00085
00086 template<typename T>
00087 typename TAO::SArg_Traits<T>::out_arg_type
00088 get_out_arg (TAO_Operation_Details const * details,
00089 TAO::Argument * const * skel_args,
00090 size_t i)
00091 {
00092 return
00093 (details != 0 && details->use_stub_args ())
00094 ? static_cast<typename TAO::Arg_Traits<T>::out_arg_val *> (
00095 details->args ()[i])->arg ()
00096 : static_cast<typename TAO::SArg_Traits<T>::out_arg_val *> (
00097 skel_args[i])->arg ();
00098 }
00099 }
00100 }
00101
00102 TAO_END_VERSIONED_NAMESPACE_DECL
00103
00104 #include "ace/post.h"
00105
00106 #endif