diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-12-10 04:37:42 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-12-10 04:37:42 +0000 |
commit | 08ac68472120bfd66f7b8a6ddf0ec528dccdf7f3 (patch) | |
tree | d7e3b47962784373ea84687c33e5f74bd4174b02 /TAO/TAO_IDL/be/be_visitor_argument | |
parent | 71d124fcdbf197488b46dcf2225da328bca84202 (diff) | |
download | ATCD-08ac68472120bfd66f7b8a6ddf0ec528dccdf7f3.tar.gz |
ChangeLogTag: Mon Dec 9 22:25:06 2002 Jeff Parsons <j.parsons@vanderbilt.edu>
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_argument')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp | 66 |
1 files changed, 37 insertions, 29 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp index 20e17732581..19f25a8da6a 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp @@ -291,59 +291,67 @@ int be_visitor_args_vardecl_ss::visit_predefined_type (be_predefined_type *node) if (pt == AST_PredefinedType::PT_any) { + *os << bt->name (); + switch (this->direction ()) { case AST_Argument::dir_IN: case AST_Argument::dir_INOUT: - *os << bt->name () << " " << arg->local_name () << ";"; - + *os << " "; break; case AST_Argument::dir_OUT: - *os << bt->name () << "_var " - << arg->local_name () << ";"; - + *os << "_var "; break; } + + *os << arg->local_name () << ";"; } else if (pt == AST_PredefinedType::PT_pseudo || pt == AST_PredefinedType::PT_object) { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << bt->name () << "_var " << arg->local_name () - << ";"; - break; - case AST_Argument::dir_OUT: - *os << bt->name () << "_var " - << arg->local_name () << ";"; - - break; - } + *os << bt->name () << "_var " << arg->local_name () << ";"; } else { + *os << bt->name () << " " << arg->local_name (); + switch (this->direction ()) { case AST_Argument::dir_IN: + break; + + // @@@ (JP) This is a hack for VC7, which gets an internal + // compiler error if these not initialized. + // (02-12-09) case AST_Argument::dir_INOUT: case AST_Argument::dir_OUT: - *os << bt->name () << " " << arg->local_name (); - - // @@@ (JP) This is a hack for VC7, which gets an internal - // compiler error if a boolean OUT is not initialized. - // (02-08-13) - if (this->direction () == AST_Argument::dir_OUT - && pt == AST_PredefinedType::PT_boolean) - { - *os << " = 0"; + switch (pt) + { + case AST_PredefinedType::PT_boolean: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ushort: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_float: + case AST_PredefinedType::PT_double: + case AST_PredefinedType::PT_octet: + *os << " = 0"; + break; + case AST_PredefinedType::PT_longlong: + *os << " = ACE_CDR_LONGLONG_INITIALIZER"; + break; + case AST_PredefinedType::PT_longdouble: + *os << " = ACE_CDR_LONG_DOUBLE_INITIALIZER"; + break; + default: + break; } - *os << ";"; - break; } + + *os << ";"; } return 0; |