summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_field/cdr_op_ci.cpp
diff options
context:
space:
mode:
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.cpp31
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)