summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/ChangeLog11
-rw-r--r--TAO/TAO_IDL/be/be_visitor_traits.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp10
3 files changed, 24 insertions, 1 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 107759f3d3c..734dfca008d 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,14 @@
+Thu Oct 30 22:09:17 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/be/be_visitor_traits.cpp:
+ * TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp:
+
+ Added tao_release() to the generated Value_Traits<> specialization,
+ so the INOUT argument template helper class can release the argument
+ at demarshal time with the same call for both interface and
+ valuetypes. This extra method has already been added to
+ CORBA::ValueBase.
+
Thu Oct 30 15:01:43 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
* orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp:
diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp
index c019c8468fc..3e9f6341fe2 100644
--- a/TAO/TAO_IDL/be/be_visitor_traits.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp
@@ -181,7 +181,9 @@ be_visitor_traits::visit_valuetype (be_valuetype *node)
<< node->name () << ">" << be_nl
<< "{" << be_idt_nl
<< "static void tao_add_ref (" << node->name () << " *);" << be_nl
- << "static void tao_remove_ref (" << node->name () << " *);"
+ << "static void tao_remove_ref (" << node->name () << " *);"
+ << be_nl
+ << "static void tao_release (" << node->name () << " *);"
<< be_uidt_nl
<< "};";
diff --git a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
index e6cc0c561e9..891a40b17b4 100644
--- a/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_valuetype/valuetype_cs.cpp
@@ -86,6 +86,16 @@ be_visitor_valuetype_cs::visit_valuetype (be_valuetype *node)
<< "{" << be_idt_nl
<< "CORBA::remove_ref (p);" << be_uidt_nl
<< "}";
+
+ *os << be_nl << be_nl
+ << "void" << be_nl
+ << "TAO::Value_Traits<" << node->name () << ">::tao_release ("
+ << be_idt << be_idt_nl
+ << node->name () << " * p" << be_uidt_nl
+ << ")" << be_uidt_nl
+ << "{" << be_idt_nl
+ << "CORBA::remove_ref (p);" << be_uidt_nl
+ << "}";
}
// The _downcast method // %! use ACE_xxx_cast here ?