summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2005-03-08 20:35:50 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2005-03-08 20:35:50 +0000
commit70117f603590df76a7550b650eab4d7365e970d5 (patch)
tree7b3eca7d28bc46143ff72e6978211f96960bae51 /TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp
parent3f53b85237e77572c7b571a9657331ad5a7ec0ad (diff)
downloadATCD-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.cpp99
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;
}