summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-01-09 17:42:57 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-01-09 17:42:57 +0000
commit032098897c13c8b87f8a915f0e97ce21ffd60d29 (patch)
tree40b2184480238b4f80e68d19ee06007ee64790fe
parentf04754b6cf62f6475b32843899e8ea192ad75fec (diff)
downloadATCD-032098897c13c8b87f8a915f0e97ce21ffd60d29.tar.gz
ChangeLogTag: Wed Jan 9 11:39:02 2002 Jeff Parsons <parsons@cs.wustl.edu>
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp19
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ci.cpp28
2 files changed, 21 insertions, 26 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp
index dafa1c3db8d..bfc4212b152 100644
--- a/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_array/cdr_op_ci.cpp
@@ -78,18 +78,20 @@ be_visitor_array_cdr_op_ci::visit_array (be_array *node)
// If we contain an anonymous sequence,
// generate code for the sequence here.
- if (bt->node_type () == AST_Decl::NT_sequence)
+ AST_Decl::NodeType nt = bt->node_type ();
+
+ // If the node is an array of anonymous sequence, we need to
+ // generate the sequence's cdr operator declaration here.
+ if (nt == AST_Decl::NT_sequence && bt->anonymous ())
{
- // CDR operators for sequences are now declared in the .i file,
- // so we pass this state to the function.
- if (this->gen_anonymous_base_type (bt,
- TAO_CodeGen::TAO_SEQUENCE_CDR_OP_CH)
- == -1)
+ be_visitor_sequence_cdr_op_ci visitor (this->ctx_);
+
+ if (bt->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_array_cdr_op_ci::"
+ "be_visitor_array_cdr_op_ci::"
"visit_array - "
- "gen_anonymous_base_type failed\n"),
+ "accept on anonymous base type failed\n"),
-1);
}
}
@@ -142,6 +144,7 @@ be_visitor_array_cdr_op_ci::visit_array (be_array *node)
"Base type codegen failed\n"),
-1);
}
+
*os << "}\n\n";
// Set the sub state as generating code for the input operator.
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ci.cpp
index 614e272f79e..cff75285ad5 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ci.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ci.cpp
@@ -56,29 +56,21 @@ be_visitor_sequence_cdr_op_ci::visit_sequence (be_sequence *node)
// If we contain an anonymous sequence,
// generate code for the sequence here.
- // retrieve the base type
- be_type *base = be_type::narrow_from_decl (node->base_type ());
- if (!base)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_ci::"
- "visit_sequence - "
- "Bad base type\n"),
- -1);
- }
+ // Retrieve the base type.
+ AST_Type *base = node->base_type ();
+ AST_Decl::NodeType nt = base->node_type ();
- if (base->node_type () == AST_Decl::NT_sequence)
+ if (nt == AST_Decl::NT_sequence && base->anonymous ())
{
- // CDR operators for sequences are now declared in the .i file,
- // so we pass this state to the function.
- if (this->gen_anonymous_base_type (base,
- TAO_CodeGen::TAO_SEQUENCE_CDR_OP_CI)
- == -1)
+ be_sequence *bs = be_sequence::narrow_from_decl (base);
+ be_visitor_sequence_cdr_op_ci visitor (this->ctx_);
+
+ if (bs->accept (&visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_ci::"
+ "be_visitor_sequence_cdr_op_ci::"
"visit_sequence - "
- "gen_anonymous_base_type failed\n"),
+ "accept on anonymous base type failed\n"),
-1);
}
}