summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-05-26 16:53:50 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-05-26 16:53:50 +0000
commit2b27682442c2aef843388d3589d9d2269c07eac5 (patch)
tree630040c606c1937b841fe8fe77eab8d4526921cc
parent53a6b453230fe2293a46219cc67a61b7f8562027 (diff)
downloadATCD-2b27682442c2aef843388d3589d9d2269c07eac5.tar.gz
Fixed the >> operator for pseudo objects (at least for
two cases - TypeCode and Object. ValueBase case is not yet implemented here).
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
index 308f7e7890f..42fcd6c8608 100644
--- a/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union_branch/cdr_op_cs.cpp
@@ -395,8 +395,20 @@ be_visitor_union_branch_cdr_op_cs::visit_predefined_type (be_predefined_type *no
case TAO_CodeGen::TAO_CDR_INPUT:
if (node->pt () == AST_PredefinedType::PT_pseudo)
- *os << "result = strm >> _tao_union."
- << f->local_name () << " ();";
+ {
+ if (!ACE_OS::strcmp (node->local_name ()->get_string (), "TypeCode"))
+ *os << "CORBA::TypeCode_var _tao_union_tmp;" << be_nl;
+
+ else if (!ACE_OS::strcmp (node->local_name ()->get_string (), "Object"))
+ *os << "CORBA::Object_var _tao_union_tmp;" << be_nl;
+
+ //@@TODO - case for ValueBase.
+
+ *os << "result = strm >> _tao_union_tmp.out ();" << be_nl
+ << "if (result)" << be_idt_nl
+ << "_tao_union." << f->local_name () << " (_tao_union_tmp.in ());"
+ << be_uidt;
+ }
else if (node->pt () == AST_PredefinedType::PT_char)
*os << "CORBA::Char _tao_union_tmp;" << be_nl
<< "CORBA::Any::to_char _tao_union_helper "