diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-03-08 20:35:50 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-03-08 20:35:50 +0000 |
commit | 70117f603590df76a7550b650eab4d7365e970d5 (patch) | |
tree | 7b3eca7d28bc46143ff72e6978211f96960bae51 /TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp | |
parent | 3f53b85237e77572c7b571a9657331ad5a7ec0ad (diff) | |
download | ATCD-70117f603590df76a7550b650eab4d7365e970d5.tar.gz |
ChangeLogTag:Tue Mar 08 12:26:03 2005 Ossama Othman <ossama@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp | 99 |
1 files changed, 50 insertions, 49 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp index c0814f8b858..f94ff7d2ffc 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp @@ -153,12 +153,28 @@ be_visitor_operation_upcall_command_ss::visit (be_operation * node, if (be_global->gen_thru_poa_collocation ()) { - os << "get_ret_arg< "; + os << "TAO::Portable_Server::get_ret_arg< "; this->gen_arg_template_param_name (node, node->return_type (), &os); + // ------ + // Because of MSVC++ 6's lack of template typedef support, + // explicitly specify the return value type for the argument + // selection function template. + /** + * @todo Remove this code once we drop support for MSVC++ 6, + * and update tao/PortableServer/get_arg.h" + * accordingly. + */ + os << ", TAO::SArg_Traits< "; + this->gen_arg_template_param_name (node, + node->return_type (), + &os); + os << ">::ret_arg_type"; + // ------ + os << "> (" << be_idt_nl << "this->operation_details_," << be_nl << "this->args_);" << be_uidt; @@ -253,7 +269,7 @@ be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) if (be_global->gen_thru_poa_collocation ()) { - os << "get_"; + os << "TAO::Portable_Server::get_"; switch (arg->direction ()) { @@ -275,6 +291,38 @@ be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) arg->field_type (), &os); + // ------ + // Because of MSVC++ 6's lack of template typedef support, + // explicitly specify the return value type for the argument + // selection function template. + /** + * @todo Remove this code once we drop support for MSVC++ 6, + * and update tao/PortableServer/get_arg.h" + * accordingly. + */ + os << ", TAO::SArg_Traits< "; + this->gen_arg_template_param_name (arg, + arg->field_type (), + &os); + os << ">::"; + + switch (arg->direction ()) + { + case AST_Argument::dir_IN: + os << "in"; + break; + case AST_Argument::dir_INOUT: + os << "inout"; + break; + case AST_Argument::dir_OUT: + os << "out"; + default: + break; + } + + os << "_arg_type"; + // ------ + os << "> (" << be_idt_nl << "this->operation_details_," << be_nl << "this->args_," << be_nl @@ -312,8 +360,6 @@ be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) } - - if (!node->void_return_type ()) { os << be_nl @@ -333,50 +379,5 @@ be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node) else os << "ACE_ENV_SINGLE_ARG_PARAMETER);" << be_uidt_nl; -// UTL_ScopeActiveIterator si (node, -// UTL_Scope::IK_decls); - -// if (si.is_done ()) -// { -// os << be_nl -// << "ACE_ENV_SINGLE_ARG_PARAMETER" << be_uidt_nl -// << ");"; - -// return 0; -// } - -// int index = 1; - -// for (; !si.is_done (); si.next (), ++index) -// { -// AST_Argument * const arg = -// AST_Argument::narrow_from_decl (si.item ()); - -// os << (index == 1 ? "" : ",") << be_nl -// << "static_cast<TAO::SArg_Traits< "; - -// this->gen_arg_template_param_name (arg, -// arg->field_type (), -// &os); - -// os << ">::"; - -// switch (arg->direction ()) -// { -// case AST_Argument::dir_IN: -// os << "in"; -// break; -// case AST_Argument::dir_INOUT: -// os << "inout"; -// break; -// case AST_Argument::dir_OUT: -// os << "out"; -// default: -// break; -// } - -// os << "_arg_val *> (this->args_[" << index << "])->arg ()"; -// } - return 0; } |