diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-26 16:53:50 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-05-26 16:53:50 +0000 |
commit | 2b27682442c2aef843388d3589d9d2269c07eac5 (patch) | |
tree | 630040c606c1937b841fe8fe77eab8d4526921cc | |
parent | 53a6b453230fe2293a46219cc67a61b7f8562027 (diff) | |
download | ATCD-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.cpp | 16 |
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 " |