From c695ac8efb2ed1684b8058272aea6d5251167970 Mon Sep 17 00:00:00 2001 From: parsons Date: Thu, 28 Aug 2003 19:18:48 +0000 Subject: ChangeLogTag: Thu Aug 28 13:27:04 2003 Jeff Parsons --- TAO/ChangeLog_ref | 11 ++ .../be/be_visitor_interface/interface_cs.cpp | 139 +++++++++++---------- TAO/tao/Special_Basic_Argument_T.cpp | 2 +- 3 files changed, 83 insertions(+), 69 deletions(-) diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index e7af4226e65..1f978c304ed 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,14 @@ +Thu Aug 28 13:27:04 2003 Jeff Parsons + + * TAO_IDL/be/be_visitor_interface/interface_cs.cpp: + + Added generation of _is_a() for local interfaces, as per + CORBA 3.0.2. + + * tao/Special_Basic_Argument_T (interceptor_result).cpp: + + Added missing 'from_xxx' to the Any insertion. + Thu Aug 28 12:16:16 2003 Jeff Parsons * TAO_IDL/be/be_visitor_ami_pre_proc.cpp: diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp index 802f4bce1e4..ea6ea04cec5 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp @@ -395,84 +395,87 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "return obj;" << be_uidt_nl << "}" << be_nl << be_nl; - // Generate the is_a method (not supported on local objects). - if (! node->is_local ()) - { - *os << "CORBA::Boolean" << be_nl - << node->full_name () << "::_is_a (" << be_idt << be_idt_nl - << "const char *value" << be_nl - << "ACE_ENV_ARG_DECL"; + *os << "CORBA::Boolean" << be_nl + << node->full_name () << "::_is_a (" << be_idt << be_idt_nl + << "const char *value" << be_nl + << "ACE_ENV_ARG_DECL"; - if (node->is_abstract ()) - { - *os << "_NOT_USED"; - } + if (node->is_abstract ()) + { + *os << "_NOT_USED"; + } - *os << be_uidt_nl << ")" << be_uidt_nl - << "{" << be_idt_nl - << "if (" << be_idt << be_idt_nl; + *os << be_uidt_nl << ")" << be_uidt_nl + << "{" << be_idt_nl + << "if (" << be_idt << be_idt_nl; - int status = - node->traverse_inheritance_graph (be_interface::is_a_helper, - os); + int status = + node->traverse_inheritance_graph (be_interface::is_a_helper, + os); - if (status == -1) - { - ACE_ERROR_RETURN ((LM_ERROR, - "(%N:%l) be_visitor_interface_cs::" - "visit_interface - " - "_is_a method codegen failed\n"), - -1); - } - - if (node->is_abstract () || node->has_mixed_parentage ()) - { - *os << "!ACE_OS::strcmp (" << be_idt << be_idt_nl - << "(char *)value," << be_nl - << "\"IDL:omg.org/CORBA/AbstractBase:1.0\"" << be_uidt_nl - << ")"; - } + if (status == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + "(%N:%l) be_visitor_interface_cs::" + "visit_interface - " + "_is_a method codegen failed\n"), + -1); + } - if (node->has_mixed_parentage ()) - { - *os << " ||" << be_uidt_nl; - } - else if (node->is_abstract ()) - { - *os << be_uidt << be_uidt_nl; - } + if (node->is_abstract () || node->has_mixed_parentage ()) + { + *os << "!ACE_OS::strcmp (" << be_idt << be_idt_nl + << "(char *)value," << be_nl + << "\"IDL:omg.org/CORBA/AbstractBase:1.0\"" << be_uidt_nl + << ")"; + } + else if (node->is_local ()) + { + *os << "!ACE_OS::strcmp (" << be_idt << be_idt_nl + << "(char *)value," << be_nl + << "\"IDL:omg.org/CORBA/LocalObject:1.0\"" << be_uidt_nl + << ")"; + } - if (! node->is_abstract ()) - { - *os << "!ACE_OS::strcmp (" << be_idt << be_idt_nl - << "(char *)value," << be_nl - << "\"IDL:omg.org/CORBA/Object:1.0\"" << be_uidt_nl - << ")" << be_uidt << be_uidt_nl; - } + if (node->has_mixed_parentage () || node->is_local ()) + { + *os << " ||" << be_uidt_nl; + } + else if (node->is_abstract ()) + { + *os << be_uidt << be_uidt_nl; + } - *os << " )" << be_nl - << "{" << be_idt_nl - << "return 1; // success using local knowledge" << be_uidt_nl - << "}" << be_uidt_nl - << "else" << be_idt_nl - << "{" << be_idt_nl; + if (! node->is_abstract ()) + { + *os << "!ACE_OS::strcmp (" << be_idt << be_idt_nl + << "(char *)value," << be_nl + << "\"IDL:omg.org/CORBA/Object:1.0\"" << be_uidt_nl + << ")" << be_uidt << be_uidt_nl; + } - if (node->is_abstract ()) - { - *os << "return 0;" << be_uidt_nl; - } - else - { - *os << "return this->ACE_NESTED_CLASS (CORBA, Object)::_is_a (" - << be_idt << be_idt_nl - << "value" << be_nl - << "ACE_ENV_ARG_PARAMETER" << be_uidt_nl - << ");" << be_uidt << be_uidt_nl; - } + *os << " )" << be_nl + << "{" << be_idt_nl + << "return 1; // success using local knowledge" << be_uidt_nl + << "}" << be_uidt_nl + << "else" << be_idt_nl + << "{" << be_idt_nl; - *os << "}" << be_uidt << be_uidt_nl - << "}" << be_nl << be_nl; + if (node->is_abstract () || node->is_local ()) + { + *os << "return 0;" << be_uidt_nl; } + else + { + *os << "return this->ACE_NESTED_CLASS (CORBA, Object)::_is_a (" + << be_idt << be_idt_nl + << "value" << be_nl + << "ACE_ENV_ARG_PARAMETER" << be_uidt_nl + << ");" << be_uidt << be_uidt_nl; + } + + *os << "}" << be_uidt << be_uidt_nl + << "}" << be_nl << be_nl; // Generating _tao_QueryInterface method. *os << "void *" << node->full_name () diff --git a/TAO/tao/Special_Basic_Argument_T.cpp b/TAO/tao/Special_Basic_Argument_T.cpp index 3451b51a3b1..502ce2bd73b 100644 --- a/TAO/tao/Special_Basic_Argument_T.cpp +++ b/TAO/tao/Special_Basic_Argument_T.cpp @@ -98,7 +98,7 @@ TAO::Ret_Special_Basic_Argument_T::interceptor_result ( CORBA::Any * any ) { - (*any) <<= this->x_; + (*any) <<= from_S (this->x_); } #endif /* TAO_SPECIAL_BASIC_ARGUMENT_T_C */ -- cgit v1.2.1