diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:11 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:11 +0000 |
commit | 6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (patch) | |
tree | da50d054f9c761c3f6a5923f6979e93306c56d68 /TAO/TAO_IDL/be/be_visitor_argument | |
parent | 0e555b9150d38e3b3473ba325b56db2642e6352b (diff) | |
download | ATCD-6b846cf03c0bcbd8c276cb0af61a181e5f98eaae.tar.gz |
Repo restructuring
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_argument')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp | 455 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/argument.cpp | 98 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/invoke_cs.cpp | 681 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp | 695 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp | 237 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/post_upcall_ss.cpp | 133 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp | 424 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp | 457 |
8 files changed, 0 insertions, 3180 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp deleted file mode 100644 index 97293ddf2a3..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp +++ /dev/null @@ -1,455 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// arglist.cpp -// -// = DESCRIPTION -// Visitor that generates the parameters in an Operation signature -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - arglist, - "$Id$") - - -// ************************************************************ -// be_visitor_args_arglist for parameter list in method declarations and -// definitions -// ************************************************************ - -be_visitor_args_arglist::be_visitor_args_arglist (be_visitor_context *ctx) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_arglist::~be_visitor_args_arglist (void) -{ -} - -int be_visitor_args_arglist::visit_argument (be_argument *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - this->ctx_->node (node); - - // Retrieve the type. - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_arglist::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type. - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_arglist::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - *os << " " << node->local_name (); - return 0; -} - -int be_visitor_args_arglist::visit_array (be_array *node) -{ - TAO_OutStream *os = this->ctx_->stream (); // get output stream - - 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: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_enum (be_enum *node) -{ - TAO_OutStream *os = this->ctx_->stream (); // get output stream - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node); - break; - case AST_Argument::dir_INOUT: - *os << this->type_name (node) << " &"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_interface (be_interface *node) -{ - TAO_OutStream *os = this->ctx_->stream (); // get output stream - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node, "_ptr"); - break; - case AST_Argument::dir_INOUT: // inout - *os << this->type_name (node, "_ptr") << " &"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_interface_fwd (be_interface_fwd *node) -{ - TAO_OutStream *os = this->ctx_->stream (); // get output stream - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node, "_ptr"); - break; - case AST_Argument::dir_INOUT: // inout - *os << this->type_name (node, "_ptr") << " &"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_component (be_component *node) -{ - return this->visit_interface (node); -} - -int be_visitor_args_arglist::visit_component_fwd (be_component_fwd *node) -{ - return this->visit_interface_fwd (node); -} - -int be_visitor_args_arglist::visit_native (be_native *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node); - break; - case AST_Argument::dir_INOUT: - *os << this->type_name (node) << " &"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node) << " &"; - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_predefined_type (be_predefined_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - AST_PredefinedType::PredefinedType pt = node->pt (); - - if (pt == AST_PredefinedType::PT_any) - { - 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: - *os << this->type_name (node, "_out"); - break; - } - } - else if (pt == AST_PredefinedType::PT_value) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node) << " *"; - break; - case AST_Argument::dir_INOUT: - *os << this->type_name (node) << " *&"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - } - else if (pt == AST_PredefinedType::PT_pseudo - || pt == AST_PredefinedType::PT_object) - { - // The only PT_pseudo that doesn't take a _ptr suffix. - bool is_tckind = - (ACE_OS::strcmp (node->local_name ()->get_string (), "TCKind") == 0); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - if (is_tckind) - { - *os << this->type_name (node); - } - else - { - *os << this->type_name (node, "_ptr"); - } - - break; - case AST_Argument::dir_INOUT: - if (is_tckind) - { - *os << this->type_name (node) << " &"; - } - else - { - *os << this->type_name (node, "_ptr") << " &"; - } - - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - } - else - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node); - break; - case AST_Argument::dir_INOUT: - *os << this->type_name (node) << " &"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - } - - return 0; -} - -int be_visitor_args_arglist::visit_sequence (be_sequence *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - 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: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_string (be_string *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - if (node->width () == (long) sizeof (char)) - { - switch (this->direction ()) - { - 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; - } - } - else - { - switch (this->direction ()) - { - 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; - } - } - - return 0; -} - -int be_visitor_args_arglist::visit_structure (be_structure *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - 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: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_union (be_union *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - 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: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_arglist::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} - - -int be_visitor_args_arglist::visit_valuetype (be_valuetype *node) -{ - return this->emit_common (node); -} - -int be_visitor_args_arglist::visit_valuetype_fwd (be_valuetype_fwd *node) -{ - TAO_OutStream *os = this->ctx_->stream (); // get the stream - - 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: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} - -int be_visitor_args_arglist::visit_eventtype (be_eventtype *node) -{ - return this->visit_valuetype (node); -} - -int be_visitor_args_arglist::visit_eventtype_fwd (be_eventtype_fwd *node) -{ - return this->visit_valuetype_fwd (node); -} - -int -be_visitor_args_arglist::visit_home ( - be_home *node - ) -{ - return this->visit_interface (node); -} - -int be_visitor_args_arglist::visit_valuebox (be_valuebox *node) -{ - return this->emit_common (node); -} - - -int be_visitor_args_arglist::emit_common (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << this->type_name (node) << " *"; - break; - case AST_Argument::dir_INOUT: - *os << this->type_name (node) << " *&"; - break; - case AST_Argument::dir_OUT: - *os << this->type_name (node, "_out"); - break; - } - - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/argument.cpp b/TAO/TAO_IDL/be/be_visitor_argument/argument.cpp deleted file mode 100644 index 7cabfbea573..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/argument.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// argument.cpp -// -// = DESCRIPTION -// generic visitor for Argument node -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - argument, - "$Id$") - -be_visitor_args::be_visitor_args (be_visitor_context *ctx) - : be_visitor_decl (ctx), - fixed_direction_ (-1) -{ -} - -be_visitor_args::~be_visitor_args (void) -{ -} - -int be_visitor_args::visit_argument (be_argument *) -{ - return -1; -} - -// helper that returns the type name either as a nested type name (for header -// files) or as a fully scoped name. In addition, we make sure that if the type -// is an alias, we use that name -const char * -be_visitor_args::type_name (be_type *node, - const char *suffix) -{ - static char namebuf [NAMEBUFSIZE]; - ACE_OS::memset (namebuf, - '\0', - NAMEBUFSIZE); - - be_type *bt; - - // Use the typedefed name if that is the one used in the IDL defn. - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - ACE_OS::sprintf (namebuf, - "::%s", - bt->full_name ()); - - if (suffix) - { - ACE_OS::strcat (namebuf, - suffix); - } - - return namebuf; -} - -// helper that returns the direction type of the argument -AST_Argument::Direction -be_visitor_args::direction (void) -{ - if (this->fixed_direction_ != -1) - { - return AST_Argument::Direction (this->fixed_direction_); - } - - // grab the argument node. We know that our context has stored the right - // argument node - be_argument *arg = this->ctx_->be_node_as_argument (); - - ACE_ASSERT (arg != 0); - return arg->direction (); -} - -void -be_visitor_args::set_fixed_direction (AST_Argument::Direction direction) -{ - this->fixed_direction_ = direction; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/invoke_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/invoke_cs.cpp deleted file mode 100644 index 4001e6417e9..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/invoke_cs.cpp +++ /dev/null @@ -1,681 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// invoke_cs.cpp -// -// = DESCRIPTION -// Visitor generating the code that passes arguments to the CDR operators -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - invoke_cs, - "$Id$") - - -// **************************************************************************** -// visitor for arguments passing to the CDR operators. -// **************************************************************************** - -be_visitor_args_invoke_cs:: -be_visitor_args_invoke_cs (be_visitor_context *ctx) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_invoke_cs:: -~be_visitor_args_invoke_cs (void) -{ -} - -int be_visitor_args_invoke_cs::visit_argument (be_argument *node) -{ - this->ctx_->node (node); // save the argument node - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type - - TAO_OutStream *os = this->ctx_->stream (); // get output stream - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << "(_tao_out << "; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << "(_tao_in >> "; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_argument - " - "Bad substate\n"), - -1); - } - - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << ")"; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << ")"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_argument - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_array (be_array *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << node->name () << "_forany (" - << "(" << node->name () << "_slice *)" - << arg->local_name () << ")"; - break; - case AST_Argument::dir_INOUT: - *os << node->name () << "_forany (" - << arg->local_name () << ")"; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << "_tao_argument_" << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_array - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_enum (be_enum *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_enum - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_interface (be_interface *) -{ - return this->emit_common (); -} - -int be_visitor_args_invoke_cs::visit_interface_fwd (be_interface_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_invoke_cs::visit_valuebox (be_valuebox *) -{ - return this->emit_common (); -} - -int be_visitor_args_invoke_cs::visit_valuetype (be_valuetype *) -{ - return this->emit_common (); -} - -int -be_visitor_args_invoke_cs::visit_valuetype_fwd (be_valuetype_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_invoke_cs::visit_predefined_type (be_predefined_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - case AST_PredefinedType::PT_any: - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_OutputCDR::from_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_OutputCDR::from_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_OutputCDR::from_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_OutputCDR::from_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_predefined_type - " - "Bad predefined type\n"), - -1); - } - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - case AST_PredefinedType::PT_any: - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_InputCDR::to_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_InputCDR::to_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_InputCDR::to_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_InputCDR::to_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_operation_rettype_compiled_marshal_cs::" - "visit_array - " - "Bad predefined type\n"), - -1); - } - break; - case AST_Argument::dir_OUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - *os << arg->local_name () << ".ptr ()"; - break; - case AST_PredefinedType::PT_any: - *os << "*" << arg->local_name () << ".ptr ()"; - break; - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_InputCDR::to_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_InputCDR::to_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_InputCDR::to_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_InputCDR::to_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_array - " - "Bad predefined type\n"), - -1); - } - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_array - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_sequence (be_sequence *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - *os << "*" << arg->local_name () << ".ptr ()"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_interface - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_string (be_string *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - // We need to make a distinction between bounded and unbounded strings. - if (node->max_size ()->ev ()->u.ulval == 0) - { - // Unbounded. - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - *os << arg->local_name () << ".ptr ()"; - break; - } - } - else - { - // Bounded. - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - if (node->width () == (long) sizeof (char)) - { - *os << "::ACE_InputCDR::to_string ("; - } - else - { - *os << "::ACE_InputCDR::to_wstring ("; - } - - *os << arg->local_name () << ", " - << node->max_size ()->ev ()->u.ulval << ")"; - break; - case AST_Argument::dir_OUT: - if (node->width () == (long) sizeof (char)) - { - *os << "::ACE_InputCDR::to_string ("; - } - else - { - *os << "::ACE_InputCDR::to_wstring ("; - } - - *os << arg->local_name () << ".ptr (), " - << node->max_size ()->ev ()->u.ulval << ")"; - break; - } - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_interface - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::visit_structure (be_structure *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_invoke_cs::visit_union (be_union *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_invoke_cs::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} - -int -be_visitor_args_invoke_cs::visit_component ( - be_component *node - ) -{ - return this->visit_interface (node); -} - -int -be_visitor_args_invoke_cs::visit_component_fwd ( - be_component_fwd *node - ) -{ - return this->visit_interface_fwd (node); -} - -int -be_visitor_args_invoke_cs::visit_eventtype ( - be_eventtype *node - ) -{ - return this->visit_valuetype (node); -} - -int -be_visitor_args_invoke_cs::visit_eventtype_fwd ( - be_eventtype_fwd *node - ) -{ - return this->visit_valuetype_fwd (node); -} - -int -be_visitor_args_invoke_cs::visit_home ( - be_home *node - ) -{ - return this->visit_interface (node); -} - - -int be_visitor_args_invoke_cs::emit_common (void) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - *os << arg->local_name () << ".ptr ()"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "emit_common - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_invoke_cs::emit_common2 (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - if (node->size_type () == AST_Type::VARIABLE) - *os << "*" << arg->local_name () << ".ptr ()"; - else - *os << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_invoke_cs::" - "emit_common2 - " - "Bad substate\n"), - -1); - } - - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp deleted file mode 100644 index 39ea6f27f8c..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/marshal_ss.cpp +++ /dev/null @@ -1,695 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// marshal_ss.cpp -// -// = DESCRIPTION -// Visitor that generates code that passes the argument variable to the -// marshal operations. -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - marshal_ss, - "$Id$") - - -// ************************************************************************ -// Visitor to generate code for passing argument to the marshal/demarshal -// routines -// ************************************************************************ - -be_visitor_args_marshal_ss:: -be_visitor_args_marshal_ss (be_visitor_context *ctx) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_marshal_ss:: -~be_visitor_args_marshal_ss (void) -{ -} - -int be_visitor_args_marshal_ss::visit_argument (be_argument *node) -{ - this->ctx_->node (node); - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type - - TAO_OutStream *os = this->ctx_->stream (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << be_nl << "(_tao_in >> "; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << be_nl << "(_tao_out << "; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_argument - " - "Bad substate\n"), - -1); - } - - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << ")"; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << ")"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_argument - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_array (be_array *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - *os << "_tao_forany_" << arg->local_name (); - break; - case AST_Argument::dir_INOUT: - *os << "_tao_forany_" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << "_tao_forany_" << arg->local_name (); - break; - case AST_Argument::dir_OUT: - *os << "_tao_forany_" << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_array - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_enum (be_enum *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_enum - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_interface (be_interface *) -{ - return this->emit_common (); -} - -int be_visitor_args_marshal_ss::visit_interface_fwd (be_interface_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_marshal_ss::visit_valuebox (be_valuebox *) -{ - return this->emit_common (); -} - -int be_visitor_args_marshal_ss::visit_valuetype (be_valuetype *) -{ - return this->emit_common (); -} - -int be_visitor_args_marshal_ss::visit_valuetype_fwd (be_valuetype_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_marshal_ss::visit_predefined_type ( - be_predefined_type *node - ) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - *os << arg->local_name () << ".out ()"; - break; - case AST_PredefinedType::PT_any: - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_InputCDR::to_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_InputCDR::to_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_InputCDR::to_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_InputCDR::to_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_predefined_type - " - "Bad predefined type\n"), - -1); - } - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - *os << arg->local_name () << ".in ()"; - break; - case AST_PredefinedType::PT_any: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_OutputCDR::from_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_OutputCDR::from_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_OutputCDR::from_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_OutputCDR::from_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_operation_rettype_compiled_marshal_ss::" - "visit_array - " - "Bad predefined type\n"), - -1); - } - break; - case AST_Argument::dir_OUT: - switch (node->pt ()) - { - case AST_PredefinedType::PT_pseudo: - case AST_PredefinedType::PT_object: - *os << arg->local_name () << ".in ()"; - break; - case AST_PredefinedType::PT_any: - *os << arg->local_name () << ".in ()"; - break; - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_ushort: - case AST_PredefinedType::PT_float: - case AST_PredefinedType::PT_double: - case AST_PredefinedType::PT_longdouble: - *os << arg->local_name (); - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_OutputCDR::from_char (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_OutputCDR::from_wchar (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_boolean: - *os << "::ACE_OutputCDR::from_boolean (" << arg->local_name () << ")"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_OutputCDR::from_octet (" << arg->local_name () << ")"; - break; - default: - ACE_ERROR_RETURN (( - LM_ERROR, - "be_visitor_operation_rettype_compiled_marshal_ss::" - "visit_array - " - "Bad predefined type\n" - ), - -1 - ); - } - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_array - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_sequence (be_sequence *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - *os << arg->local_name () << ".in ()"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_interface - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_string (be_string *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - // we need to make a distinction between bounded and unbounded strings - if (node->max_size ()->ev ()->u.ulval == 0) - { - *os << arg->local_name () << ".out ()"; - } - else - { - if (node->width () == (long) sizeof (char)) - { - *os << "::ACE_InputCDR::to_string ("; - } - else - { - *os << "::ACE_InputCDR::to_wstring ("; - } - - *os << arg->local_name () << ".out (), " - << node->max_size ()->ev ()->u.ulval - << ")"; - } - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - // we need to make a distinction between bounded and unbounded strings - if (node->max_size ()->ev ()->u.ulval == 0) - { - // unbounded - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name () << ".in ()"; - break; - } - } - else - { - // bounded - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - if (node->width () == (long) sizeof (char)) - { - *os << "::ACE_OutputCDR::from_string ((char *)"; - } - else - { - *os << "::ACE_OutputCDR::from_wstring ((CORBA::WChar *)"; - } - - *os << arg->local_name () << ".in (), " - << node->max_size ()->ev ()->u.ulval << ")"; - break; - } - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_string - " - "Bad substate\n"), - -1); - } - - return 0; -} - -int be_visitor_args_marshal_ss::visit_structure (be_structure *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_marshal_ss::visit_union (be_union *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_marshal_ss::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} - -int -be_visitor_args_marshal_ss::visit_component ( - be_component *node - ) -{ - return this->visit_interface (node); -} - -int -be_visitor_args_marshal_ss::visit_component_fwd ( - be_component_fwd *node - ) -{ - return this->visit_interface_fwd (node); -} - -int -be_visitor_args_marshal_ss::visit_eventtype ( - be_eventtype *node - ) -{ - return this->visit_valuetype (node); -} - -int -be_visitor_args_marshal_ss::visit_eventtype_fwd ( - be_eventtype_fwd *node - ) -{ - return this->visit_valuetype_fwd (node); -} - -int -be_visitor_args_marshal_ss::visit_home ( - be_home *node - ) -{ - return this->visit_interface (node); -} - -int -be_visitor_args_marshal_ss::emit_common () -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name () << ".out ()"; - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name () << ".in ()"; - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::emit_common - " - "Bad substate\n"), - -1); - } - - return 0; -} - - -int -be_visitor_args_marshal_ss::emit_common2 (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - break; - } - } - else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - break; - case AST_Argument::dir_OUT: - if (node->size_type () == AST_Type::VARIABLE) - *os << arg->local_name () << ".in ()"; - else - *os << arg->local_name (); - break; - } - } - else - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_marshal_ss::emit_common2 - " - "Bad substate\n"), - -1); - } - - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp deleted file mode 100644 index e8f10292638..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp +++ /dev/null @@ -1,237 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// paramlist.cpp -// -// = DESCRIPTION -// Visitor that generates the Dyanmic::ParameterList -// -// = AUTHOR -// Kirthika Parameswaran <kirthika@cs.wustl.edu> -// Ossama Othman <ossama@uci.edu> -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - paramlist, - "$Id$") - - -// ************************************************************ -// be_visitor_args_paramlist for parameter list in method declarations and -// definitions -// ************************************************************ - -be_visitor_args_paramlist::be_visitor_args_paramlist (be_visitor_context *ctx) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_paramlist::~be_visitor_args_paramlist (void) -{ -} - -int be_visitor_args_paramlist::visit_argument (be_argument *node) -{ - // Get output stream. - TAO_OutStream *os = this->ctx_->stream (); - - // Save the argument node. - this->ctx_->node (node); - - // We do not put "out" arguments into the arglist. - if (this->direction () == AST_Argument::dir_OUT) - { - return 0; - } - - // Retrieve the type. - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - // If node is typedef'd, we must strip it off. - if (bt->node_type () == AST_Decl::NT_typedef) - { - be_typedef *td = be_typedef::narrow_from_decl (bt); - bt = td->primitive_base_type (); - } - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_arglist::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - // Generate valuetype check: this hack is needed as there is no - // available way to check for valuetype type. - // Any operators for valuetypes arent there so we dont add it to the - // paramlist. - if (bt->node_type () == AST_Decl::NT_interface) - { - be_valuetype *vt = be_valuetype::narrow_from_decl (node->field_type ()); - - // @@ NOTE: If this check is removed, and insertion operators - // for valuetypes are implemented, don't forget to also - // remove the same valuetype check in - // be_visitor_operation::count_non_out_parameters(). - - // If it is a valuetype just return. - if (vt) - { - return 0; - } - } - - // Amazed by the zillion os operators below? Its just to combat - // side effects functions like type_name() have on the os stream. - // This was causing a problem with the stubs not been generated accurately - // on Linux using egcs. - if (bt->node_type () == AST_Decl::NT_array) - { - *os << this->type_name (bt, "_forany"); - *os << " _tao_forany_" << node->local_name () << " ("; - *os << this->type_name (bt, "_dup"); - *os << " ("; - - if (this->direction () != AST_Argument::dir_IN) - { - *os << "(const ::" << bt->name () << "_slice *) "; - } - - *os << "this->"; - *os << node->local_name () << "_));" << be_nl; - *os << "(*parameter_list)[len].argument <<= _tao_forany_" ; - *os << node->local_name () << ";" << be_nl; - } - else - { - *os << "(*parameter_list)[len].argument <<= "; - // Insertion into an Any has some special cases which need to be - // dealt with. - - switch (bt->node_type ()) - { - case AST_Decl::NT_pre_defined: - case AST_Decl::NT_string: - case AST_Decl::NT_wstring: - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_paramlist::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - break; - - default: - *os << " this->" << node->local_name () << "_;"; - - } - } - - *os << be_nl; - - // Set the appropriate mode for each parameter. - switch (node->direction ()) - { - case AST_Argument::dir_IN: - *os << "(*parameter_list)[len].mode = ::CORBA::PARAM_IN;" << be_nl; - break; - case AST_Argument::dir_INOUT: - *os << "(*parameter_list)[len].mode = ::CORBA::PARAM_INOUT;" << be_nl; - break; - case AST_Argument::dir_OUT: - *os << "(*parameter_list)[len].mode = ::CORBA::PARAM_OUT;" << be_nl; - break; - default: - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_args_paramlist::" - "visit_argument - " - "Bad context\n"), - -1); - } - - *os << "len++;" << be_nl; - - - return 0; -} - -int -be_visitor_args_paramlist::visit_string (be_string *node) -{ - // Get output stream. - TAO_OutStream *os = this->ctx_->stream (); - - // Get the argument. - be_argument *arg = this->ctx_->be_node_as_argument (); - - // We need to make a distinction between bounded and unbounded strings. - if (node->max_size ()->ev ()->u.ulval != 0) - { - // Bounded strings. - if (node->width () == (long) sizeof (char)) - { - *os << "::ACE_OutputCDR::from_string ((char *)"; - } - else - { - *os << "::ACE_OutputCDR::from_wstring ((CORBA::WChar *)"; - } - - *os << arg->local_name () << "_, " - << node->max_size ()->ev ()->u.ulval - << ");"; - } - else - { - *os << arg->local_name () <<"_;"; - } - - return 0; -} - -int -be_visitor_args_paramlist::visit_predefined_type (be_predefined_type *node) -{ - // Get output stream. - TAO_OutStream *os = this->ctx_->stream (); - - // Get the argument. - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (node->pt ()) - { - case AST_PredefinedType::PT_boolean: - *os << "::ACE_OutputCDR::from_boolean (this->"; - *os << arg->local_name () << "_);"; - break; - case AST_PredefinedType::PT_char: - *os << "::ACE_OutputCDR::from_char (this->"; - *os << arg->local_name () << "_);"; - break; - case AST_PredefinedType::PT_wchar: - *os << "::ACE_OutputCDR::from_wchar (this->"; - *os << arg->local_name () << "_);"; - break; - case AST_PredefinedType::PT_octet: - *os << "::ACE_OutputCDR::from_octet (this->"; - *os << arg->local_name () << "_);"; - break; - default: - *os << arg->local_name () << "_;"; - break; - } - - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/post_upcall_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/post_upcall_ss.cpp deleted file mode 100644 index 41c9e5b9d10..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/post_upcall_ss.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// post_upcall_ss.cpp -// -// = DESCRIPTION -// Visitor generating code to do post-processing of arguments following an -// upcall. -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - post_upcall_ss, - "$Id$") - -// ************************************************************************ -// visitor for doing any post-processing after the upcall is made -// ************************************************************************ - -be_visitor_args_post_upcall_ss::be_visitor_args_post_upcall_ss ( - be_visitor_context *ctx - ) - : be_visitor_scope (ctx) -{ -} - -be_visitor_args_post_upcall_ss::~be_visitor_args_post_upcall_ss (void) -{ -} - -int -be_visitor_args_post_upcall_ss::visit_operation (be_operation *node) -{ - return this->visit_scope (node); -} - -int be_visitor_args_post_upcall_ss::visit_argument (be_argument *node) -{ - this->ctx_->node (node); // save the argument node - - // retrieve the type - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_post_upcall::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type - - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_post_upcall::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - return 0; -} - -int be_visitor_args_post_upcall_ss::visit_array (be_array *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - // if the current type is an alias, use that - be_type *bt = node; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - - switch (arg->direction ()) - { - case AST_Argument::dir_IN: - break; - case AST_Argument::dir_INOUT: - break; - case AST_Argument::dir_OUT: - if (node->size_type () == be_type::VARIABLE) - { - *os << bt->name () << "_forany _tao_forany_" - << arg->local_name () << " (" << be_idt << be_idt_nl - << arg->local_name () << ".inout ()" << be_uidt_nl - << ");\n" << be_uidt; - } - else - { - *os << bt->name () << "_forany _tao_forany_" - << arg->local_name () << " (" << be_idt << be_idt_nl - << arg->local_name () << be_uidt_nl - << ");\n" << be_uidt; - } - - break; - } - return 0; -} - -int be_visitor_args_post_upcall_ss::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_post_upcall::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp deleted file mode 100644 index e5b9a0f45f5..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/upcall_ss.cpp +++ /dev/null @@ -1,424 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// upcall_ss.cpp -// -// = DESCRIPTION -// Visitor that generates code that passes argument variables to the -// upcall. -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - upcall_ss, - "$Id$") - - -// ************************************************************************ -// visitor for passing arguments to the upcall -// ************************************************************************ - -be_visitor_args_upcall_ss::be_visitor_args_upcall_ss (be_visitor_context *ctx) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_upcall_ss::~be_visitor_args_upcall_ss (void) -{ -} - -int be_visitor_args_upcall_ss::visit_argument (be_argument *node) -{ - this->ctx_->node (node); - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_upcall_ss::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl; - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_upcall_ss::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - return 0; -} - -int be_visitor_args_upcall_ss::visit_array (be_array *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - // This is to placate some compilers which have - // trouble with IN args that are multidimensional arrays. - if (node->n_dims () > 1) - { - *os << "(const ::" << node->name () << "_slice *) "; - } - - *os << arg->local_name (); - - break; - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - - break; - case AST_Argument::dir_OUT: - if (node->size_type () == AST_Type::VARIABLE) - { - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - } - else - { - *os << arg->local_name (); - } - - break; - } - - return 0; -} - -int be_visitor_args_upcall_ss::visit_enum (be_enum *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name (); - - break; - } - - return 0; -} - -int be_visitor_args_upcall_ss::visit_interface (be_interface *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_interface_fwd (be_interface_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_valuebox (be_valuebox *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_valuetype (be_valuetype *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_valuetype_fwd (be_valuetype_fwd *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_predefined_type (be_predefined_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - AST_PredefinedType::PredefinedType pt = node->pt (); - - if (pt == AST_PredefinedType::PT_any) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - - break; - case AST_Argument::dir_OUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - - break; - } - } - else if (pt == AST_PredefinedType::PT_pseudo - || pt == AST_PredefinedType::PT_object) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".in ()"; - } - - break; - case AST_Argument::dir_INOUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".inout ()"; - } - - break; - case AST_Argument::dir_OUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - - break; - } - } - else - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << arg->local_name (); - - break; - } // end switch direction - } // end of else - - return 0; -} - -int be_visitor_args_upcall_ss::visit_sequence (be_sequence *) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - - break; - case AST_Argument::dir_OUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - - break; - } - - return 0; -} - -int be_visitor_args_upcall_ss::visit_string (be_string *) -{ - return this->emit_common (); -} - -int be_visitor_args_upcall_ss::visit_structure (be_structure *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_upcall_ss::visit_union (be_union *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_upcall_ss::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_upcall_ss::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} - -int -be_visitor_args_upcall_ss::visit_component ( - be_component *node - ) -{ - return this->visit_interface (node); -} - -int -be_visitor_args_upcall_ss::visit_component_fwd ( - be_component_fwd *node - ) -{ - return this->visit_interface_fwd (node); -} - -int -be_visitor_args_upcall_ss::visit_eventtype ( - be_eventtype *node - ) -{ - return this->visit_valuetype (node); -} - -int -be_visitor_args_upcall_ss::visit_eventtype_fwd ( - be_eventtype_fwd *node - ) -{ - return this->visit_valuetype_fwd (node); -} - -int be_visitor_args_upcall_ss::emit_common (void) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".in ()"; - } - - break; - case AST_Argument::dir_INOUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".inout ()"; - } - - break; - case AST_Argument::dir_OUT: - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - - break; - } - - return 0; -} - -int be_visitor_args_upcall_ss::emit_common2 (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << arg->local_name (); - - break; - case AST_Argument::dir_OUT: - if (node->size_type () == AST_Type::VARIABLE) - { - if (this->ctx_->state () - == TAO_CodeGen::TAO_ARGUMENT_COLLOCATED_UPCALL_SS) - { - *os << arg->local_name (); - } - else - { - *os << arg->local_name () << ".out ()"; - } - } - else - { - *os << arg->local_name (); - } - - break; - } - - return 0; -} diff --git a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp b/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp deleted file mode 100644 index 2736db1b783..00000000000 --- a/TAO/TAO_IDL/be/be_visitor_argument/vardecl_ss.cpp +++ /dev/null @@ -1,457 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// vardecl_ss.cpp -// -// = DESCRIPTION -// Visitor that generates the variable declaration in the skeleton -// corresponding to the Argument node -// -// = AUTHOR -// Aniruddha Gokhale -// -// ============================================================================ - -ACE_RCSID (be_visitor_argument, - vardecl_ss, - "$Id$") - - -// ************************************************************************ -// Visitor to generate code for argument variable declaration -// ************************************************************************ - -be_visitor_args_vardecl_ss::be_visitor_args_vardecl_ss ( - be_visitor_context *ctx - ) - : be_visitor_args (ctx) -{ -} - -be_visitor_args_vardecl_ss::~be_visitor_args_vardecl_ss (void) -{ -} - -int be_visitor_args_vardecl_ss::visit_argument (be_argument *node) -{ - this->ctx_->node (node); - be_type *bt = be_type::narrow_from_decl (node->field_type ()); - - if (!bt) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_vardecl_ss::" - "visit_argument - " - "Bad argument type\n"), - -1); - } - - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl; - - // Different types have different mappings when used as in/out or - // inout parameters. Let this visitor deal with the type - if (bt->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_vardecl_ss::" - "visit_argument - " - "cannot accept visitor\n"), - -1); - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_array (be_array *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << "::" << bt->name () << " " << arg->local_name () << ";" << be_nl - << "::" << bt->name () << "_forany _tao_forany_" - << arg->local_name () << " (" << be_idt << be_idt_nl - << arg->local_name () << be_uidt_nl - << ");" << be_uidt; - - break; - case AST_Argument::dir_OUT: - if (node->size_type () == be_type::VARIABLE) - { - *os << "::" << bt->name () << "_var " << arg->local_name () - << ";"; - } - else - { - *os << bt->name () << " " << arg->local_name () - << ";"; - } - - break; - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_enum (be_enum *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - case AST_Argument::dir_OUT: - *os << "::" << bt->name () << " " << arg->local_name () << ";"; - - break; - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_interface (be_interface *node) -{ - return this->emit_common (node); -} - -int be_visitor_args_vardecl_ss::visit_interface_fwd (be_interface_fwd *node) -{ - return this->emit_common (node); -} - - -int be_visitor_args_vardecl_ss::visit_valuebox (be_valuebox *node) -{ - return this->emit_common (node); -} - -int be_visitor_args_vardecl_ss::visit_valuetype (be_valuetype *node) -{ - return this->emit_common (node); -} - -int be_visitor_args_vardecl_ss::visit_valuetype_fwd (be_valuetype_fwd *node) -{ - return this->emit_common (node); -} - -int be_visitor_args_vardecl_ss::visit_predefined_type (be_predefined_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - AST_PredefinedType::PredefinedType pt = node->pt (); - - *os << "::" << bt->name (); - - if (pt == AST_PredefinedType::PT_any) - { - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << " "; - break; - case AST_Argument::dir_OUT: - *os << "_var "; - break; - } - - *os << arg->local_name () << ";"; - } - else if (pt == AST_PredefinedType::PT_pseudo - || pt == AST_PredefinedType::PT_object) - { - *os << "_var " << arg->local_name () << ";"; - } - else - { - *os << " " << 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: - 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; - } - - break; - } - - *os << ";"; - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_sequence (be_sequence *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << "::" << bt->name () << " " << arg->local_name () << ";"; - - break; - case AST_Argument::dir_OUT: - *os << "::" << bt->name () << "_var " - << arg->local_name () << ";" << be_nl; - - break; - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_string (be_string *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - if (node->width () == (long) sizeof (char)) - { - *os << "::CORBA::String_var " << arg->local_name () << ";"; - } - else - { - *os << "::CORBA::WString_var " << arg->local_name () << ";"; - } - - break; - case AST_Argument::dir_OUT: - if (node->width () == (long )sizeof (char)) - { - *os << "::CORBA::String_var " << arg->local_name () << ";"; - } - else - { - *os << "::CORBA::WString_var " << arg->local_name () << ";"; - } - - break; - } - - return 0; -} - -int be_visitor_args_vardecl_ss::visit_structure (be_structure *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_vardecl_ss::visit_union (be_union *node) -{ - return this->emit_common2 (node); -} - -int be_visitor_args_vardecl_ss::visit_typedef (be_typedef *node) -{ - this->ctx_->alias (node); - - if (node->primitive_base_type ()->accept (this) == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_args_vardecl_ss::" - "visit_typedef - " - "accept on primitive type failed\n"), - -1); - } - - this->ctx_->alias (0); - return 0; -} - -int -be_visitor_args_vardecl_ss::visit_component ( - be_component *node - ) -{ - return this->visit_interface (node); -} - -int -be_visitor_args_vardecl_ss::visit_component_fwd ( - be_component_fwd *node - ) -{ - return this->visit_interface_fwd (node); -} - -int -be_visitor_args_vardecl_ss::visit_eventtype ( - be_eventtype *node - ) -{ - return this->visit_valuetype (node); -} - -int -be_visitor_args_vardecl_ss::visit_eventtype_fwd ( - be_eventtype_fwd *node - ) -{ - return this->visit_valuetype_fwd (node); -} - - -int -be_visitor_args_vardecl_ss::emit_common (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - 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; - } - - return 0; -} - - - -int -be_visitor_args_vardecl_ss::emit_common2 (be_type *node) -{ - TAO_OutStream *os = this->ctx_->stream (); - be_argument *arg = this->ctx_->be_node_as_argument (); - be_type *bt; - - if (this->ctx_->alias ()) - { - bt = this->ctx_->alias (); - } - else - { - bt = node; - } - - switch (this->direction ()) - { - case AST_Argument::dir_IN: - case AST_Argument::dir_INOUT: - *os << "::" << bt->name () << " " << arg->local_name () << ";"; - - break; - case AST_Argument::dir_OUT: - if (node->size_type () == be_type::VARIABLE) - { - *os << "::" << bt->name () << "_var " - << arg->local_name () << ";"; - } - else - { - *os << "::" << bt->name () << " " << arg->local_name () << ";"; - } - - break; - } - - return 0; -} |