summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-09-01 15:23:19 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-09-01 15:23:19 +0000
commit47457d0a224f49847cb619740b5402540c2007ba (patch)
tree4fa9d6de7c20227a7751815f118a7e89f25ebc37
parentbd45b1bb4b46ac6adaf827ee654582be593bbe40 (diff)
downloadATCD-47457d0a224f49847cb619740b5402540c2007ba.tar.gz
ChangeLogTag: Mon Sep 1 10:19:16 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp29
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/exception_ci.cpp31
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;
}