diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-09-01 15:23:19 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-09-01 15:23:19 +0000 |
commit | 47457d0a224f49847cb619740b5402540c2007ba (patch) | |
tree | 4fa9d6de7c20227a7751815f118a7e89f25ebc37 | |
parent | bd45b1bb4b46ac6adaf827ee654582be593bbe40 (diff) | |
download | ATCD-47457d0a224f49847cb619740b5402540c2007ba.tar.gz |
ChangeLogTag: Mon Sep 1 10:19:16 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog_ref | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp | 29 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp | 31 |
3 files changed, 37 insertions, 31 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref index 634adcdc2e1..d1feb48b01f 100644 --- a/TAO/ChangeLog_ref +++ b/TAO/ChangeLog_ref @@ -1,3 +1,11 @@ +Mon Sep 1 10:19:16 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_exception/exception_ci.cpp: + * TAO_IDL/be/be_visitor_exception/any_op_cs.cpp: + + Uninlined the generation of the (de)marshal_value overrides + for exception containing a local interface at some level. + Mon Sep 1 09:34:44 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_codegen.cpp: diff --git a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp index 81550a51e67..b5f1f26ebb0 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp @@ -139,6 +139,35 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node) << ");" << be_uidt << be_uidt << be_uidt_nl << "}"; + // Since we don't generate CDR stream operators for types that + // explicitly contain a local interface (at some level), we + // must override these Any template class methods to avoid + // calling the non-existent operators. The zero return value + // will eventually cause CORBA::MARSHAL to be raised if this + // type is inserted into an Any and then marshaled. + if (node->is_local ()) + { + TAO_OutStream *os = this->ctx_->stream (); + + *os << be_nl << be_nl + << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "CORBA::Boolean" << be_nl + << "TAO::Any_Dual_Impl_T<" << node->name () + << ">::marshal_value (TAO_OutputCDR &)" << be_nl + << "{" << be_idt_nl + << "return 0;" << be_uidt_nl + << "}"; + + *os << be_nl << be_nl + << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "CORBA::Boolean" << be_nl + << "TAO::Any_Dual_Impl_T<" << node->name () + << ">::demarshal_value (TAO_InputCDR &)" << be_nl + << "{" << be_idt_nl + << "return 0;" << be_uidt_nl + << "}"; + } + // all we have to do is to visit the scope and generate code if (this->visit_scope (node) == -1) { diff --git a/TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp b/TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp index aeadd500ad9..676c51401bc 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp @@ -54,37 +54,6 @@ int be_visitor_exception_ci::visit_exception (be_exception *node) -1); } - // Since we don't generate CDR stream operators for types that - // explicitly contain a local interface (at some level), we - // must override these Any template class methods to avoid - // calling the non-existent operators. The zero return value - // will eventually cause CORBA::MARSHAL to be raised if this - // type is inserted into an Any and then marshaled. - if (node->is_local () && be_global->any_support ()) - { - TAO_OutStream *os = this->ctx_->stream (); - - *os << be_nl << be_nl - << "template<>" << be_nl - << "ACE_INLINE" << be_nl - << "CORBA::Boolean" << be_nl - << "TAO::Any_Dual_Impl_T<" << node->name () - << ">::marshal_value (TAO_OutputCDR &)" << be_nl - << "{" << be_idt_nl - << "return 0;" << be_uidt_nl - << "}"; - - *os << be_nl << be_nl - << "template<>" << be_nl - << "ACE_INLINE" << be_nl - << "CORBA::Boolean" << be_nl - << "TAO::Any_Dual_Impl_T<" << node->name () - << ">::demarshal_value (TAO_InputCDR &)" << be_nl - << "{" << be_idt_nl - << "return 0;" << be_uidt_nl - << "}"; - } - node->cli_inline_gen (I_TRUE); return 0; } |