summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp39
1 files changed, 15 insertions, 24 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp
index 9896c17f4f9..1dec0439f88 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/request_info_arglist.cpp
@@ -48,6 +48,7 @@ int be_visitor_args_request_info_arglist::visit_argument (be_argument *node)
// retrieve the type
be_type *bt = be_type::narrow_from_decl (node->field_type ());
+
if (!bt)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -302,35 +303,25 @@ int be_visitor_args_request_info_arglist::visit_string (be_string *node)
{
TAO_OutStream *os = this->ctx_->stream ();
- if (node->width () == (long) sizeof (char))
+ switch (this->direction ())
{
- switch (this->direction ())
+ case AST_Argument::dir_IN:
+ *os << "const " << this->type_name (node);
+ break;
+ case AST_Argument::dir_INOUT:
+ *os << this->type_name (node) << "&";
+ break;
+ case AST_Argument::dir_OUT:
+ if (node->width () == (long) sizeof (char))
{
- case AST_Argument::dir_IN:
- *os << "const char *";
- break;
- case AST_Argument::dir_INOUT:
- *os << "char *&";
- break;
- case AST_Argument::dir_OUT:
- *os << "CORBA::String_out";
- break;
+ *os << "CORBA::String_out ";
}
- }
- else
- {
- switch (this->direction ())
+ else
{
- case AST_Argument::dir_IN:
- *os << "const CORBA::WChar *";
- break;
- case AST_Argument::dir_INOUT:
- *os << "CORBA::WChar *&";
- break;
- case AST_Argument::dir_OUT:
- *os << "CORBA::WString_out";
- break;
+ *os << "CORBA::WString_out ";
}
+
+ break;
}
return 0;