diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp index eebc4b7fb86..f31eccdb8c3 100644 --- a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp @@ -174,7 +174,6 @@ be_visitor_field_cdr_op_ci::visit_array (be_array *node) ctx.node (node); // First generate the declaration. - ctx.state (TAO_CodeGen::TAO_ARRAY_CDR_OP_CI); be_visitor_array_cdr_op_ci visitor (&ctx); if (node->accept (&visitor) == -1) @@ -245,7 +244,6 @@ be_visitor_field_cdr_op_ci::visit_enum (be_enum *node) ctx.node (node); // Generate the typcode for enums. - ctx.state (TAO_CodeGen::TAO_ENUM_CDR_OP_CI); be_visitor_enum_cdr_op_ci visitor (&ctx); if (node->accept (&visitor) == -1) @@ -263,7 +261,7 @@ be_visitor_field_cdr_op_ci::visit_enum (be_enum *node) // Visit interface type. int -be_visitor_field_cdr_op_ci::visit_interface (be_interface *) +be_visitor_field_cdr_op_ci::visit_interface (be_interface *node) { TAO_OutStream *os = this->ctx_->stream (); be_field *f = this->ctx_->be_node_as_field (); @@ -286,7 +284,16 @@ be_visitor_field_cdr_op_ci::visit_interface (be_interface *) break; case TAO_CodeGen::TAO_CDR_OUTPUT: - *os << "(strm << _tao_aggregate." << f->local_name () << ".in ())"; + if (node->is_defined ()) + { + *os << "_tao_aggregate." << f->local_name () + << ".in ()->marshal (strm)"; + } + else + { + *os << "tao_" << node->flat_name () << "_marshal (" + << "_tao_aggregate." << f->local_name () << ".in (), strm)"; + } break; case TAO_CodeGen::TAO_CDR_SCOPE: @@ -307,7 +314,7 @@ be_visitor_field_cdr_op_ci::visit_interface (be_interface *) // Visit interface forward type. int -be_visitor_field_cdr_op_ci::visit_interface_fwd (be_interface_fwd *) +be_visitor_field_cdr_op_ci::visit_interface_fwd (be_interface_fwd *node) { TAO_OutStream *os = this->ctx_->stream (); @@ -332,7 +339,16 @@ be_visitor_field_cdr_op_ci::visit_interface_fwd (be_interface_fwd *) break; case TAO_CodeGen::TAO_CDR_OUTPUT: - *os << "(strm << _tao_aggregate." << f->local_name () << ".in ())"; + if (node->is_defined ()) + { + *os << "_tao_aggregate." << f->local_name () + << ".in ()->marshal (strm)"; + } + else + { + *os << "tao_" << node->flat_name () << "_marshal (" + << "_tao_aggregate." << f->local_name () << ".in (), strm)"; + } break; case TAO_CodeGen::TAO_CDR_SCOPE: @@ -600,7 +616,6 @@ be_visitor_field_cdr_op_ci::visit_sequence (be_sequence *node) ctx.node (node); // Generate the inline code for structs. - ctx.state (TAO_CodeGen::TAO_SEQUENCE_CDR_OP_CI); be_visitor_sequence_cdr_op_ci visitor (&ctx); if (node->accept (&visitor) == -1) @@ -717,7 +732,6 @@ be_visitor_field_cdr_op_ci::visit_structure (be_structure *node) ctx.node (node); // Generate the inline code for structs. - ctx.state (TAO_CodeGen::TAO_STRUCT_CDR_OP_CI); be_visitor_structure_cdr_op_ci visitor (&ctx); if (node->accept (&visitor) == -1) @@ -813,7 +827,6 @@ be_visitor_field_cdr_op_ci::visit_union (be_union *node) ctx.node (node); // Generate the inline code for union. - ctx.state (TAO_CodeGen::TAO_UNION_CDR_OP_CI); be_visitor_union_cdr_op_ci visitor (&ctx); if (node->accept (&visitor) == -1) |