diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp | 146 |
1 files changed, 66 insertions, 80 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp index 340ff42c7b0..e4cc2609d0a 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_sh.cpp @@ -12,7 +12,6 @@ */ //============================================================================= - // ************************************************************ // Interface visitor for server header. // ************************************************************ @@ -52,9 +51,9 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (this->generate_amh_classes (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "codegen for AMH classes failed\n"), + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("visit_interface - ") + ACE_TEXT ("codegen for AMH classes failed\n")), -1); } @@ -73,8 +72,9 @@ be_visitor_interface_sh::visit_interface (be_interface *node) class_name += node->local_name (); } - *os << be_nl << be_nl - << "// TAO_IDL - Generated from" << be_nl + *os << be_nl << be_nl; + + *os << "// TAO_IDL - Generated from" << be_nl << "// " << __FILE__ << ":" << __LINE__; // Generate the skeleton class name. @@ -82,65 +82,42 @@ be_visitor_interface_sh::visit_interface (be_interface *node) << "class " << class_name.c_str () << ";" << be_nl; // Generate the _ptr declaration. - *os << "typedef " << class_name.c_str () << " *" << class_name.c_str () - << "_ptr;"; + *os << "typedef " << class_name.c_str () << " *" + << class_name.c_str () << "_ptr;"; if (be_global->gen_direct_collocation ()) { *os << be_nl << be_nl - << "class " << node->direct_proxy_impl_name () << ";" << be_nl - << "class " << node->strategized_proxy_broker_name () << ";"; + << "class " << node->direct_proxy_impl_name () + << ";" << be_nl + << "class " << node->strategized_proxy_broker_name () + << ";"; } // Now generate the class definition. *os << be_nl << be_nl << "class " << be_global->skel_export_macro () - << " " << class_name.c_str () << be_idt_nl << ": " << be_idt; - - long n_parents = node->n_inherits (); - AST_Type *parent = 0; - bool has_concrete_parent = false; - - for (int i = 0; i < n_parents; ++i) - { - parent = node->inherits ()[i]; - - if (parent->is_abstract ()) - { - continue; - } + << " " << class_name.c_str () << be_idt_nl + << ": " << be_idt; - if (has_concrete_parent) - { - *os << "," << be_nl; - } - - *os << "public virtual " << "POA_" - << parent->name (); - - has_concrete_parent = true; - } - - if (! has_concrete_parent) - { - // We don't inherit from another user defined object, hence our - // base class is the ServantBase class. - *os << "public virtual PortableServer::ServantBase"; - } + node->gen_skel_inheritance (os); *os << be_uidt << be_uidt_nl << "{" << be_nl << "protected:" << be_idt_nl; // Default constructor. - *os << class_name.c_str () << " (void);" << be_uidt_nl << be_nl + *os << class_name.c_str () << " (void);" + << be_uidt_nl << be_nl << "public:" << be_idt_nl; // Some useful typedefs. *os << "// Useful for template programming." << be_nl - << "typedef ::" << node->name () << " _stub_type;" << be_nl - << "typedef ::" << node->name () << "_ptr _stub_ptr_type;" << be_nl + << "typedef ::" << node->name () << " _stub_type;" + << be_nl + << "typedef ::" << node->name () << "_ptr _stub_ptr_type;" + << be_nl << "typedef ::" << node->name () << "_var _stub_var_type;" << be_nl << be_nl; @@ -162,7 +139,8 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (!be_global->gen_minimum_corba ()) { // Add a skeleton for our _non_existent method. - *os << "static void _non_existent_skel (" << be_idt << be_idt_nl + *os << "static void _non_existent_skel (" + << be_idt << be_idt_nl << "TAO_ServerRequest & req," << be_nl << "void * servant_upcall," << be_nl << "void * servant);" << be_uidt @@ -172,7 +150,8 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (!be_global->gen_corba_e () && !be_global->gen_minimum_corba ()) { // Add a skeleton for our _interface method. - *os << "static void _interface_skel (" << be_idt << be_idt_nl + *os << "static void _interface_skel (" + << be_idt << be_idt_nl << "TAO_ServerRequest & req," << be_nl << "void * servant_upcall," << be_nl << "void * servant);" << be_uidt @@ -192,7 +171,8 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (!be_global->gen_minimum_corba ()) { // Add a skeleton for our _repository_id method. - *os << "static void _repository_id_skel (" << be_idt << be_idt_nl + *os << "static void _repository_id_skel (" + << be_idt << be_idt_nl << "TAO_ServerRequest & req," << be_nl << "void * servant_upcall," << be_nl << "void * servant);" << be_uidt @@ -216,9 +196,9 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (this->visit_scope (node) == -1) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "codegen for scope failed\n"), + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("visit_interface - ") + ACE_TEXT ("codegen for scope failed\n")), -1); } @@ -233,9 +213,10 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (status == -1) { ACE_ERROR_RETURN ((LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "inheritance graph traversal failed\n"), + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("visit_interface - ") + ACE_TEXT ("inheritance graph ") + ACE_TEXT ("traversal failed\n")), -1); } @@ -251,39 +232,32 @@ be_visitor_interface_sh::visit_interface (be_interface *node) if (node->accept (&ispb_visitor) == -1) { - ACE_ERROR_RETURN (( - LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "codegen for strategized proxy broker class failed\n" - ), - -1 - ); + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("visit_interface - ") + ACE_TEXT ("codegen for strategized ") + ACE_TEXT ("proxy broker class failed\n")), + -1); } } - ctx = *this->ctx_; - // Generate the collocated class. ctx = *this->ctx_; if (be_global->gen_direct_collocation ()) { - ctx = *this->ctx_; ctx.state (TAO_CodeGen::TAO_INTERFACE_DIRECT_PROXY_IMPL_SH); be_visitor_interface_direct_proxy_impl_sh idpi_visitor (&ctx); if (node->accept (&idpi_visitor) == -1) { - ACE_ERROR_RETURN (( - LM_ERROR, - "be_visitor_interface_sh::" - "visit_interface - " - "codegen for direct collocated class failed\n" - ), - -1 - ); + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("visit_interface - ") + ACE_TEXT ("codegen for direct ") + ACE_TEXT ("collocated class failed\n")), + -1); } } @@ -291,11 +265,22 @@ be_visitor_interface_sh::visit_interface (be_interface *node) } int +be_visitor_interface_sh::visit_component (be_component *node) +{ + return this->visit_interface (node); +} + +int +be_visitor_interface_sh::visit_connector (be_connector *node) +{ + return this->visit_interface (node); +} + +int be_visitor_interface_sh::gen_abstract_ops_helper ( - be_interface *node, - be_interface *base, - TAO_OutStream *os - ) + be_interface *node, + be_interface *base, + TAO_OutStream *os) { if (!base->is_abstract ()) { @@ -316,9 +301,9 @@ be_visitor_interface_sh::gen_abstract_ops_helper ( if (d == 0) { ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_interface_sh::" - "gen_abstract_ops_helper - " - "bad node in this scope\n"), + ACE_TEXT ("be_visitor_interface_sh::") + ACE_TEXT ("gen_abstract_ops_helper - ") + ACE_TEXT ("bad node in this scope\n")), -1); } @@ -371,7 +356,8 @@ be_visitor_interface_sh::this_method (be_interface *node) TAO_OutStream *os = this->ctx_->stream (); // Print out the _this() method. - *os << "::" << node->full_name () << " *_this (void);" << be_nl; + *os << "::" << node->full_name () << " *_this (void);" + << be_nl; } int |