summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp93
1 files changed, 28 insertions, 65 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
index c5c3cdb1cde..12fb8b09564 100644
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
@@ -21,10 +21,11 @@
#include "idl.h"
#include "idl_extern.h"
#include "be.h"
-
#include "be_visitor_sequence.h"
-ACE_RCSID(be_visitor_sequence, sequence_ch, "$Id$")
+ACE_RCSID (be_visitor_sequence,
+ sequence_ch,
+ "$Id$")
// Root visitor for client header.
@@ -41,23 +42,20 @@ int
be_visitor_sequence_ch::gen_base_sequence_class (be_sequence *node)
{
TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt = 0;
-
- // Retrieve the base type since we may need to do some code
- // generation for the base type.
- bt = be_type::narrow_from_decl (node->base_type ());
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
if (bt == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_sequence_ch::"
"visit_sequence - "
- "Bad element type\n"), -1);
+ "Bad element type\n"),
+ -1);
}
+ *os << be_nl << "// TAO_IDL - Generated from "
+ << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
- // !! Branching in either compile time template instantiation
- // or manual template instatiation.
os->gen_ifdef_AHETI ();
// This is the instantiation branch.
@@ -150,15 +148,12 @@ be_visitor_sequence_ch::gen_base_sequence_class (be_sequence *node)
break;
}
- be_visitor_context *ctx = 0;
- ACE_NEW_RETURN (ctx,
- be_visitor_context (*this->ctx_),
- 0);
+ be_visitor_context ctx (*this->ctx_);
- be_visitor_sequence_base_template_args visitor (ctx,
+ be_visitor_sequence_base_template_args visitor (&ctx,
node);
- ctx->state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
+ ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
if (bt->accept (&visitor) == -1)
{
@@ -188,7 +183,7 @@ be_visitor_sequence_ch::gen_base_sequence_class (be_sequence *node)
*os << ", ";
// So the call to nested_type_name will have "_var" suffix.
- ctx->sub_state (TAO_CodeGen::TAO_ARRAY_SEQ_CH_TEMPLATE_VAR);
+ ctx.sub_state (TAO_CodeGen::TAO_ARRAY_SEQ_CH_TEMPLATE_VAR);
if (bt->accept (&visitor) == -1)
{
@@ -199,7 +194,7 @@ be_visitor_sequence_ch::gen_base_sequence_class (be_sequence *node)
-1);
}
- ctx->sub_state (TAO_CodeGen::TAO_SUB_STATE_UNKNOWN);
+ ctx.sub_state (TAO_CodeGen::TAO_SUB_STATE_UNKNOWN);
}
if (node->unbounded ())
@@ -228,7 +223,8 @@ be_visitor_sequence_ch::instantiate_sequence (be_sequence *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_sequence_ch::"
"gen_instantiate_template_name - "
- "Bad element type\n"), -1);
+ "Bad element type\n"),
+ -1);
}
// Generate the appropriate sequence type.
@@ -342,7 +338,8 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_sequence_ch::"
"visit_sequence - "
- "codegen. for the primitive type sequence\n"), -1);
+ "codegen. for the primitive type sequence\n"),
+ -1);
}
// End of instantiation.
@@ -415,18 +412,9 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
// Generate the base type for the buffer.
be_visitor_context ctx (*this->ctx_);
ctx.state (TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ be_visitor_sequence_buffer_type bt_visitor (&ctx);
- if (visitor == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad visitor\n"),
- -1);
- }
-
- if (bt->accept (visitor) == -1)
+ if (bt->accept (&bt_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_sequence_ch::"
@@ -435,8 +423,6 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
-1);
}
- delete visitor;
-
*os << " *buffer, " << be_nl
<< "CORBA::Boolean release = 0" << be_uidt_nl
<< ");" << be_uidt_nl;
@@ -507,7 +493,8 @@ int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_visitor_sequence_ch::"
"visit_sequence - "
- "codegen for _var failed\n"), -1);
+ "codegen for _var failed\n"),
+ -1);
}
os->gen_endif ();
@@ -538,7 +525,6 @@ be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
{
TAO_OutStream *os = this->ctx_->stream ();
char namebuf [NAMEBUFSIZE];
- be_type *bt = 0;
ACE_OS::memset (namebuf,
'\0',
@@ -555,7 +541,7 @@ be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
<< be_nl << be_nl;
// Retrieve base type.
- bt = be_type::narrow_from_decl (node->base_type ());
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
if (!bt)
{
@@ -635,17 +621,9 @@ be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
// Overloaded [] operators.
be_visitor_context ctx (*this->ctx_);
ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ be_visitor_sequence_elemtype sr_visitor (&ctx);
- if (visitor == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_var_defn - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
+ if (bt->accept (&sr_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_sequence::"
@@ -690,7 +668,7 @@ be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
{
*os << "const ";
- if (bt->accept (visitor) == -1)
+ if (bt->accept (&sr_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_sequence::"
@@ -702,8 +680,6 @@ be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
*os << " operator[] (CORBA::ULong index) const;" << be_nl;
}
- delete visitor;
-
*os << be_nl;
*os << "// in, inout, out, _retn " << be_nl;
@@ -734,7 +710,6 @@ be_visitor_sequence_ch::gen_out_defn (be_sequence *node)
{
TAO_OutStream *os = this->ctx_->stream ();
char namebuf [NAMEBUFSIZE];
- be_type *bt = 0;
ACE_OS::memset (namebuf,
'\0',
@@ -744,7 +719,7 @@ be_visitor_sequence_ch::gen_out_defn (be_sequence *node)
node->local_name ()->get_string ());
// Retrieve base type.
- bt = be_type::narrow_from_decl (node->base_type ());
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
if (bt == 0)
{
@@ -794,17 +769,9 @@ be_visitor_sequence_ch::gen_out_defn (be_sequence *node)
// required
be_visitor_context ctx (*this->ctx_);
ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
+ be_visitor_sequence_elemtype sr_visitor (&ctx);
- if (visitor == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_out_defn - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
+ if (bt->accept (&sr_visitor) == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) be_sequence::"
@@ -813,16 +780,12 @@ be_visitor_sequence_ch::gen_out_defn (be_sequence *node)
-1);
}
- delete visitor;
-
*os << " operator[] (CORBA::ULong index);" << be_uidt_nl << be_nl;
*os << "private:" << be_idt_nl;
-
*os << node->local_name () << " *&ptr_;" << be_nl;
*os << "// Assignment from T_var not allowed." << be_nl;
*os << "void operator= (const " << node->local_name ()
<< "_var &);" << be_uidt_nl;
-
*os << "};" << be_nl << be_nl;
return 0;