diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp index 7c2a402838b..c7b6dfc0e45 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp @@ -54,6 +54,9 @@ be_visitor_interface_ch::visit_interface (be_interface *node) if (idl_global->ami_call_back () == I_TRUE) { + be_interface_type_strategy *old_strategy = + node->set_strategy (new be_interface_ami_handler_strategy (node)); + // Set the context. be_visitor_context ctx (*this->ctx_); @@ -82,6 +85,8 @@ be_visitor_interface_ch::visit_interface (be_interface *node) -1); } delete visitor; + + delete node->set_strategy (old_strategy); } // Grab the stream. @@ -90,7 +95,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) // == STEP 1: generate the class name and class names we inherit == // generate the ifdefined macro for the _ptr type - os->gen_ifdef_macro (node->flatname (), "_ptr"); + os->gen_ifdef_macro (node->flat_name (), "_ptr"); // the following two are required to be under the ifdef macro to avoid @@ -106,7 +111,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) os->gen_endif (); // generate the ifdefined macro for the var type - os->gen_ifdef_macro (node->flatname (), "_var"); + os->gen_ifdef_macro (node->flat_name (), "_var"); // generate the _var declaration if (node->gen_var_defn () == -1) @@ -119,7 +124,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) os->gen_endif (); // generate the ifdef macro for the _out class - os->gen_ifdef_macro (node->flatname (), "_out"); + os->gen_ifdef_macro (node->flat_name (), "_out"); // generate the _out declaration - ORBOS/97-05-15 pg 16-20 spec if (node->gen_out_defn () == -1) @@ -133,10 +138,10 @@ be_visitor_interface_ch::visit_interface (be_interface *node) os->gen_endif (); // now the interface definition itself - os->gen_ifdef_macro (node->flatname ()); + os->gen_ifdef_macro (node->flat_name ()); // now generate the class definition - *os << "class " << idl_global->stub_export_macro () + *os << "class " << idl_global->export_macro () << " " << node->local_name (); if (node->n_inherits () > 0) // node interface inherits from other @@ -181,11 +186,11 @@ be_visitor_interface_ch::visit_interface (be_interface *node) // generate the _ptr_type and _var_type typedefs // but we must protect against certain versions of g++ - << "#if !defined(__GNUC__) || !defined (ACE_HAS_GNUG_PRE_2_8)" + << "#if !defined(__GNUC__) || __GNUC__ > 2 || __GNUC_MINOR__ >= 8" << be_idt_nl << "typedef " << node->local_name () << "_ptr _ptr_type;" << be_nl << "typedef " << node->local_name () << "_var _var_type;" << be_uidt_nl - << "#endif /* ! __GNUC__ || g++ >= 2.8 */\n" << be_idt_nl + << "#endif /* __GNUC__ */\n" << be_idt_nl // generate the static _duplicate, _narrow, and _nil operations << "// the static operations" << be_nl @@ -247,14 +252,12 @@ be_visitor_interface_ch::visit_interface (be_interface *node) // private copy constructor and assignment operator. These are not // allowed, hence they are private. - *os << "private:\n"; - os->incr_indent (); + *os << "private:" << be_idt_nl; *os << node->local_name () << " (const " << node->local_name () << " &);" << be_nl - << "void operator= (const " << node->local_name () << " &);\n"; - - os->decr_indent (); + << "void operator= (const " << node->local_name () << " &);" << be_uidt_nl; *os << "};\n\n"; + os->gen_endif (); // by using a visitor to declare and define the TypeCode, we have the @@ -272,15 +275,19 @@ be_visitor_interface_ch::visit_interface (be_interface *node) "TypeCode declaration failed\n" ), -1); } - + // AMI - // Generate code for the AMI Reply Handler. + // Generate code for the AMI Reply Handler. if (idl_global->ami_call_back () == I_TRUE) { // = Generate the default stub code for Handler. + be_interface_type_strategy *old_strategy = + node->set_strategy (new be_interface_ami_handler_strategy (node)); + + // Set the context. be_visitor_context ctx (*this->ctx_); @@ -297,7 +304,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) "Bad visitor\n"), -1); } - + // Call the visitor on this interface. if (node->accept (visitor) == -1) { @@ -309,15 +316,15 @@ be_visitor_interface_ch::visit_interface (be_interface *node) -1); } delete visitor; - + // = Generate the Servant Skeleton code. // Set the context. ctx = *this->ctx_; - + // Set the state. ctx.state (TAO_CodeGen::TAO_AMI_HANDLER_SERVANT_CH); - + // Create the visitor. visitor = tao_cg->make_visitor (&ctx); if (!visitor) @@ -328,7 +335,7 @@ be_visitor_interface_ch::visit_interface (be_interface *node) "Bad visitor\n"), -1); } - + // call the visitor on this interface. if (node->accept (visitor) == -1) { @@ -340,6 +347,8 @@ be_visitor_interface_ch::visit_interface (be_interface *node) -1); } delete visitor; + + delete node->set_strategy (old_strategy); } node->cli_hdr_gen (I_TRUE); |