summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp
diff options
context:
space:
mode:
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.cpp410
1 files changed, 0 insertions, 410 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
deleted file mode 100644
index bdf0aff984d..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_operation/upcall_command_ss.cpp
+++ /dev/null
@@ -1,410 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// upcall_command_ss.cpp
-//
-// = DESCRIPTION
-// Visitor that generates operation-specific TAO::Upcall_Command
-// objects in skeletons.
-//
-// = AUTHOR
-// Ossama Othman
-//
-// ============================================================================
-
-
-ACE_RCSID (be_visitor_operation,
- upcall_command_ss,
- "$Id$")
-
-be_visitor_operation_upcall_command_ss
-::be_visitor_operation_upcall_command_ss (
- be_visitor_context *ctx)
- : be_visitor_operation (ctx)
-{
-}
-
-be_visitor_operation_upcall_command_ss
-::~be_visitor_operation_upcall_command_ss (void)
-{
-}
-
-// The following needs to be done to deal until the MSVC compiler's broken
-// handling of namespaces is fixed (hopefully forthcoming in version 7).
-int
-be_visitor_operation_upcall_command_ss
-::gen_nested_namespace_begin (be_module *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- char *item_name = 0;
- bool first_level = true;
-
- for (UTL_IdListActiveIterator i (node->name ()); !i.is_done (); i.next ())
- {
- item_name = i.item ()->get_string ();
-
- if (ACE_OS::strcmp (item_name, "") != 0)
- {
- // Leave the outermost root scope.
- *os << "namespace ";
-
- if (first_level)
- {
- // We are outermost module.
- *os << "POA_";
- first_level = false;
- }
-
- *os << item_name << be_nl
- << "{" << be_idt_nl;
- }
- }
-
- return 0;
-}
-
-// The following needs to be done to deal until the MSVC compiler's broken
-// handling of namespaces is fixed (hopefully forthcoming in version 7).
-int
-be_visitor_operation_upcall_command_ss
-::gen_nested_namespace_end (be_module *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- for (UTL_IdListActiveIterator i (node->name ()); !i.is_done (); i.next ())
- {
- if (ACE_OS::strcmp (i.item ()->get_string (), "") != 0)
- {
- // Leave the outermost root scope.
- *os << be_uidt_nl << "}" << be_nl;
- }
- }
-
- return 0;
-}
-
-int
-be_visitor_operation_upcall_command_ss::visit (be_operation * node,
- char const * full_skel_name,
- char const * upcall_command_name)
-{
- be_interface * const intf = this->ctx_->attribute ()
- ? be_interface::narrow_from_scope (this->ctx_->attribute ()->defined_in ())
- : be_interface::narrow_from_scope (node->defined_in ());
-
- be_module *module = 0;
-
- // Is our enclosing scope a module? We need this check because for
- // platforms that support namespaces, the typecode must be declared
- // extern.
- if (intf->is_nested () &&
- intf->defined_in ()->scope_node_type () == AST_Decl::NT_module)
- {
- module = be_module::narrow_from_scope (intf->defined_in ());
-
- if (!module || (this->gen_nested_namespace_begin (module) == -1))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_operation_upcall_command_ss::visit - "
- "Error parsing nested name\n"),
- -1);
- }
- }
-
- be_visitor_context ctx (*this->ctx_);
-
- // save the node.
- this->ctx_->node (node);
-
- TAO_OutStream & os = *this->ctx_->stream ();
-
- os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
-
- // Generate the operation-specific TAO::Upcall_Command concrete class.
-
- if (!intf)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_upcall_command_ss::"
- "visit - "
- "bad interface scope\n"),
- -1);
- }
-
- // Generate an operation-specific concrete TAO::Upcall_Command
- // class, an instance of which will be invoked by the
- // TAO::Upcall_Wrapper object.
-
- os << "class " << upcall_command_name << be_nl
- << " : public TAO::Upcall_Command" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl ;
-
- // Generate constructor
- os << "inline " << upcall_command_name
- << " (" << be_idt_nl
- << full_skel_name << " * servant";
-
- // No need to accept an argument array parameter if the operation
- // has no arguments.
- if (!node->void_return_type () || node->argument_count () > 0)
- {
- os << "," << be_nl;
-
- if (be_global->gen_thru_poa_collocation ())
- os << "TAO_Operation_Details const * operation_details," << be_nl;
-
- os << "TAO::Argument * const args[])" << be_nl;
- }
- else
- {
- os << ")" << be_nl;
- }
-
- os << ": servant_ (servant)";
-
- // If the operation has no arguments don't generate a member
- // initializer for the class argument array member/attribute.
- if (!node->void_return_type () || node->argument_count () > 0)
- {
- os << be_idt_nl;
-
- if (be_global->gen_thru_poa_collocation ())
- {
- os << ", operation_details_ (operation_details)" << be_nl;
- }
-
- os << ", args_ (args)" << be_uidt;
- }
-
- os << be_uidt_nl;
-
- os << "{" << be_nl
- << "}" << be_nl << be_nl;
-
- // Generate execute() method.
- os << "virtual void execute ("
- << (be_global->use_raw_throw () ? "void" : "ACE_ENV_SINGLE_ARG_DECL")
- << ")" << be_nl
- << "{" << be_idt_nl;
-
- if (!node->void_return_type ())
- {
- os << "TAO::SArg_Traits< ";
-
-
- this->gen_arg_template_param_name (node,
- node->return_type (),
- &os);
-
- os << ">::ret_arg_type retval =" << be_idt_nl;
-
- if (be_global->gen_thru_poa_collocation ())
- {
- os << "TAO::Portable_Server::get_ret_arg< ";
-
- this->gen_arg_template_param_name (node,
- node->return_type (),
- &os);
-
- os << "> (" << be_idt_nl
- << "this->operation_details_," << be_nl
- << "this->args_);" << be_uidt;
- }
- else
- {
- os << "static_cast<TAO::SArg_Traits< ";
-
- this->gen_arg_template_param_name (node,
- node->return_type (),
- &os);
-
- os << ">::ret_val *> (this->args_[0])->arg ();";
- }
-
- os << be_uidt_nl << be_nl;
- }
-
- if (this->gen_upcall (node) == -1)
- {
- return -1;
- }
-
- os << "}" << be_uidt_nl << be_nl;
-
- // Generate class attributes.
- os << "private:" << be_idt_nl
- << full_skel_name << " * const servant_;";
-
- // Don't bother generating an argument array attribute if the
- // operation has no arguments.
- if (!node->void_return_type () || node->argument_count () > 0)
- {
- os << be_nl;
-
- if (be_global->gen_thru_poa_collocation ())
- os << "TAO_Operation_Details const * const operation_details_;" << be_nl;
-
- os << "TAO::Argument * const * const args_;";
- }
-
- os << be_uidt_nl
- << "};";
-
- if (module != 0)
- {
- if (this->gen_nested_namespace_end (module) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_operation_upcall_command_ss::visit - "
- "Error parsing nested name\n"),
- -1);
- }
- }
-
- return 0;
-}
-
-int
-be_visitor_operation_upcall_command_ss::gen_upcall (be_operation * node)
-{
- TAO_OutStream & os = *this->ctx_->stream ();
-
- UTL_ScopeActiveIterator si (node,
- UTL_Scope::IK_decls);
-
- unsigned int index = 1;
-
- for (; !si.is_done (); si.next (), ++index)
- {
- AST_Argument * const arg =
- AST_Argument::narrow_from_decl (si.item ());
-
- 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 arg_" << index << " =" << be_idt_nl;
-
- if (be_global->gen_thru_poa_collocation ())
- {
- os << "TAO::Portable_Server::get_";
-
- 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< ";
-
- this->gen_arg_template_param_name (arg,
- arg->field_type (),
- &os);
-
- os << "> (" << be_idt_nl
- << "this->operation_details_," << be_nl
- << "this->args_," << be_nl
- << index << ");" << be_uidt_nl;
- }
- else
- {
- os << "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 ();"
- << be_nl;
- }
-
- os << be_uidt_nl;
-
- }
-
- if (!node->void_return_type ())
- {
- os << "retval =" << be_idt_nl;
- }
-
- os << "this->servant_->" << node->local_name () << " ("
- << be_idt;
-
- size_t const count = node->argument_count ();
-
- for (unsigned int i = 0; i < count; ++i)
- {
- os << be_nl
- << (i == 0 ? "" : ", ") << "arg_" << i + 1;
- }
-
- if (count > 0)
- {
- os << env_arg;
- }
- else
- {
- os << env_sngl_arg;
- }
-
- os << ");";
-
- if (!node->void_return_type ())
- {
- os << be_uidt;
- }
-
- os << be_uidt
- << TAO_ACE_CHECK () << be_uidt_nl;
-
- return 0;
-}