summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-12-18 19:55:46 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-12-18 19:55:46 +0000
commit819e6c8e92461bd341aae3a8643a408db7213d74 (patch)
tree2439f906a59fa17ba179bd5741490d36df974d24
parent54a1542c0fa2aed18e204ee9ec32ad8f220decdb (diff)
downloadATCD-819e6c8e92461bd341aae3a8643a408db7213d74.tar.gz
Any insertion/extraction code fixes.
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_exception/any_op_cs.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp14
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp14
7 files changed, 45 insertions, 41 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
index eccd0a1cc0d..4384d1d2471 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/any_op_cs.cpp
@@ -83,9 +83,15 @@ be_visitor_array_any_op_cs::visit_array (be_array *node)
<< "TAO_CHECK_ENV;" << be_nl
<< "if (_tao_any.any_owns_data ())" << be_nl
<< "{" << be_idt_nl
+ << "_tao_elem = (" << node->name () << "_slice *)_tao_any.value ();"
+ << be_nl
+ << "return 1;" << be_uidt_nl
+ << "}" << be_nl
+ << "else" << be_nl // else Any does not own the data
+ << "{" << be_idt_nl
<< "_tao_elem.out () = " << node->name () << "_alloc ();" << be_nl
<< "if (!_tao_elem.in ()) return 0;" << be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", _tao_elem.inout (), 0, TAO_TRY_ENV)" << be_nl
@@ -96,12 +102,6 @@ be_visitor_array_any_op_cs::visit_array (be_array *node)
<< "return 1;" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CHECK_ENV;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else Any does not own the data
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << "_slice *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
<< "}" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
index 55161754a49..0614d2cc1da 100644
--- a/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_enum/any_op_cs.cpp
@@ -83,7 +83,7 @@ be_visitor_enum_any_op_cs::visit_enum (be_enum *node)
<< "if (!type->equal (" << node->tc_name ()
<< ", TAO_TRY_ENV)) return 0; // not equal" << be_nl
<< "TAO_CHECK_ENV;" << be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", &_tao_elem, 0, TAO_TRY_ENV)" << be_nl
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 9ffd6dc882c..2170bdca554 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
@@ -96,9 +96,15 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node)
<< "TAO_CHECK_ENV;" << be_nl
<< "if (_tao_any.any_owns_data ())" << be_nl
<< "{" << be_idt_nl
+ << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
+ << be_nl
+ << "return 1;" << be_uidt_nl
+ << "}" << be_nl
+ << "else" << be_nl // else any does not own the data
+ << "{" << be_idt_nl
<< "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);"
<< be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", _tao_elem, 0, TAO_TRY_ENV)" << be_nl
@@ -113,12 +119,6 @@ be_visitor_exception_any_op_cs::visit_exception (be_exception *node)
<< "{" << be_idt_nl
<< "delete _tao_elem;" << be_uidt_nl
<< "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else any does not own the data
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
<< "}" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
index 640c9c1e75f..d773bde03fd 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/any_op_cs.cpp
@@ -1,5 +1,5 @@
//
-// $Id$
+// $id: any_op_cs.cpp,v 1.12 1998/10/30 19:46:55 levine Exp $
//
// ============================================================================
@@ -77,6 +77,7 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node)
*os << "CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, "
<< node->name () << "_ptr &_tao_elem)" << be_nl
<< "{" << be_idt_nl
+ << "CORBA::Object_ptr *tmp = 0;" << be_nl
<< "TAO_TRY" << be_nl
<< "{" << be_idt_nl
<< "_tao_elem = " << node->name () << "::_nil ();" << be_nl
@@ -84,19 +85,21 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node)
<< "if (!type->equal (" << node->tc_name ()
<< ", TAO_TRY_ENV)) return 0; // not equal" << be_nl
<< "TAO_CHECK_ENV;" << be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "CORBA::Object_var _tao_obj_var;" << be_nl
+ << "ACE_NEW_RETURN (tmp, CORBA::Object_ptr, 0);" << be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", &_tao_obj_var.out (), 0, TAO_TRY_ENV)" << be_nl
- << " == CORBA::TypeCode::TRAVERSE_CONTINUE)" << be_nl
+ << " == CORBA::TypeCode::TRAVERSE_CONTINUE)" << be_nl
<< "{" << be_idt_nl
<< "_tao_elem = " << node->name ()
<< "::_narrow (_tao_obj_var.in (), TAO_TRY_ENV);" << be_nl
<< "TAO_CHECK_ENV;" << be_nl
- << "_tao_obj_var = _tao_elem;" << be_nl
+ << "*tmp = (CORBA::Object_ptr) _tao_elem; // any owns the object"
+ << be_nl
<< "((CORBA::Any *)&_tao_any)->replace ("
- << node->tc_name () << ", &_tao_obj_var.inout (), 1, TAO_TRY_ENV);" << be_nl
+ << node->tc_name () << ", tmp, 1, TAO_TRY_ENV);" << be_nl
<< "TAO_CHECK_ENV;" << be_nl
<< "return 1;" << be_uidt_nl
<< "}" << be_nl
@@ -104,6 +107,7 @@ be_visitor_interface_any_op_cs::visit_interface (be_interface *node)
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl
<< "{" << be_idt_nl
+ << "delete tmp;" << be_nl
<< "return 0;" << be_uidt_nl
<< "}" << be_nl
<< "TAO_ENDTRY;" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
index 9c89bbf41e4..29e8467536d 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
@@ -99,9 +99,15 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node)
<< "TAO_CHECK_ENV;" << be_nl
<< "if (_tao_any.any_owns_data ())" << be_nl
<< "{" << be_idt_nl
+ << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
+ << be_nl
+ << "return 1;" << be_uidt_nl
+ << "}" << be_nl
+ << "else" << be_nl // else any does not own the data
+ << "{" << be_idt_nl
<< "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);"
<< be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", _tao_elem, 0, TAO_TRY_ENV)" << be_nl
@@ -117,12 +123,6 @@ be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node)
<< "{" << be_idt_nl
<< "delete _tao_elem;" << be_uidt_nl
<< "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else any does not own the data
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
<< "}" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
index 1f3d4f68f62..dee524518eb 100644
--- a/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_structure/any_op_cs.cpp
@@ -96,9 +96,15 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *node)
<< "TAO_CHECK_ENV;" << be_nl
<< "if (_tao_any.any_owns_data ())" << be_nl
<< "{" << be_idt_nl
+ << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
+ << be_nl
+ << "return 1;" << be_nl
+ << "}" << be_uidt_nl
+ << "else" << be_nl // else any does not own the data
+ << "{" << be_idt_nl
<< "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);"
<< be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", _tao_elem, 0, TAO_TRY_ENV)" << be_nl
@@ -113,12 +119,6 @@ be_visitor_structure_any_op_cs::visit_structure (be_structure *node)
<< "{" << be_idt_nl
<< "delete _tao_elem;" << be_uidt_nl
<< "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else any does not own the data
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
<< "}" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
index 7aa0d568376..c2c762b19ef 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/any_op_cs.cpp
@@ -95,9 +95,15 @@ be_visitor_union_any_op_cs::visit_union (be_union *node)
<< "TAO_CHECK_ENV;" << be_nl
<< "if (_tao_any.any_owns_data ())" << be_nl
<< "{" << be_idt_nl
+ << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
+ << be_nl
+ << "return 1;" << be_uidt_nl
+ << "}" << be_nl
+ << "else" << be_nl // else any does not own the data
+ << "{" << be_idt_nl
<< "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);"
<< be_nl
- << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());"
+ << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any._tao_get_cdr ());"
<< be_nl
<< "if (stream.decode (" << node->tc_name ()
<< ", _tao_elem, 0, TAO_TRY_ENV)" << be_nl
@@ -112,12 +118,6 @@ be_visitor_union_any_op_cs::visit_union (be_union *node)
<< "{" << be_idt_nl
<< "delete _tao_elem;" << be_uidt_nl
<< "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else any does not own the data
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
<< "}" << be_uidt_nl
<< "}" << be_nl
<< "TAO_CATCHANY" << be_nl