summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_sequence
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_sequence')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp66
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp139
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp154
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp65
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp584
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/elemtype.cpp253
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp182
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp335
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp199
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ch.cpp154
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ci.cpp321
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_cs.cpp130
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp145
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp265
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp156
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp160
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp257
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp172
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp329
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp223
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ch.cpp166
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp338
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp145
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp141
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp624
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp574
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp378
27 files changed, 0 insertions, 6655 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
deleted file mode 100644
index f1223cd7642..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// any_op_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Any operators for the Sequence
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, any_op_ch, "$Id$")
-
-
-// ***************************************************************************
-// Sequence visitor for generating Any operator declarations in the client header
-// ***************************************************************************
-
-be_visitor_sequence_any_op_ch::be_visitor_sequence_any_op_ch
-(be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_any_op_ch::~be_visitor_sequence_any_op_ch (void)
-{
-}
-
-int
-be_visitor_sequence_any_op_ch::visit_sequence (be_sequence *node)
-{
- if (node->cli_hdr_any_op_gen () || node->imported ())
- return 0;
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- // generate the Any <<= and >>= operators
- os->indent ();
- *os << "void " << idl_global->export_macro ()
- << " operator<<= (CORBA::Any &, const " << node->name ()
- << " &); // copying version" << be_nl;
- *os << "void " << idl_global->export_macro ()
- << " operator<<= (CORBA::Any &, " << node->name ()
- << "*); // noncopying version" << be_nl;
- *os << "CORBA::Boolean " << idl_global->export_macro ()
- << " operator>>= (const CORBA::Any &, "
- << node->name () << " *&);\n";
-
- node->cli_hdr_any_op_gen (1);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
deleted file mode 100644
index 79fb96574fe..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// any_op_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Any operator for the Sequence node
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, any_op_cs, "$Id$")
-
-
-// ***************************************************************************
-// Sequence visitor for generating Any operator declarations in the client
-// stubs file
-// ***************************************************************************
-
-be_visitor_sequence_any_op_cs::be_visitor_sequence_any_op_cs
-(be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_any_op_cs::~be_visitor_sequence_any_op_cs (void)
-{
-}
-
-int
-be_visitor_sequence_any_op_cs::visit_sequence (be_sequence *node)
-{
- if (node->cli_stub_any_op_gen () || node->imported ())
- return 0;
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- // Any <<= and >>= operators
- os->indent ();
- *os << "void operator<<= (" << be_idt << be_idt_nl
- << "CORBA::Any &_tao_any," << be_nl
- << "const " << node->name () << " &_tao_elem" << be_uidt_nl
- << ") // copying" << be_uidt_nl
- << "{" << be_idt_nl
- << node->name () << " *_tao_any_val;" << be_nl
- << "ACE_NEW (_tao_any_val, " << node->name ()
- << " (_tao_elem));" << be_nl
- << "if (!_tao_any_val) return;" << be_nl
- << "ACE_TRY_NEW_ENV" << be_nl
- << "{" << be_idt_nl
- << "_tao_any.replace (" << node->tc_name ()
- << ", _tao_any_val, 1, ACE_TRY_ENV);"
- << " // copy the value" << be_nl
- << "ACE_TRY_CHECK; " << be_uidt_nl
- << "}" << be_nl
- << "ACE_CATCHANY" << be_nl
- << "{" << be_idt_nl
- << "delete _tao_any_val;" << be_uidt_nl
- << "}" << be_nl
- << "ACE_ENDTRY;" << be_uidt_nl
- << "}\n" << be_nl;
-
- *os << "void operator<<= (CORBA::Any &_tao_any, "
- << node->name () << " *_tao_elem) // non copying" << be_nl
- << "{" << be_idt_nl
- << "ACE_TRY_NEW_ENV" << be_nl
- << "{" << be_idt_nl
- << "_tao_any.replace (" << node->tc_name () << ", "
- << "_tao_elem, 0, ACE_TRY_ENV);" << be_nl
- << "ACE_TRY_CHECK;" << be_uidt_nl
- << "}" << be_nl
- << "ACE_CATCHANY {}" << be_nl
- << "ACE_ENDTRY;" << be_uidt_nl
- << "}\n" << be_nl;
-
- *os << "CORBA::Boolean operator>>= (const CORBA::Any &_tao_any, "
- << node->name () << " *&_tao_elem)" << be_nl
- << "{" << be_idt_nl
- << "ACE_TRY_NEW_ENV" << be_nl
- << "{" << be_idt_nl
- << "CORBA::TypeCode_var type = _tao_any.type ();" << be_nl
- << "if (!type->equal (" << node->tc_name ()
- << ", ACE_TRY_ENV)) return 0; // not equal" << be_nl
- << "ACE_TRY_CHECK;" << be_nl
- << "if (_tao_any.any_owns_data ())" << be_nl
- << "{" << be_idt_nl
- << "_tao_elem = (" << node->name () << " *)_tao_any.value ();"
- << be_nl
- << "return 1;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // else any does not own the data
- << "{" << be_idt_nl
- << "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);"
- << be_nl
- << "TAO_InputCDR stream (_tao_any._tao_get_cdr ());"
- << be_nl
- << "if (stream.decode (" << node->tc_name ()
- << ", _tao_elem, 0, ACE_TRY_ENV)" << be_nl
- << " == CORBA::TypeCode::TRAVERSE_CONTINUE)" << be_nl
- << "{" << be_idt_nl
- << "((CORBA::Any *)&_tao_any)->replace ("
- << node->tc_name () << ", _tao_elem, 1, ACE_TRY_ENV);"
- << be_nl
- << "ACE_TRY_CHECK;" << be_nl
- << "return 1;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl // decode failed
- << "{" << be_idt_nl
- << "delete _tao_elem;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "ACE_CATCHANY" << be_nl
- << "{" << be_idt_nl
- << "delete _tao_elem;" << be_nl
- << "return 0;" << be_uidt_nl
- << "}" << be_nl
- << "ACE_ENDTRY;" << be_nl
- << "return 0;" << be_uidt_nl
- << "}\n\n";
-
- node->cli_stub_any_op_gen (1);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp
deleted file mode 100644
index 5ffe0a8aced..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// buffer_type.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for the internal buffer type of the Sequence node
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, buffer_type, "$Id$")
-
-
-// ****************************************************************
-// We have to generate the buffer type in the constructor
-// ****************************************************************
-
-be_visitor_sequence_buffer_type::
-be_visitor_sequence_buffer_type (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_buffer_type::~be_visitor_sequence_buffer_type (void)
-{
-}
-
-// helper
-int
-be_visitor_sequence_buffer_type::visit_node (be_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CH)
- *os << bt->nested_type_name (this->ctx_->scope ());
- else
- *os << bt->name ();
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_predefined_type (be_predefined_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- if (node->pt () == AST_PredefinedType::PT_pseudo)
- *os << node->name () << "_ptr";
- else
- *os << node->name ();
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_sequence (be_sequence *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_interface (be_interface *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CH)
- *os << node->nested_type_name (this->ctx_->scope (), "_ptr");
- else
- *os << node->name () << "_ptr";
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_interface_fwd (be_interface_fwd *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CH)
- *os << node->nested_type_name (this->ctx_->scope (), "_ptr");
- else
- *os << node->name () << "_ptr";
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_string (be_string *)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- *os << "char *";
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_structure (be_structure *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_union (be_union *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_enum (be_enum *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_exception (be_exception *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_array (be_array *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_typedef (be_typedef *node)
-{
- this->ctx_->alias (node); // set the alias node
- if (node->primitive_base_type ()->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_buffer_type::"
- "visit_typedef - "
- "accept on primitive type failed\n"),
- -1);
- }
- this->ctx_->alias (0);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
deleted file mode 100644
index e689f79f608..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// cdr_op_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for CDR operators for sequences. This uses
-// compiled marshaling.
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, cdr_op_ch, "$Id$")
-
-// ***************************************************************************
-// Sequence visitor for generating CDR operator declarations in the client header
-// ***************************************************************************
-
-be_visitor_sequence_cdr_op_ch::be_visitor_sequence_cdr_op_ch
-(be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_cdr_op_ch::~be_visitor_sequence_cdr_op_ch (void)
-{
-}
-
-int
-be_visitor_sequence_cdr_op_ch::visit_sequence (be_sequence *node)
-{
- if (node->cli_hdr_cdr_op_gen () || node->imported ())
- return 0;
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- // generate the CDR << and >> operator declarations
- os->indent ();
- *os << "CORBA::Boolean " << idl_global->export_macro ()
- << " operator<< (TAO_OutputCDR &, const " << node->name ()
- << " &); // " << be_nl;
- *os << "CORBA::Boolean " << idl_global->export_macro ()
- << " operator>> (TAO_InputCDR &, "
- << node->name () << " &);\n";
-
-
- node->cli_hdr_cdr_op_gen (1);
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
deleted file mode 100644
index 26d99d9e015..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
+++ /dev/null
@@ -1,584 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// cdr_op_cs.cpp
-//
-// = DESCRIPTION
-// Visitor for code generation of Sequences for the CDR operators
-// in the client stubs.
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, cdr_op_cs, "$Id$")
-
-
-// ***************************************************************************
-// Sequence visitor for generating CDR operator declarations in the client
-// stubs file
-// ***************************************************************************
-
-be_visitor_sequence_cdr_op_cs::be_visitor_sequence_cdr_op_cs
-(be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_cdr_op_cs::~be_visitor_sequence_cdr_op_cs (void)
-{
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node)
-{
- if (this->ctx_->alias ())
- {
- // we are here because the base type of the sequence node is itself a sequence
- // i.e., this is a case of sequence of sequence
- return this->visit_node (node);
- }
- else
- {
- TAO_OutStream *os = this->ctx_->stream ();
-
- be_type *bt; // base type of the sequence
-
- if (node->cli_stub_cdr_op_gen () || node->imported ())
- return 0;
-
- // retrieve the type
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_cdr_op_cs::"
- "visit_sequence - "
- "Bad base type\n"),
- -1);
- }
-
- // generate the CDR << and >> operator defns
-
- // save the sequence node for further use
- this->ctx_->node (node);
-
- // set the sub state as generating code for the output operator
- this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
- *os << "ACE_INLINE CORBA::Boolean operator<< (" << be_idt << be_idt_nl
- << "TAO_OutputCDR &strm," << be_nl
- << "const " << node->name ()
- << " &_tao_sequence" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- // first encode the sequence length
- *os << "if (strm << _tao_sequence.length ())" << be_nl
- << "{" << be_idt_nl;
- // now encode the sequence elements
- *os << "// encode all elements" << be_nl;
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_cdr_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- *os << "}" << be_nl
- << "return 0; // error" << be_uidt_nl
- << "}\n\n";
-
- // set the sub state as generating code for the input operator
- os->indent ();
- this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
- *os << "ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &strm, "
- << node->name () << " &_tao_sequence)" << be_nl
- << "{" << be_idt_nl;
- // first retrieve the length and adjust the sequence length accordingly
- *os << "CORBA::ULong _tao_seq_len;" << be_nl;
- *os << "if (strm >> _tao_seq_len)" << be_nl
- << "{" << be_idt_nl;
- // now check if the length does not exceed the maximum. We do this only
- // for bounded sequences
-
- AST_Expression *expr = node->max_size ();
- // dimension value
- if ((expr == NULL) || ((expr != NULL) && (expr->ev () == NULL)))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_sequence - "
- "bad sequence dimension\n"),
- -1);
- }
- if (expr->ev ()->et == AST_Expression::EV_ulong)
- {
- if (expr->ev ()->u.ulval > 0)
- {
- // we are dealing with a bounded sequence. Check if we are within
- // bounds
- *os << "if (_tao_seq_len <= _tao_sequence.maximum ())" << be_nl
- << "{" << be_idt_nl;
- }
- }
- else
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_sequence - "
- "bad sequence dimension value\n"),
- -1);
- }
- *os << "// set the length of the sequence" << be_nl
- << "_tao_sequence.length (_tao_seq_len);" << be_nl;
- *os << "// retrieve all the elements" << be_nl;
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_cdr_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- if (expr->ev ()->u.ulval > 0)
- {
- // we are dealing with a bounded sequence.
- *os << "}" << be_uidt_nl;
- }
- *os << "}" << be_nl
- << "return 0; // error" << be_uidt_nl
- << "}\n\n";
-
- node->cli_stub_cdr_op_gen (1);
- }
- return 0;
-}
-
-// handle all the base types
-
-int
-be_visitor_sequence_cdr_op_cs::visit_array (be_array *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_enum (be_enum *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_interface (be_interface *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_interface_fwd (be_interface_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_predefined_type (be_predefined_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_pseudo:
- case AST_PredefinedType::PT_any:
- // let the helper handle this
- return this->visit_node (node);
- case AST_PredefinedType::PT_void:
- // error
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_predefined_type - "
- "Bad primitive type\n"
- ), -1);
- default:
- // all other primitive types. Handle them as shown below
- break;
- };
-
- // we get here if the "type" of individual elements of the sequence is a
- // primitive type. In this case, we treat the sequence as a single
- // dimensional sequence (even of it was multi-dimensional), and pass
- // the total length of the sequence as a cross product of the
- // dimensions
-
- // grab the sequence node
- be_sequence *sequence = this->ctx_->be_node_as_sequence ();
-
- if (!sequence)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_predefined_type - "
- "bad sequence node\n"),
- -1);
- }
-
- // handle octet sequences using the optimizations provided by the TAO ORB
- // Core. If these optimizations are not available, then use the normal form
-
- if (node->pt () == AST_PredefinedType::PT_octet)
- {
- *os << "\n#if defined (TAO_NO_COPY_OCTET_SEQUENCES)" << be_nl;
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_CDR_INPUT:
- {
- *os << "if (ACE_BIT_DISABLED (strm.start ()->flags (),"
- << "ACE_Message_Block::DONT_DELETE))" << be_nl
- << "{" << be_idt_nl
- << "TAO_Unbounded_Sequence<CORBA::Octet> *oseq = " << be_nl
- << " ACE_dynamic_cast(TAO_Unbounded_Sequence<CORBA::Octet>*, "
- << "&_tao_sequence);" << be_nl;
- *os << "oseq->replace (_tao_seq_len, strm.start ());"
- << be_nl
- << "oseq->mb ()->wr_ptr (oseq->mb()->rd_ptr () + "
- << "_tao_seq_len);" << be_nl
- << "strm.skip_bytes (_tao_seq_len);" << be_nl
- << "return 1;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "return strm.read_octet_array ("
- << "_tao_sequence.get_buffer (), _tao_seq_len);"
- << be_uidt_nl;
- }
- break;
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- {
- *os << "{" << be_idt_nl
- << "TAO_Unbounded_Sequence<CORBA::Octet> *oseq = " << be_nl
- << " ACE_dynamic_cast (TAO_Unbounded_Sequence<CORBA::Octet>*, "
- << "(" << sequence->name () << " *)&_tao_sequence);" << be_nl;
- *os << "if (oseq->mb ())" << be_idt_nl
- << "return strm.write_octet_array_mb (oseq->mb ());"
- << be_uidt_nl
- << "else" << be_idt_nl
- << "return strm.write_octet_array ("
- << "_tao_sequence.get_buffer (), _tao_sequence.length ());"
- << be_uidt << be_uidt_nl
- << "}" << be_nl;
- }
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_predefined_type - "
- "bad sub state\n"),
- -1);
- }
- *os << "\n#else /* TAO_NO_COPY_OCTET_SEQUENCES */" << be_nl;
- }
-
- *os << "return strm.";
- // based on our substate, we may be reading from a stream or writing into a
- // stream
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_CDR_INPUT:
- *os << "read_";
- break;
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- *os << "write_";
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_predefined_type - "
- "bad sub state\n"),
- -1);
- }
-
- // determine what kind of sequence are we reading/writing
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_long:
- *os << "long_array";
- break;
- case AST_PredefinedType::PT_ulong:
- *os << "ulong_array";
- break;
- case AST_PredefinedType::PT_short:
- *os << "short_array";
- break;
- case AST_PredefinedType::PT_ushort:
- *os << "ushort_array";
- break;
- case AST_PredefinedType::PT_octet:
- *os << "octet_array";
- break;
- case AST_PredefinedType::PT_char:
- *os << "char_array";
- break;
- case AST_PredefinedType::PT_wchar:
- *os << "wchar_array";
- break;
- case AST_PredefinedType::PT_float:
- *os << "float_array";
- break;
- case AST_PredefinedType::PT_double:
- *os << "double_array";
- break;
- case AST_PredefinedType::PT_longlong:
- *os << "longlong_array";
- break;
- case AST_PredefinedType::PT_ulonglong:
- *os << "ulonglong_array";
- break;
- case AST_PredefinedType::PT_longdouble:
- *os << "longdouble_array";
- break;
- case AST_PredefinedType::PT_boolean:
- *os << "boolean_array";
- break;
- default:
- // error
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_predefined_type - "
- "bad primitive type for optimized code gen\n"),
- -1);
- }
-
- // handle special case to avoid compiler errors
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_char:
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_CDR_INPUT:
- *os << " ((char *)_tao_sequence.get_buffer (), ";
- break;
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- *os << " ((const char *)_tao_sequence.get_buffer (), ";
- break;
- }
- break;
- default:
- *os << " (_tao_sequence.get_buffer (), ";
- break;
- }
-
- *os << "_tao_sequence.length ());" << be_uidt_nl;
-
- if (node->pt () == AST_PredefinedType::PT_octet)
- *os << "\n#endif /* TAO_NO_COPY_OCTET_SEQUENCES */" << be_nl;
- return 0;
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_string (be_string *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_structure (be_structure *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_union (be_union *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_typedef (be_typedef *node)
-{
- this->ctx_->alias (node); // save the typedef node for use in code generation
- // as we visit the base type
-
- // the node to be visited in the base primitve type that gets typedefed
- be_type *bt = node->primitive_base_type ();
- if (!bt || (bt->accept (this) == -1))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_typedef - "
- "Bad primitive type\n"
- ), -1);
- }
-
- this->ctx_->alias (0);
- return 0;
-}
-
-// helper
-int
-be_visitor_sequence_cdr_op_cs::visit_node (be_type *bt)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_sequence *node = this->ctx_->be_node_as_sequence ();
-
- if (!node)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad sequence node\n"),
- -1);
- }
-
- // initialize a boolean variable
- *os << "CORBA::Boolean _tao_marshal_flag = 1;" << be_nl;
-
- // we get here if the "type" of individual elements of the sequence is not a
- // primitive type. In this case, we are left with no other alternative but to
- // encode/decode element by element
-
- AST_Expression *expr = node->max_size ();
- // dimension value
- if ((expr == NULL) || ((expr != NULL) && (expr->ev () == NULL)))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad sequence dimension\n"),
- -1);
- }
- if (expr->ev ()->et == AST_Expression::EV_ulong)
- {
- *os << "for (CORBA::ULong i = 0; i < _tao_sequence.length ()"
- << " && _tao_marshal_flag; "
- << "i++)" << be_idt_nl;
- }
- else
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad sequence dimension value\n"),
- -1);
- }
-
- // if the type was a string, an obj ref, or a pseudo-obj, we are dealing with
- // a manager type and hence we must use the appropriate in () and out ()
- // methods.
- //
-
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_CDR_INPUT:
- *os << "_tao_marshal_flag = (strm >> ";
- switch (bt->node_type ())
- {
- case AST_Decl::NT_string:
- {
- be_string *str = be_string::narrow_from_decl (bt);
-
- if (!str)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad string node\n"),
- -1);
- }
- if (str->max_size ()->ev ()->u.ulval == 0)
- {
- // unbounded
- *os << "_tao_sequence[i].out ()";
- }
- else
- {
- *os << "CORBA::Any::to_string (_tao_sequence[i].out (), "
- << str->max_size ()->ev ()->u.ulval - 1 << ")";
- }
- }
- break;
- case AST_Decl::NT_interface:
- case AST_Decl::NT_interface_fwd:
- *os << "_tao_sequence[i].out ()";
- break;
- case AST_Decl::NT_pre_defined:
- {
- // we need to separately handle this case of pseudo objects because
- // they have a _var type
- be_predefined_type *pt = be_predefined_type::narrow_from_decl (bt);
- if (!pt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad predefined type node\n"),
- -1);
- }
- if (pt->pt () == AST_PredefinedType::PT_pseudo)
- {
- *os << "_tao_sequence[i].out ()";
- }
- else
- {
- *os << "_tao_sequence[i]";
- }
- }
- break;
- default:
- *os << "_tao_sequence[i]";
- }
- *os << ");";
- break;
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- *os << "_tao_marshal_flag = (strm << _tao_sequence[i]";
- switch (bt->node_type ())
- {
- case AST_Decl::NT_string:
- case AST_Decl::NT_interface:
- case AST_Decl::NT_interface_fwd:
- *os << ".in ()";
- break;
- case AST_Decl::NT_pre_defined:
- {
- be_predefined_type *pt = be_predefined_type::narrow_from_decl (bt);
- if (!pt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad predefined type node\n"),
- -1);
- }
- if (pt->pt () == AST_PredefinedType::PT_pseudo)
- {
- *os << ".in ()";
- }
- }
- }
- *os << ");";
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cdr_op_cs::"
- "visit_node - "
- "bad sub state\n"),
- -1);
- }
-
- *os << be_uidt_nl;
- *os << "return _tao_marshal_flag;" << be_uidt_nl;
-
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/elemtype.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/elemtype.cpp
deleted file mode 100644
index d81d919d9d4..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/elemtype.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// elemtype.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for the element type for the Sequence
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, elemtype, "$Id$")
-
-
-// ***********************************************************
-// sequence element type visitor for return types of [] methods
-// ***********************************************************
-
-
-be_visitor_sequence_elemtype::
-be_visitor_sequence_elemtype (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_elemtype::~be_visitor_sequence_elemtype (void)
-{
-}
-
-// helper
-int
-be_visitor_sequence_elemtype::visit_node (be_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- *os << bt->nested_type_name (this->ctx_->scope ()) << " &";
- else
- *os << bt->name () << " &";
- return 0;
-}
-
-int
-be_visitor_sequence_elemtype::visit_predefined_type (be_predefined_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_pseudo:
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- if (this->ctx_->state() != TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- if (this->ctx_->scope()->fullname())
- *os << this->ctx_->scope()->fullname() << "::";
- }
-
- *os << "_TAO_Object_Manager_"
- << this->ctx_->scope()->flatname()
- << "_"
- << bt->flatname ();
-
- os->gen_else_AHETI();
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- *os << "TAO_Object_Manager<"
- << bt->nested_type_name (this->ctx_->scope ()) << "> ";
- }
- else
- *os << "TAO_Object_Manager<" << bt->name () << "> ";
-
- os->gen_endif_AHETI();
- break;
- default:
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- *os << bt->nested_type_name (this->ctx_->scope ()) << " &";
- else
- *os << bt->name () << " &";
- }
- return 0;
-}
-
-int
-be_visitor_sequence_elemtype::visit_sequence (be_sequence *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_interface (be_interface *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- if (this->ctx_->state() != TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- if (this->ctx_->scope()->fullname())
- *os << this->ctx_->scope()->fullname() << "::";
- }
-
- *os << "_TAO_Object_Manager_"
- << this->ctx_->scope()->flatname()
- << "_"
- << bt->flatname ();
-
- os->gen_else_AHETI();
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- *os << "TAO_Object_Manager<"
- << bt->nested_type_name (this->ctx_->scope ()) << "> ";
- }
- else
- *os << "TAO_Object_Manager<" << bt->name () << "> ";
-
- os->gen_endif_AHETI();
-
- return 0;
-}
-
-int
-be_visitor_sequence_elemtype::visit_interface_fwd (be_interface_fwd *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- os->gen_ifdef_AHETI();
-
- if (this->ctx_->state() != TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- if (this->ctx_->scope()->fullname())
- *os << this->ctx_->scope()->fullname() << "::";
- }
-
- *os << "_TAO_Object_Manager_"
- << this->ctx_->scope()->flatname()
- << "_"
- << bt->flatname ();
-
- os->gen_else_AHETI();
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH)
- {
- *os << "TAO_Object_Manager<"
- << bt->nested_type_name (this->ctx_->scope ()) << "> ";
- }
- else
- *os << "TAO_Object_Manager<" << bt->name () << "> ";
-
- os->gen_endif_AHETI();
-
- return 0;
-}
-
-int
-be_visitor_sequence_elemtype::visit_string (be_string *)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- *os << "TAO_SeqElem_String_Manager ";
- return 0;
-}
-
-int
-be_visitor_sequence_elemtype::visit_structure (be_structure *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_union (be_union *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_enum (be_enum *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_exception (be_exception *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_array (be_array *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_elemtype::visit_typedef (be_typedef *node)
-{
- this->ctx_->alias (node);
- if (node->primitive_base_type ()->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_elemtype::"
- "visit_typedef - "
- "accept on primitive type failed\n"),
- -1);
- }
- this->ctx_->alias (0);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp
deleted file mode 100644
index f9e2ef18168..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_obj_sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_obj_sequence_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_bounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- const char * object_manager = node->object_manager_name ();
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- //forward declaration of the object manager;
- *os << "class " << object_manager << ";" << be_nl << be_nl;
-
- *os << "class " << class_name << " : public TAO_Bounded_Base_Sequence" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl
- << "// = Initialization and termination methods." << be_nl
- << be_nl;
-
- // default constructor
- *os << class_name << " (void);" << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong length," << be_idt_nl;
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os <<"* *value," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt_nl;
-
- // constructor
- *os << class_name << " (const " << class_name << " &rhs);" << be_nl
- << "// Copy constructor." << be_nl;
-
- // destructor
- *os << "virtual ~" << class_name << " (void);" << be_nl
- << "// destructor" << be_nl;
-
- // operator=
- *os << class_name << " &operator= (const " << class_name << " &rhs);" << be_nl
- << "// Assignment from another Bounded sequence." << be_nl;
-
- // operator[]
- *os << object_manager << " operator[] (CORBA::ULong index) const;"
- << "// Read-write accessor." << be_nl;
-
- // allocbuf
- *os << "static ";
- pt->accept (visitor);
- *os << " **allocbuf (CORBA::ULong length); "
- << "// Allocate storage for a sequence.." << be_nl;
-
- // freebuf
- *os << "static void freebuf (";
- pt->accept (visitor);
- *os << " **buffer);" << be_nl;
-
- // allocate_buffer
- *os << "// The Base_Sequence functions, please see tao/sequence.h" << be_nl
- << "virtual void _allocate_buffer (CORBA::ULong length);" << be_nl;
-
- // deallocate_buffer
- *os << "virtual void _deallocate_buffer (void);" << be_nl;
-
- // get_buffer
- pt->accept(visitor);
- *os << "* *get_buffer (CORBA::Boolean orphan = 0);" << be_nl;
-
- // get_buffer
- *os << "const ";
- pt->accept (visitor);
- *os << "* *get_buffer (void) const;" << be_nl;
-
- // _shrink_buffer
- *os << "virtual void _shrink_buffer (CORBA::ULong nl, CORBA::ULong ol);" << be_nl;
-
- be_predefined_type *prim = be_predefined_type::narrow_from_decl (pt);
- if ((pt->node_type () != AST_Decl::NT_pre_defined) ||
- (prim && (prim->pt () == AST_PredefinedType::PT_pseudo) &&
- (!ACE_OS::strcmp (prim->local_name ()->get_string (), "Object"))))
- {
- // Pseudo objects do not require this methods.
- *os << "virtual void _downcast (" << be_idt << be_idt_nl
- << "void* target," << be_nl
- << "CORBA_Object *src," << be_nl
- << "CORBA_Environment &ACE_TRY_ENV = " << be_idt_nl
- << "CORBA::Environment::default_environment ()"
- << be_uidt << be_uidt_nl
- << ");" << be_uidt_nl;
-
- *os << "virtual CORBA_Object* _upcast (void *src) const;" << be_nl;
- }
- *os << be_uidt_nl << "};\n";
-
- os->gen_endif ();
-
- // generate #endif for AHETI
- os->gen_endif_AHETI ();
-
- // Due to a bug with g++2.7.2.3 we have to generate the object manager class
- // after the sequence class and instead forward declare it above
-
- this->gen_object_manager (node);
- // Generate the code for the object manager
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp
deleted file mode 100644
index 83be07c508f..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ci.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_obj_sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_obj_sequence_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_bounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- this->gen_object_manager (node);
- // Generate the code for the object manager
-
- static char object_manager [NAMEBUFSIZE];
- ACE_OS::memset (object_manager, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (object_manager, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- node->object_manager_name ());
- }
- else
- {
- ACE_OS::sprintf (object_manager, "%s",
- node->object_manager_name ());
- }
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // first generate the static methods since they are used by others. Sinc
- // ethey are inlined, their definition needs to come before their use else
- // some compilers give lost of warnings.
-
- // allocbuf
- *os << "ACE_INLINE "; pt->accept (visitor);
- *os << " **" << be_nl;
- *os << full_class_name << "::allocbuf (CORBA::ULong length) "
- << "// Allocate storage for a sequence.." << be_nl
- << "{" << be_idt_nl;
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os <<" **buf;" << be_nl
- << be_nl
- << "ACE_NEW_RETURN (buf, ";
- pt->accept (visitor);
- *os << "*[" << node->max_size () << "], 0);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < " << node->max_size () << "; i++)" << be_idt_nl
- << "buf[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << be_nl
- << "return buf;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // freebuf
- *os << "ACE_INLINE void" << be_nl
- << full_class_name << "::freebuf (";
- pt->accept (visitor);
- *os << " **buffer)" << be_nl
- << "{" << be_idt_nl
- << "for (CORBA::ULong i = 0; i < " << node->max_size () << "; ++i)" << be_idt_nl
- << "if (buffer[i] != ";
- pt->accept (visitor);
- *os << "::_nil ())" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (buffer[i]);" << be_nl
- << "buffer[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_uidt_nl
- << be_nl
- << "delete[] buffer;" << be_uidt_nl
- << "} " << be_nl
- << be_nl;
-
- // constructor
- *os << "// default ctor" << be_nl;
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (void)" << be_idt_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size ()
- << ", " << full_class_name << "::allocbuf (" << node->max_size () << "))" << be_uidt_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name
- << " (CORBA::ULong length," << be_idt_nl;
- pt->accept (visitor);
- *os <<"* *value," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << "// Constructor from data." << be_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size () << ", length, value, release)" << be_nl
- << "{" << be_nl
- << " this->_allocate_buffer (" << node->max_size () << ");" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (const "
- << full_class_name << " &rhs)" << be_nl
- << "// Copy constructor." << be_idt_nl
- << ": TAO_Bounded_Base_Sequence (rhs)" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp1 = allocbuf (" << node->max_size () << ");" << be_nl;
- pt->accept(visitor);
- *os <<" ** const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << "for (CORBA::ULong i = 0; i < rhs.length_; i++)" << be_idt_nl
- << "tmp1[i] = "; pt->accept (visitor); *os << "::_duplicate (tmp2[i]);" << be_uidt_nl
- << "this->buffer_ = tmp1;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // assignment operator
- *os << "ACE_INLINE " << full_class_name << " &" << be_nl
- << full_class_name << "::operator= (const "
- << full_class_name << " &rhs)" << be_nl
- << "// Assignment from another Bounded sequence." << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (tmp[i]);" << be_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_nl
- << "// No need to reallocate the buffer since it is always of size" << be_nl
- << "// " << node->max_size () << "" << be_nl
- << "#if 0" << be_idt_nl
- << "if (this->maximum_ < rhs.maximum_)" << be_nl
- << "{" << be_idt_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "#endif /* 0 */" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << be_nl
- << "TAO_Bounded_Base_Sequence::operator= (rhs);" << be_nl
- << be_nl;
- pt->accept(visitor);
- *os <<" **tmp1 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl;
- pt->accept(visitor);
- *os <<" ** const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << "for (CORBA::ULong i=0; i < rhs.length_; ++i)" << be_idt_nl
- << "tmp1[i] = ";
- pt->accept (visitor);
- *os << "::_duplicate (tmp2[i]);" << be_uidt_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator[]
- *os << "ACE_INLINE " << object_manager << be_nl
- << full_class_name << "::operator[] (CORBA::ULong index) const"
- << " // Read-write accessor." << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (index < this->maximum_);" << be_nl;
- pt->accept(visitor);
- *os <<" **const tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, this->buffer_);" << be_nl
- << "return " << object_manager << " (tmp + index, this->release_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE ";
- pt->accept(visitor);
- *os << " **" << be_nl;
- *os << full_class_name << "::get_buffer (CORBA::Boolean orphan)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os << " **result = 0;" << be_nl
- << "if (orphan == 0)" << be_nl
- << "{" << be_idt_nl
- << "// We retain ownership." << be_nl
- << "if (this->buffer_ == 0)" << be_nl
- << "{" << be_idt_nl
- << "result = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl
- << "this->buffer_ = result;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl
- << "{" << be_idt_nl
- << "result = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "**, this->buffer_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else // if (orphan == 1)" << be_nl
- << "{" << be_idt_nl
- << "if (this->release_ != 0)" << be_nl
- << "{" << be_idt_nl
- << "// We set the state back to default and relinquish" << be_nl
- << "// ownership." << be_nl
- << "result = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "**,this->buffer_);" << be_nl
- << "this->maximum_ = 0;" << be_nl
- << "this->length_ = 0;" << be_nl
- << "this->buffer_ = 0;" << be_nl
- << "this->release_ = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "return result;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << "* *" << be_nl
- << full_class_name << "::get_buffer (void) const" << be_nl
- << "{" << be_idt_nl
- << "return ACE_reinterpret_cast(const ";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, this->buffer_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- os->gen_endif ();
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp
deleted file mode 100644
index d1f50bfd03d..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_cs.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_obj_sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client impl
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_obj_sequence_cs, "$Id$")
-
-
-int
-be_visitor_sequence_cs::gen_bounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- static char object_manager [NAMEBUFSIZE];
- ACE_OS::memset (object_manager, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (object_manager, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- node->object_manager_name ());
- }
- else
- {
- ACE_OS::sprintf (object_manager, "%s",
- node->object_manager_name ());
- }
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // first generate the static methods since they are used by others. Sinc
- // ethey are inlined, their definition needs to come before their use else
- // some compilers give lost of warnings.
-
- // allocate_buffer
- *os << "// The Base_Sequence functions, please see tao/sequence.h" << be_nl
- << "void " << be_nl
- << full_class_name << "::_allocate_buffer (CORBA::ULong length)" << be_nl
- << "{" << be_idt_nl
- << "// For this class memory is never reallocated so the implementation" << be_nl
- << "// is *really* simple." << be_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf (length);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // deallocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_deallocate_buffer (void)" << be_nl
- << "{" << be_idt_nl
- << "if (this->buffer_ == 0 || this->release_ == 0)" << be_idt_nl
- << "return;" << be_uidt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = 0;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // destructor
- *os << full_class_name << "::~" << class_name << " (void)" << be_nl
- << "// destructor" << be_nl
- << "{" << be_idt_nl
- << "this->_deallocate_buffer ();" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // _shrink_buffer
- *os << "void" << be_nl
- << full_class_name << "::_shrink_buffer (CORBA::ULong nl, CORBA::ULong ol)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = nl; i < ol; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (tmp[i]);" << be_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}\n" << be_nl;
-
- be_predefined_type *prim = be_predefined_type::narrow_from_decl (pt);
- if ((pt->node_type () != AST_Decl::NT_pre_defined) ||
- (prim && (prim->pt () == AST_PredefinedType::PT_pseudo) &&
- (!ACE_OS::strcmp (prim->local_name ()->get_string (), "Object"))))
- {
- // Pseudo objects do not require this methods.
- *os << "void" << be_nl
- << full_class_name << "::_downcast (" << be_idt << be_idt_nl
- << "void* target," << be_nl
- << "CORBA_Object *src," << be_nl
- << "CORBA::Environment &ACE_TRY_ENV" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os << " **tmp = ACE_static_cast (";
- pt->accept (visitor);
- *os << "**, target);" << be_nl
- << "*tmp = ";
- pt->accept (visitor);
- *os << "::_narrow (src, ACE_TRY_ENV);" << be_uidt_nl
- << "}\n" << be_nl;
-
- *os << "CORBA_Object*" << be_nl
- << full_class_name << "::_upcast (void *src) const" << be_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os << " **tmp = ACE_static_cast (";
- pt->accept (visitor);
- *os << "**, src);" << be_nl
- << "return *tmp;" << be_uidt_nl
- << "}" << be_nl;
- }
-
- os->gen_endif ();
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ch.cpp
deleted file mode 100644
index 2b6134d63ae..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ch.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_sequence_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_bounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- *os << "class " << class_name << " : public TAO_Bounded_Base_Sequence" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl
- << "// = Initialization and termination methods." << be_nl
- << be_nl;
-
- // default Constructor
- *os << class_name << " (void);" << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong length," << be_idt_nl;
- pt->accept (visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt_nl;
-
- // constructor
- *os << class_name << " (const " << class_name << " &rhs);" << be_nl
- << "// Copy constructor." << be_nl;
-
- // operator=
- *os << class_name << " &operator= (const " << class_name << " &rhs);" << be_nl
- << "// Assignment operator. " << be_nl;
-
- // destructor
- *os << "virtual ~" << class_name << " (void); // Dtor." << be_nl;
-
- // Accessors
- // operator[]
- *os << "// = Accessors." << be_nl;
- pt->accept(visitor);
- *os <<" &operator[] (CORBA::ULong i);// operator []" << be_nl;
-
- // operator[]
- *os << "const ";
- pt->accept (visitor);
- *os << " &operator[] (CORBA::ULong i) const;" << be_nl;
-
- // Static Operations
- *os << "// = Static operations." << be_nl
- << "static ";
- pt->accept (visitor);
- *os << " *allocbuf (CORBA::ULong); // Allocate storage for the sequence." << be_nl;
-
- // free_buf
- *os << "static void freebuf (";
- pt->accept (visitor);
- *os << " *buffer); // Free the sequence." << be_nl;
-
- // allocate_buffer
- *os << "virtual void _allocate_buffer (CORBA::ULong length);" << be_nl;
-
- // deallocate_buffer
- *os << "virtual void _deallocate_buffer (void);" << be_nl;
-
- // get_buffer
- pt->accept(visitor);
- *os << " *get_buffer (CORBA::Boolean orphan = 0);" << be_nl;
-
- // get_buffer
- *os << "const ";
- pt->accept (visitor);
- *os << " *get_buffer (void) const;" << be_nl;
-
- // replace
- *os << "void replace (CORBA::ULong max," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept(visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt << be_uidt_nl;
-
- *os << "};\n";
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ci.cpp
deleted file mode 100644
index 30935cf4c19..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_ci.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_sequence_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_bounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // first generate the static methods since they are used by others. Sinc
- // ethey are inlined, their definition needs to come before their use else
- // some compilers give lost of warnings.
-
- // Static Operations
- // allocbuf
- *os << "// = Static operations." << be_nl
- << "ACE_INLINE ";
-
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence::"
- "gen_bounded_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << " *" << be_nl
- << full_class_name << "::allocbuf (CORBA::ULong) "
- << "// Allocate storage for the sequence." << be_nl
- << "{" << be_idt_nl
- << "return new ";
- pt->accept (visitor);
- *os << "[" << node->max_size () << "];" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // free_buf
- *os << "ACE_INLINE void " << be_nl
- << full_class_name << "::freebuf (";
- pt->accept (visitor);
- *os << " *buffer) // Free the sequence." << be_nl
- << "{" << be_idt_nl
- << "delete [] buffer;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // Constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (void)" << be_nl
- << "// Default constructor." << be_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size ()
- << ", 0, " << full_class_name << "::allocbuf (" << node->max_size ()
- << "), 0)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl;
- *os << full_class_name << "::" << class_name << " (CORBA::ULong length," << be_idt_nl;
- pt->accept (visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << "// Constructor using the data and memory management flag." << be_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size () << ", length, data, release)" << be_nl
- << "{" << be_nl
- << " this->_allocate_buffer (" << node->max_size () << ");" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name
- << " (const " << full_class_name << " &rhs)" << be_nl
- << "// Copy constructor." << be_idt_nl
- << ": TAO_Bounded_Base_Sequence (rhs)" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" *tmp1 = " << full_class_name << "::allocbuf (" << node->max_size ()
- << ");" << be_nl
- << be_nl;
- pt->accept(visitor);
- *os <<" * const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "tmp1[i] = tmp2[i];" << be_uidt_nl
- << be_nl
- << "this->buffer_ = tmp1;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator=
- *os << "ACE_INLINE " << full_class_name << " &" << be_nl
- << full_class_name << "::operator= (const " << full_class_name << " &rhs)" << be_nl
- << "// Assignment operator. " << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf (rhs.maximum_);" << be_nl
- << be_nl
- <<"TAO_Bounded_Base_Sequence::operator= (rhs);" << be_nl
- << be_nl;
- pt->accept(visitor);
- *os <<"* tmp1 = ACE_reinterpret_cast (";
- pt->accept(visitor);
- *os << " *, this->buffer_);" << be_nl;
- pt->accept(visitor);
- *os <<"* const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "tmp1[i] = tmp2[i];" << be_uidt_nl
- << be_nl
- << "return *this;" << be_uidt_nl << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // Accessors
- *os << "// = Accessors." << be_nl;
- *os << "ACE_INLINE ";
- pt->accept(visitor);
- *os << " &" << be_nl;
- *os << full_class_name << "::operator[] (CORBA::ULong i)// operator []" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (i < this->maximum_);" << be_nl;
- pt->accept(visitor);
- *os <<" *tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "*,this->buffer_);" << be_nl
- << "return tmp[i];" << be_uidt_nl
- << "}" << be_nl;
-
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << " &" << be_nl
- << full_class_name << "::operator[] (CORBA::ULong i) const// operator []" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (i < this->maximum_);" << be_nl
- << "const ";
- pt->accept (visitor);
- *os << "* tmp = ACE_reinterpret_cast (const ";
- pt->accept (visitor);
- *os << "* ACE_CAST_CONST,this->buffer_);" << be_nl
- << "return tmp[i];" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE ";
- pt->accept(visitor);
- *os << " *" << be_nl
- << full_class_name << "::get_buffer (CORBA::Boolean orphan)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os << " *result = 0;" << be_nl
- << "if (orphan == 0)" << be_nl
- << "{" << be_idt_nl
- << "// We retain ownership." << be_nl
- << "if (this->buffer_ == 0)" << be_nl
- << "{" << be_idt_nl
- << "result = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl
- << "this->buffer_ = result;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl
- << "{" << be_idt_nl
- << "result = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "*, this->buffer_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else // if (orphan == 1)" << be_nl
- << "{" << be_idt_nl
- << "if (this->release_ != 0)" << be_nl
- << "{" << be_idt_nl
- << "// We set the state back to default and relinquish" << be_nl
- << "// ownership." << be_nl
- << "result = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "*,this->buffer_);" << be_nl
- << "this->maximum_ = 0;" << be_nl
- << "this->length_ = 0;" << be_nl
- << "this->buffer_ = 0;" << be_nl
- << "this->release_ = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "return result;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << " *" << be_nl
- << full_class_name << "::get_buffer (void) const" << be_nl
- << "{" << be_idt_nl
- << "return ACE_reinterpret_cast(const ";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, this->buffer_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // replace
- *os << "ACE_INLINE void " << be_nl
- << full_class_name << "::replace (CORBA::ULong max," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept(visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << "{" << be_idt_nl
- << "this->maximum_ = max;" << be_nl
- << "this->length_ = length;" << be_nl
- << "if (this->buffer_ && this->release_ == 1)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<"* tmp = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "* ACE_CAST_CONST, this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_uidt_nl
- << "}" << be_nl
- << "this->buffer_ = data;" << be_nl
- << "this->release_ = release;" << be_uidt_nl
- << "}" << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_cs.cpp
deleted file mode 100644
index 005b454c57f..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_sequence_cs.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_sequence_cs, "$Id$")
-
-
-int
-be_visitor_sequence_cs::gen_bounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // allocate_buffer
- *os << "void " << be_nl
- << full_class_name << "::_allocate_buffer (CORBA::ULong length)" << be_nl
- << "// allocate a buffer of the requested length. The buffer is allocated for the" << be_nl
- << "// right type" << be_nl
- << "{" << be_idt_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf ("
- << node->max_size () << ");" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // deallocate_buffer
- *os << "void " << be_nl
- << full_class_name << "::_deallocate_buffer (void)" << be_nl
- << "// deallocate the buffer" << be_nl
- << "{" << be_idt_nl
- << "if (this->buffer_ == 0 || this->release_ == 0)" << be_idt_nl
- << "return;" << be_uidt_nl;
- pt->accept(visitor);
- *os <<" *tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " *, this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = 0;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // destructor
- *os << full_class_name << "::~" << class_name << " (void) // Dtor." << be_nl
- << "{" << be_idt_nl
- << "this->_deallocate_buffer ();" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp
deleted file mode 100644
index 9d8e5bb6251..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ch.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_str_sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_str_sequence_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_bounded_str_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
-
-
- *os << "class " << class_name << " : public TAO_Bounded_Base_Sequence" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl;
-
- // constructor
- *os << class_name << " (void);" << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong length," << be_idt_nl
- << "char* *value," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt_nl;
-
- // constructor
- *os << class_name << " (const " << class_name << " &rhs);" << be_nl;
-
- // operator=
- *os << class_name << " &operator= (const " << class_name << " &rhs);" << be_nl;
-
- // destructor
- *os << "virtual ~" << class_name << " (void);" << be_nl;
-
- // operator[]
- *os << "TAO_SeqElem_String_Manager operator[] (CORBA::ULong index) const;" << be_nl
- << "// read-write accessor" << be_nl;
-
- // allocbuf
- *os << "static char **allocbuf (CORBA::ULong length);" << be_nl;
-
- // freebuf
- *os << "static void freebuf (char **buffer);" << be_nl;
-
- // allocate_buffer
- *os << "virtual void _allocate_buffer (CORBA::ULong length);" << be_nl;
-
- // deallocate_buffer
- *os << "virtual void _deallocate_buffer (void);" << be_nl;
-
- // get_buffer
- *os << "char* *get_buffer (CORBA::Boolean orphan = 0);" << be_nl;
-
- // get_buffer
- *os << "const char* *get_buffer (void) const;" << be_nl;
-
- // shrink_buffer
- *os << "virtual void _shrink_buffer (CORBA::ULong nl,CORBA::ULong ol);"
- << be_uidt_nl;
-
- *os << "};\n";
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp
deleted file mode 100644
index cbac57cb55a..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_ci.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_str_sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_str_sequence_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_bounded_str_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
-#if 0 /* Why is this here? ASG */
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
-#endif /* 0 */
-
- // first generate the static methods since they are used by others. Since
- // they are inlined, their definition needs to come before their use else
- // some compilers (e.g., g++) produce lots of warnings.
-
- // allocbuf
- *os << "ACE_INLINE char **" << be_nl
- << full_class_name << "::allocbuf (CORBA::ULong length)" << be_nl
- << "{" << be_idt_nl
- << "char **buf;" << be_nl
- << "ACE_NEW_RETURN (buf, char *[" << node->max_size () << "], 0);" << be_nl
- << "for (CORBA::ULong i = 0; i < " << node->max_size () << "; i++)" << be_idt_nl
- << "buf[i] = 0;" << be_uidt_nl
- << "return buf;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // freebuf
- *os << "ACE_INLINE void " << be_nl
- << full_class_name << "::freebuf (char **buffer)" << be_nl
- << "{" << be_idt_nl
- << "for (CORBA::ULong i = 0; i < " << node->max_size () << "; ++i)" << be_nl
- << "{" << be_idt_nl
- << "if (buffer[i] != 0)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::string_free (buffer[i]);" << be_nl
- << "buffer[i] = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "delete [] buffer;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (void)" << be_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size ()
- << ", " << full_class_name << "::allocbuf(" << node->max_size () << "))" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (CORBA::ULong length," << be_idt_nl
- << "char* *value," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << " : TAO_Bounded_Base_Sequence (" << node->max_size () << ", length, value, release)" << be_nl
- << "{" << be_nl
- << " this->_allocate_buffer (" << node->max_size () << ");" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (const " << full_class_name << " &rhs)" << be_idt_nl
- << ": TAO_Bounded_Base_Sequence (rhs)" << be_uidt_nl
- << "{" << be_idt_nl
- << "char **tmp1 = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl
- << "char ** const tmp2 = ACE_reinterpret_cast (char ** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i=0; i < rhs.length_; i++)" << be_idt_nl
- << "tmp1[i] = CORBA::string_dup (tmp2[i]);" << be_uidt_nl
- << be_nl
- << "this->buffer_ = tmp1;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator=
- *os << "ACE_INLINE " << full_class_name << "& " << be_nl
- << full_class_name << "::operator= (const " << full_class_name << " &rhs)" << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{ " << be_idt_nl
- << "char **tmp = ACE_reinterpret_cast (char **, this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::string_free (tmp[i]);" << be_nl
- << "tmp[i] = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << be_nl
- << "TAO_Bounded_Base_Sequence::operator= (rhs);" << be_nl
- << be_nl
- << "char **tmp1 = ACE_reinterpret_cast (char **, this->buffer_);" << be_nl
- << "char ** const tmp2 = ACE_reinterpret_cast (char ** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < rhs.length_; i++)" << be_idt_nl
- << "tmp1[i] = CORBA::string_dup (tmp2[i]);" << be_uidt_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator[]
- *os << "ACE_INLINE TAO_SeqElem_String_Manager " << be_nl
- << full_class_name << "::operator[] (CORBA::ULong index) const" << be_nl
- << "// read-write accessor" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (index < this->maximum_);" << be_nl
- << "char **const tmp = ACE_reinterpret_cast (char ** ACE_CAST_CONST, this->buffer_);" << be_nl
- << "return TAO_SeqElem_String_Manager (tmp + index, this->release_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE char**" << be_nl
- << full_class_name << "::get_buffer (CORBA::Boolean orphan)" << be_nl
- << "{" << be_idt_nl
- << "char **result = 0;" << be_nl
- << "if (orphan == 0)" << be_nl
- << "{" << be_idt_nl
- << "// We retain ownership. " << be_nl
- << "if (this->buffer_ == 0)" << be_nl
- << "{" << be_idt_nl
- << "result = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl
- << "this->buffer_ = result;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl
- << "{" << be_idt_nl
- << "result = ACE_reinterpret_cast (char **, this->buffer_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else // if (orphan == 1)" << be_nl
- << "{" << be_idt_nl
- << "if (this->release_ != 0)" << be_nl
- << "{" << be_idt_nl
- << "// We set state back to default and relinquish" << be_nl
- << "// ownership." << be_nl
- << "result = ACE_reinterpret_cast (char **, this->buffer_);" << be_nl
- << "this->maximum_ = 0;" << be_nl
- << "this->length_ = 0;" << be_nl
- << "this->buffer_ = 0;" << be_nl
- << "this->release_ = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "return result;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE const char**" << be_nl
- << full_class_name << "::get_buffer (void) const" << be_nl
- << "{" << be_idt_nl
- << "return ACE_reinterpret_cast (const char ** ACE_CAST_CONST, this->buffer_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp
deleted file mode 100644
index 87d5e6008a9..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_str_sequence_cs.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_bounded_str_sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client impl
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_bounded_str_sequence_cs, "$Id$")
-
-
-int
-be_visitor_sequence_cs::gen_bounded_str_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
-#if 0 /* Why is this here? ASG */
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
-#endif /* 0 */
-
- // allocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_allocate_buffer (CORBA::ULong length)" << be_nl
- << "{" << be_idt_nl
- << "// For this class memory is never reallocated so the implementation" << be_nl
- << "// is *really* simple." << be_nl
- << "this->buffer_ = " << full_class_name << "::allocbuf ("
- << node->max_size () << ");" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // deallocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_deallocate_buffer (void)" << be_nl
- << "{" << be_idt_nl
- << "if (this->buffer_ == 0 || this->release_ == 0)" << be_idt_nl
- << "return;" << be_uidt_nl
- << "char **tmp = ACE_reinterpret_cast (char **, this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = 0;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // destructor
- *os << full_class_name << "::~" << class_name << " (void)" << be_nl
- << "{" << be_idt_nl
- << "this->_deallocate_buffer ();" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // shrink_buffer
- *os << "void" << be_nl
- << full_class_name << "::_shrink_buffer (CORBA::ULong nl, CORBA::ULong ol)" << be_nl
- << "{" << be_idt_nl
- << "char **tmp = ACE_reinterpret_cast (char **,this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = nl; i < ol; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::string_free (tmp[i]);" << be_nl
- << "tmp[i] = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp
deleted file mode 100644
index 79ebbf95882..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ch.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_object_manager_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_object_manager_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_object_manager (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- // we might want to use this later
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- const char * object_manager = node->object_manager_name ();
- // create the name for the object manager
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (object_manager);
-
- os->indent ();
-
- *os << "class " << object_manager << be_nl
- << "{" << be_idt_nl
- << "friend class " << class_name << ";" << be_uidt_nl
- << "public:" << be_idt_nl
- << be_nl;
-
- // constructor
- *os << "// = Initialization and termination methods." << be_nl
- << object_manager << " (const " << object_manager << " &rhs);" << be_nl;
-
- // constructor
- *os << object_manager << " (";
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << "** buffer, CORBA::Boolean release);" << be_nl;
-
- // destructor
- *os << "~" << object_manager << " (void);" << be_nl;
-
- // operator=
- *os << object_manager << " &operator= (const " << object_manager << " &rhs);" << be_nl;
-
- // operator=
- *os << object_manager << " &operator= (";
- pt->accept (visitor);
- *os << " *p);" << be_nl;
-
- // cast operator
- *os << "operator const ";
- pt->accept (visitor);
- *os << " *() const; // Cast (read-only)." << be_nl;
-
- // cast operator
- *os << "operator ";
- pt->accept (visitor);
- *os << " *&(); // Cast." << be_nl;
-
- // in method
- *os << "const ";
- pt->accept (visitor);
- *os << " *in (void) const; // in " << be_nl;
-
- // inout method
- pt->accept (visitor);
- *os << " *&inout (void); // inout " << be_nl;
-
- // out method
- pt->accept (visitor);
- *os << " *&out (void); // out " << be_nl;
-
- // retn method
- pt->accept (visitor);
- *os << " *_retn (void); // retn " << be_uidt_nl;
-
- // members
- *os << "private:" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **ptr_;" << be_nl
- << "// data member, notice that it is a pointer, to implement the" << be_nl
- << "// reference behavior for assignment." << be_nl
- << be_nl
- << "CORBA::Boolean release_;" << be_nl
- << "// release flag based on parent's flag" << be_uidt_nl
- << "};" << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp
deleted file mode 100644
index 394bbb01531..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_object_manager_ci.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_object_manager_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_object_manager_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_object_manager (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- // we might want to use this later
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- const char * object_manager = node->object_manager_name ();
-
- static char full_object_manager [NAMEBUFSIZE];
- ACE_OS::memset (full_object_manager, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_object_manager, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- object_manager);
- }
- else
- {
- ACE_OS::sprintf (full_object_manager, "%s",
- object_manager);
- }
-
- // create the name for the object manager
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (object_manager);
-
- os->indent ();
-
- // constructor
- *os << "// = Initialization and termination methods." << be_nl
- << "ACE_INLINE" << be_nl
- << full_object_manager << "::" << object_manager << " (const "
- << full_object_manager << " &rhs)" << be_idt_nl
- << ": ptr_ (rhs.ptr_)," << be_nl
- << "release_ (rhs.release_)" << be_uidt_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_object_manager << "::" << object_manager << " (";
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << "** buffer, CORBA::Boolean release)" << be_idt_nl
- << ": ptr_ (buffer)," << be_nl
- << "release_ (release)" << be_uidt_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // destructor
- *os << "ACE_INLINE" << be_nl
- << full_object_manager << "::~" << object_manager << " (void)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // operator=
- *os << "ACE_INLINE " << full_object_manager << " &" << be_nl
- << full_object_manager << "::operator= (const " << full_object_manager
- << " &rhs)" << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (*this->ptr_);" << be_nl
- << "*this->ptr_ = ";
- pt->accept (visitor);
- *os << "::_duplicate (*rhs.ptr_);" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "*this->ptr_ = *rhs.ptr_;" << be_uidt_nl
- << be_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator=
- *os << "ACE_INLINE " << full_object_manager << " &" << be_nl
- << full_object_manager << "::operator= (";
- pt->accept (visitor);
- *os << " *p)" << be_nl
- << "// Assignment from ";
- pt->accept (visitor);
- *os << " *." << be_nl
- << "{" << be_idt_nl
- << "if (this->release_)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (*this->ptr_);" << be_nl
- << "*this->ptr_ = p;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "*this->ptr_ = p;" << be_uidt_nl
- << be_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // cast operator
- *os << "ACE_INLINE " << be_nl
- << full_object_manager << "::operator const ";
- pt->accept (visitor);
- *os << " *() const // Cast (read-only)." << be_nl
- << "{" << be_idt_nl
- << "return *this->ptr_;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // cast operator
- *os << "ACE_INLINE" << be_nl
- << full_object_manager << "::operator ";
- pt->accept (visitor);
- *os << " *&() // Cast." << be_nl
- << "{" << be_idt_nl
- << "return *this->ptr_;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // in method
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << " *" << be_nl
- << full_object_manager << "::in (void) const // in "
- << be_nl
- << "{" << be_idt_nl
- << "return *this->ptr_;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // inout method
- *os << "ACE_INLINE ";
- pt->accept (visitor);
- *os << " *&" << be_nl
- << full_object_manager << "::inout (void) // inout "
- << be_nl
- << "{" << be_idt_nl
- << "return *this->ptr_;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // out method
- *os << "ACE_INLINE ";
- pt->accept (visitor);
- *os << " *&" << be_nl
- << full_object_manager << "::out (void) // out "
- << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (*this->ptr_);" << be_nl
- << "*this->ptr_ = ";
- pt->accept (visitor);
- *os << "::_nil ();"
- << be_nl
- << "return *this->ptr_;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // retn method
- *os << "ACE_INLINE ";
- pt->accept (visitor);
- *os << " *" << be_nl
- << full_object_manager << "::_retn (void) // retn "
- << be_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os << " *temp = *this->ptr_;" << be_nl
- << "*this->ptr_ = ";
- pt->accept (visitor);
- *os << "::_nil ();"
- << be_nl
- << "return temp;" << be_uidt_nl
- << "}" << be_nl;
-
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp
deleted file mode 100644
index 1f9e88780c2..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ch.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_obj_sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_obj_sequence_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_unbounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- const char * object_manager = node->object_manager_name ();
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- //forward declaration of the object manager;
- *os << "class " << object_manager << ";" << be_nl << be_nl;
-
- *os << "class " << class_name << " : public TAO_Unbounded_Base_Sequence" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl
- << "// = Initialization and termination methods." << be_nl
- << be_nl;
-
- // constructor
- *os << class_name << " (void);" << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong maximum);" << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong maximum," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept (visitor);
- *os <<"* *value," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt_nl;
-
- // constructor
- *os << class_name << "(const " << class_name << " &rhs);" << be_nl;
-
- // destructor
- *os << "virtual ~" << class_name << " (void);" << be_nl;
-
- // operator=
- *os << class_name << " &operator= (const " << class_name << " &rhs);" << be_nl;
-
- // operator[]
- *os << object_manager << " operator[] (CORBA::ULong index) const;" << be_nl;
-
- // allocbuf
- *os << "static ";
- pt->accept (visitor);
- *os << " **allocbuf (CORBA::ULong nelems);" << be_nl;
-
- // freebuf
- *os << "static void freebuf (";
- pt->accept (visitor);
- *os << " **buffer);" << be_nl;
-
- // allocate_buffer
- *os << "// The Base_Sequence functions, please see tao/Sequence.h" << be_nl
- << "virtual void _allocate_buffer (CORBA::ULong length);" << be_nl;
-
- // deallocate_buffer
- *os << "virtual void _deallocate_buffer (void);" << be_nl;
-
- // get_buffer
- pt->accept(visitor);
- *os << "* *get_buffer (CORBA::Boolean orphan = 0);" << be_nl;
-
- // get_buffer
- *os << "const ";
- pt->accept (visitor);
- *os << "* *get_buffer (void) const;" << be_nl;
-
- // shrink_buffer
- *os << "virtual void _shrink_buffer (CORBA::ULong nl, CORBA::ULong ol);" << be_nl;
-
- be_predefined_type *prim = be_predefined_type::narrow_from_decl (pt);
- if ((pt->node_type () != AST_Decl::NT_pre_defined) ||
- (prim && (prim->pt () == AST_PredefinedType::PT_pseudo) &&
- (!ACE_OS::strcmp (prim->local_name ()->get_string (), "Object"))))
- {
- // Pseudo objects do not require this methods.
- *os << "virtual void _downcast (" << be_idt << be_idt_nl
- << "void* target," << be_nl
- << "CORBA_Object *src," << be_nl
- << "CORBA_Environment &ACE_TRY_ENV = " << be_idt_nl
- << "CORBA::Environment::default_environment ()"
- << be_uidt << be_uidt_nl
- << ");" << be_uidt_nl;
-
- *os << "virtual CORBA_Object* _upcast (void *src) const;" << be_nl;
- }
- *os << be_uidt_nl << "};\n";
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- // Due to a bug with g++2.7.2.3 we have to generate the object manager class
- // after the sequence class and instead forward declare it above
-
- this->gen_object_manager (node);
- // Generate the code for the object manager
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp
deleted file mode 100644
index ccb4fff7e11..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_ci.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_obj_sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline.
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_obj_sequence_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_unbounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- this->gen_object_manager (node);
-
- static char object_manager [NAMEBUFSIZE];
- ACE_OS::memset (object_manager, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (object_manager, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- node->object_manager_name ());
- }
- else
- {
- ACE_OS::sprintf (object_manager, "%s",
- node->object_manager_name ());
- }
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // allocbuf
- *os << "ACE_INLINE ";
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_unbounded_obj_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << " **" << be_nl
- << full_class_name << "::allocbuf (CORBA::ULong nelems)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **buf;" << be_nl
- << be_nl
- << "ACE_NEW_RETURN (buf, ";
- pt->accept (visitor);
- *os << "*[nelems], 0);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < nelems; i++)" << be_idt_nl
- << "buf[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << be_nl
- << "return buf;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // freebuf
- *os << "ACE_INLINE void " << be_nl
- << full_class_name << "::freebuf (";
- pt->accept (visitor);
- *os << " **buffer)" << be_nl
- << "{" << be_idt_nl
- << "if (buffer == 0)" << be_idt_nl
- << "return;" << be_uidt_nl
- << "delete[] buffer;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (void)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (CORBA::ULong maximum)" << be_idt_nl
- << ": TAO_Unbounded_Base_Sequence (maximum, "
- << full_class_name << "::allocbuf (maximum))" << be_uidt_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (CORBA::ULong maximum," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept (visitor);
- *os <<"* *value," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << ": TAO_Unbounded_Base_Sequence (maximum, length, value, release)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << "(const "
- << full_class_name << " &rhs)" << be_idt_nl
- << ": TAO_Unbounded_Base_Sequence (rhs)" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp1 = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl;
- pt->accept(visitor);
- *os <<" ** const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < rhs.length_; ++i)" << be_idt_nl
- << "tmp1[i] = ";
- pt->accept (visitor); *os << "::_duplicate (tmp2[i]);" << be_uidt_nl
- << be_nl
- << "this->buffer_ = tmp1;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator=
- *os << "ACE_INLINE " << full_class_name << " &" << be_nl
- << full_class_name << "::operator= (const " << full_class_name << " &rhs)" << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (tmp[i]);" << be_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_nl
- << "if (this->maximum_ < rhs.maximum_)" << be_nl
- << "{" << be_idt_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = " << full_class_name
- << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "this->buffer_ = " << full_class_name
- << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << be_nl
- << "TAO_Unbounded_Base_Sequence::operator= (rhs);" << be_nl
- << be_nl;
- pt->accept(visitor);
- *os <<" **tmp1 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " **, this->buffer_);" << be_nl;
- pt->accept(visitor);
- *os <<" ** const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < rhs.length_; ++i)" << be_idt_nl
- << "tmp1[i] = ";
- pt->accept (visitor);
- *os << "::_duplicate (tmp2[i]);" << be_uidt_nl
- << be_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator[]
- *os << "ACE_INLINE " << object_manager << be_nl
- << full_class_name << "::operator[] (CORBA::ULong index) const" << be_nl
- << "// read-write accessor" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (index < this->maximum_);" << be_nl;
- pt->accept(visitor);
- *os <<" ** const tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, this->buffer_);" << be_nl
- << "return " << object_manager << " (tmp + index, this->release_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE ";
- pt->accept(visitor);
- *os << "* *" << be_nl
- << full_class_name << "::get_buffer (CORBA::Boolean orphan)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os << " **result = 0;" << be_nl
- << "if (orphan == 0)" << be_nl
- << "{" << be_idt_nl
- << "// We retain ownership." << be_nl
- << "if (this->buffer_ == 0)" << be_nl
- << "{" << be_idt_nl
- << "result = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl
- << "this->buffer_ = result;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl
- << "{" << be_idt_nl
- << "result = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "**, this->buffer_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else // if (orphan == 1)" << be_nl
- << "{" << be_idt_nl
- << "if (this->release_ != 0)" << be_nl
- << "{" << be_idt_nl
- << "// We set the state back to default and relinquish" << be_nl
- << "// ownership." << be_nl
- << "result = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "**,this->buffer_);" << be_nl
- << "this->maximum_ = 0;" << be_nl
- << "this->length_ = 0;" << be_nl
- << "this->buffer_ = 0;" << be_nl
- << "this->release_ = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "return result;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE ";
- *os << "const ";
- pt->accept (visitor);
- *os << "* *" << be_nl
- << full_class_name << "::get_buffer (void) const" << be_nl
- << "{" << be_idt_nl
- << "return ACE_reinterpret_cast(const ";
- pt->accept (visitor);
- *os << " ** ACE_CAST_CONST, this->buffer_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp
deleted file mode 100644
index 9686a29bd3d..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_obj_sequence_cs.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_obj_sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline.
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_obj_sequence_cs, "$Id$")
-
-
-int
-be_visitor_sequence_cs::gen_unbounded_obj_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- static char object_manager [NAMEBUFSIZE];
- ACE_OS::memset (object_manager, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (object_manager, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- node->object_manager_name ());
- }
- else
- {
- ACE_OS::sprintf (object_manager, "%s",
- node->object_manager_name ());
- }
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // allocate_buffer
- *os << "// The Base_Sequence functions, please see tao/Sequence.h" << be_nl
- << "void" << be_nl
- << full_class_name << "::_allocate_buffer (CORBA::ULong length)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp = " << full_class_name << "::allocbuf (length);" << be_nl
- << be_nl
- << "if (this->buffer_ != 0)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **old = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "**, this->buffer_);" << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "if (!this->release_)" << be_idt_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_duplicate (old[i]);" << be_uidt_nl
- << "else" << be_idt_nl
- << "tmp[i] = old[i];" << be_uidt_nl << be_uidt_nl
- << "if (this->release_)" << be_idt_nl
- << "delete[] old;" << be_uidt_nl << be_uidt_nl
- << "}" << be_nl
- << "this->buffer_ = tmp;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // deallocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_deallocate_buffer (void)" << be_nl
- << "{" << be_idt_nl
- << "if (this->buffer_ == 0 || this->release_ == 0)" << be_idt_nl
- << "return;" << be_uidt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "**, this->buffer_);" << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (tmp[i]);" << be_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = 0;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // destructor
- *os << full_class_name << "::~" << class_name << " (void)" << be_nl
- << "{" << be_idt_nl
- << "this->_deallocate_buffer ();" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // shrink_buffer
- *os << "void" << be_nl
- << full_class_name << "::_shrink_buffer (CORBA::ULong nl, CORBA::ULong ol)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" **tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "**, this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = nl; i < ol; ++i)" << be_nl
- << "{" << be_idt_nl
- << "CORBA::release (tmp[i]);" << be_nl
- << "tmp[i] = ";
- pt->accept (visitor);
- *os << "::_nil ();" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl;
-
-
- be_predefined_type *prim = be_predefined_type::narrow_from_decl (pt);
- if ((pt->node_type () != AST_Decl::NT_pre_defined) ||
- (prim && (prim->pt () == AST_PredefinedType::PT_pseudo) &&
- (!ACE_OS::strcmp (prim->local_name ()->get_string (), "Object"))))
- {
- // Pseudo objects do not require this methods.
- *os << "void " << be_nl
- << full_class_name << "::_downcast (" << be_idt << be_idt_nl
- << "void* target," << be_nl
- << "CORBA_Object *src," << be_nl
- << "CORBA_Environment &ACE_TRY_ENV"
- << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os << " **tmp = ACE_static_cast (";
- pt->accept (visitor);
- *os << "**, target);" << be_nl
- << "*tmp = ";
- pt->accept (visitor);
- *os << "::_narrow (src, ACE_TRY_ENV);" << be_uidt_nl
- << "}\n" << be_nl;
-
- *os << "CORBA_Object*" << be_nl
- << full_class_name << "::_upcast (void *src) const" << be_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os << " **tmp = ACE_static_cast (";
- pt->accept (visitor);
- *os << "**, src);" << be_nl
- << "return *tmp;" << be_uidt_nl
- << "}" << be_nl;
- }
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
-
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ch.cpp
deleted file mode 100644
index 24a52859130..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ch.cpp
+++ /dev/null
@@ -1,166 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_sequence_ch, "$Id$")
-
-
-int
-be_visitor_sequence_ch::gen_unbounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- *os << "class " << class_name << " : public TAO_Unbounded_Base_Sequence" << be_nl
- << "{" << be_nl
- << "public:" << be_idt_nl
- << "// = Initialization and termination methods." << be_nl
- << be_nl;
- // constructor
- *os << class_name << " (void); // Default constructor." << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong maximum); " << be_nl;
-
- // constructor
- *os << class_name << " (CORBA::ULong maximum," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << " *data," << be_nl
- << "CORBA::Boolean release = 0);" << be_uidt_nl;
-
- // constructor
- *os << class_name << " (const " << class_name << " &rhs);" << be_nl;
-
- // operator =
- *os << class_name << " &operator= (const " << class_name << " &rhs);" << be_nl;
-
- // destructor
- *os << "virtual ~" << class_name << " (void); // Dtor." << be_nl;
-
- // Accessors
- *os << "// = Accessors." << be_nl;
- pt->accept (visitor);
- *os <<" &operator[] (CORBA::ULong i);" << be_nl;
-
- // operator[]
- *os << "const ";
- pt->accept (visitor);
- *os << " &operator[] (CORBA::ULong i) const;" << be_nl;
-
- // Static operations
- *os << "// = Static operations." << be_nl
- << "static ";
- pt->accept (visitor);
- *os << " *allocbuf (CORBA::ULong size);" << be_nl;
-
- *os << "static void freebuf (";
- pt->accept (visitor);
- *os << " *buffer);" << be_nl;
-
- // allocate_buffer
- *os << "virtual void _allocate_buffer (CORBA::ULong length);" << be_nl;
-
- // deallocate_buffer
- *os << "virtual void _deallocate_buffer (void);" << be_nl;
-
- // Implement the TAO_Base_Sequence methods (see Sequence.h)
- *os << "// Implement the TAO_Base_Sequence methods (see Sequence.h)" << be_nl
- << be_nl;
- pt->accept(visitor);
- *os << " *get_buffer (CORBA::Boolean orphan = 0);" << be_nl;
-
- // get_buffer
- *os << "const ";
- pt->accept (visitor);
- *os << " *get_buffer (void) const;" << be_nl;
-
- // replace
- *os << "void replace (CORBA::ULong max," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept(visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release);" << be_uidt << be_uidt_nl;
-
- *os << "};\n";
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp
deleted file mode 100644
index 9348769b863..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_ci.cpp
+++ /dev/null
@@ -1,338 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_sequence_ci, "$Id$")
-
-
-int
-be_visitor_sequence_ci::gen_unbounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // Static operations
- // allocbuf
- *os << "// = Static operations." << be_nl
- << "ACE_INLINE ";
- // the accept is here the first time used and if an
- // error occurs, it will occur here. Later no check
- // for errors will be done.
- if (pt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_unbounded_sequence - "
- "base type visit failed\n"),
- -1);
- }
- *os << " *" << be_nl
- << full_class_name << "::allocbuf (CORBA::ULong size)" << be_nl
- << "// Allocate storage for the sequence." << be_nl
- << "{" << be_idt_nl
- << "return new ";
- pt->accept (visitor);
- *os << "[size];" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- *os << "ACE_INLINE void "
- << full_class_name << "::freebuf (";
- pt->accept (visitor);
- *os << " *buffer)" << be_nl
- << "// Free the sequence." << be_nl
- << "{" << be_idt_nl
- << "delete [] buffer;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (void) // Default constructor." << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (CORBA::ULong maximum) "
- << "// Constructor using a maximum length value." << be_idt_nl
- << ": TAO_Unbounded_Base_Sequence (maximum, "
- << full_class_name << "::allocbuf (maximum))"
- << be_uidt_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (CORBA::ULong maximum," << be_idt_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept (visitor);
- *os << " *data," << be_nl
- << "CORBA::Boolean release)" << be_uidt_nl
- << ": TAO_Unbounded_Base_Sequence (maximum, length, data, release)" << be_nl
- << "{" << be_nl
- << "}" << be_nl
- << be_nl;
-
- // constructor
- *os << "ACE_INLINE" << be_nl
- << full_class_name << "::" << class_name << " (const "
- << full_class_name << " &rhs)" << be_nl
- << "// Copy constructor." << be_idt_nl;
- *os << ": TAO_Unbounded_Base_Sequence (rhs)" << be_uidt_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" *tmp1 = " << full_class_name << "::allocbuf (this->maximum_);" << be_nl;
- pt->accept(visitor);
- *os << " * const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "tmp1[i] = tmp2[i];" << be_uidt_nl
- << be_nl
- << "this->buffer_ = tmp1;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator =
- *os << "ACE_INLINE " << full_class_name << " &" << be_nl
- << full_class_name << "::operator= (const " << full_class_name << " &rhs)" << be_nl
- << "// Assignment operator." << be_nl
- << "{" << be_idt_nl
- << "if (this == &rhs)" << be_idt_nl
- << "return *this;" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_nl
- << "{" << be_idt_nl
- << "if (this->maximum_ < rhs.maximum_)" << be_nl
- << "{" << be_idt_nl
- << "// free the old buffer" << be_nl;
- pt->accept (visitor);
- *os <<" *tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " *, this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = " << full_class_name
- << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_idt_nl
- << "this->buffer_ = " << full_class_name
- << "::allocbuf (rhs.maximum_);" << be_uidt_nl
- << be_nl
- << "TAO_Unbounded_Base_Sequence::operator= (rhs);" << be_nl
- << be_nl;
- pt->accept (visitor);
- *os <<" *tmp1 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " *, this->buffer_);" << be_nl;
- pt->accept (visitor);
- *os <<" * const tmp2 = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, rhs.buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "tmp1[i] = tmp2[i];" << be_uidt_nl
- << be_nl
- << "return *this;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // Accessors
- *os << "// = Accessors." << be_nl;
- *os << "ACE_INLINE ";
- pt->accept (visitor);
- *os <<" &" << be_nl
- << full_class_name << "::operator[] (CORBA::ULong i)" << be_nl
- << "// operator []" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (i < this->maximum_);" << be_nl;
- pt->accept (visitor);
- *os <<"* tmp = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "*,this->buffer_);" << be_nl
- << "return tmp[i];" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // operator[]
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << " &" << be_nl
- << full_class_name << "::operator[] (CORBA::ULong i) const" << be_nl
- << "// operator []" << be_nl
- << "{" << be_idt_nl
- << "ACE_ASSERT (i < this->maximum_);" << be_nl;
- pt->accept (visitor);
- *os <<" * const tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "* ACE_CAST_CONST, this->buffer_);" << be_nl
- << "return tmp[i];" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // Implement the TAO_Base_Sequence methods (see Sequence.h)
- *os << "// Implement the TAO_Base_Sequence methods (see Sequence.h)" << be_nl
- << be_nl;
- *os << "ACE_INLINE ";
- pt->accept(visitor);
- *os << " *" << be_nl
- << full_class_name << "::get_buffer (CORBA::Boolean orphan)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" *result = 0;" << be_nl
- << "if (orphan == 0)" << be_nl
- << "{" << be_idt_nl
- << "// We retain ownership." << be_nl
- << "if (this->buffer_ == 0)" << be_nl
- << "{" << be_idt_nl
- << "result = " << full_class_name << "::allocbuf (this->length_);" << be_nl
- << "this->buffer_ = result;" << be_uidt_nl
- << "}" << be_nl
- << "else" << be_nl
- << "{" << be_idt_nl
- << "result = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << "*, this->buffer_);" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "else // if (orphan == 1)" << be_nl
- << "{" << be_idt_nl
- << "if (this->release_ != 0)" << be_nl
- << "{" << be_idt_nl
- << "// We set the state back to default and relinquish" << be_nl
- << "// ownership." << be_nl
- << "result = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "*,this->buffer_);" << be_nl
- << "this->maximum_ = 0;" << be_nl
- << "this->length_ = 0;" << be_nl
- << "this->buffer_ = 0;" << be_nl
- << "this->release_ = 0;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl
- << "return result;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // get_buffer
- *os << "ACE_INLINE const ";
- pt->accept (visitor);
- *os << " *" << be_nl
- << full_class_name << "::get_buffer (void) const" << be_nl
- << "{" << be_idt_nl
- << "return ACE_reinterpret_cast(const ";
- pt->accept (visitor);
- *os << " * ACE_CAST_CONST, this->buffer_);" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // replace
- *os << "ACE_INLINE void" << be_nl
- << full_class_name << "::replace (CORBA::ULong max," << be_nl
- << "CORBA::ULong length," << be_nl;
- pt->accept(visitor);
- *os <<" *data," << be_nl
- << "CORBA::Boolean release)" << be_nl
- << "{" << be_idt_nl
- << "this->maximum_ = max;" << be_nl
- << "this->length_ = length;" << be_nl
- << "if (this->buffer_ && this->release_ == 1)" << be_nl
- << "{" << be_idt_nl;
- pt->accept(visitor);
- *os <<" *tmp = ACE_reinterpret_cast(";
- pt->accept (visitor);
- *os << "*,this->buffer_);" << be_nl
- << full_class_name << "::freebuf (tmp);" << be_uidt_nl
- << "}" << be_nl
- << "this->buffer_ = data;" << be_nl
- << "this->release_ = release;" << be_uidt_nl
- << "}" << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp
deleted file mode 100644
index 3a088b4bb8f..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/gen_unbounded_sequence_cs.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// gen_unbounded_sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client impl
-//
-// = AUTHOR
-// Michael Kircher
-//
-// Modifications by Aniruddha Gokhale
-//
-// ============================================================================
-
-//#include "idl.h"
-//#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, gen_unbounded_sequence_cs, "$Id$")
-
-
-int
-be_visitor_sequence_cs::gen_unbounded_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the class name
- be_type *pt; // base types
-
- if (bt->node_type () == AST_Decl::NT_typedef)
- {
- // get the primitive base type of this typedef node
- be_typedef *t = be_typedef::narrow_from_decl (bt);
- pt = t->primitive_base_type ();
- }
- else
- pt = bt;
-
-
- const char * class_name = node->instance_name ();
-
- static char full_class_name [NAMEBUFSIZE];
- ACE_OS::memset (full_class_name, '\0', NAMEBUFSIZE);
-
- if (node->is_nested ())
- {
- ACE_OS::sprintf (full_class_name, "%s::%s",
- be_scope::narrow_from_scope (node->defined_in ())->decl ()->fullname (),
- class_name);
- }
- else
- {
- ACE_OS::sprintf (full_class_name, "%s",
- class_name);
- }
-
- // get the visitor for the type of the sequence
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- os->gen_ifdef_macro (class_name);
-
- os->indent ();
-
- // allocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_allocate_buffer (CORBA::ULong length)" << be_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os <<"* tmp = " << full_class_name << "::allocbuf (length);" << be_nl
- << be_nl
- << "if (this->buffer_ != 0)" << be_nl
- << "{" << be_idt_nl;
- pt->accept (visitor);
- *os <<" *old = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " *,this->buffer_);" << be_nl
- << be_nl
- << "for (CORBA::ULong i = 0; i < this->length_; ++i)" << be_idt_nl
- << "tmp[i] = old[i];" << be_uidt_nl
- << be_nl
- << "if (this->release_)" << be_idt_nl
- << full_class_name << "::freebuf (old);" << be_uidt_nl << be_uidt_nl
- << "}" << be_nl
- << "this->buffer_ = tmp;" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- // deallocate_buffer
- *os << "void" << be_nl
- << full_class_name << "::_deallocate_buffer (void)" << be_nl
- << "{" << be_idt_nl
- << "if (this->buffer_ == 0 || this->release_ == 0)" << be_idt_nl
- << "return;" << be_uidt_nl
- << be_nl;
- pt->accept(visitor);
- *os <<" *tmp = ACE_reinterpret_cast (";
- pt->accept (visitor);
- *os << " *,this->buffer_);" << be_nl
- << be_nl
- << full_class_name << "::freebuf (tmp);" << be_nl
- << "this->buffer_ = 0;" << be_uidt_nl
- << "} " << be_nl
- << be_nl;
-
- // destructor
- *os << full_class_name << "::~" << class_name << " (void) // Dtor." << be_nl
- << "{" << be_idt_nl
- << "this->_deallocate_buffer ();" << be_uidt_nl
- << "}" << be_nl
- << be_nl;
-
- os->gen_endif (); // endif macro
-
- // generate #endif for AHETI
- os->gen_endif_AHETI();
-
- delete visitor;
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp
deleted file mode 100644
index 78aaef41f62..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_base.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for the base type of the Sequence
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, sequence_base, "$Id$")
-
-
-// ****************************************************************
-// We have to generate the parameters for the template that implements
-// each sequence type.
-// ****************************************************************
-
-be_visitor_sequence_base::
-be_visitor_sequence_base (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_base::~be_visitor_sequence_base (void)
-{
-}
-
-int
-be_visitor_sequence_base::visit_predefined_type (be_predefined_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- *os << node->name ();
- return 0;
-}
-
-// helper
-int
-be_visitor_sequence_base::visit_node (be_type *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BASE_CH)
- *os << bt->nested_type_name (this->ctx_->scope ());
- else
- *os << bt->name ();
- return 0;
-}
-
-int
-be_visitor_sequence_base::visit_sequence (be_sequence *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_interface (be_interface *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_interface_fwd (be_interface_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_string (be_string *)
-{
- // NO-OP, we have ad-hoc classes from strings.
- return 0;
-}
-
-int
-be_visitor_sequence_base::visit_structure (be_structure *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_union (be_union *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_enum (be_enum *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_exception (be_exception *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_array (be_array *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_typedef (be_typedef *node)
-{
- this->ctx_->alias (node); // set the alias node
- if (node->primitive_base_type ()->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_base::"
- "visit_typedef - "
- "accept on primitive type failed\n"),
- -1);
- }
- this->ctx_->alias (0);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
deleted file mode 100644
index e256d530afa..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
+++ /dev/null
@@ -1,624 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, sequence_ch, "$Id$")
-
-
-// Root visitor for client header
-be_visitor_sequence_ch::be_visitor_sequence_ch (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_ch::~be_visitor_sequence_ch (void)
-{
-}
-
-int
-be_visitor_sequence_ch::gen_base_sequence_class (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
-
- // !! branching in either compile time template instantiation
- // or manual template instatiation
- os->gen_ifdef_AHETI();
-
- // this is the instantiation branch
- *os << node->instance_name ();
-
- os->gen_else_AHETI();
-
- // generate the appropriate sequence type
- switch (node->managed_type ())
- {
- case be_sequence::MNG_OBJREF:
- if (node->unbounded ())
- *os << "TAO_Unbounded_Object_Sequence<";
- else
- *os << "TAO_Bounded_Object_Sequence<";
- break;
- case be_sequence::MNG_PSEUDO:
- if (node->unbounded ())
- *os << "TAO_Unbounded_Pseudo_Sequence<";
- else
- *os << "TAO_Bounded_Pseudo_Sequence<";
- break;
- case be_sequence::MNG_STRING:
- if (node->unbounded ())
- *os << "TAO_Unbounded_String_Sequence";
- else
- *os << "TAO_Bounded_String_Sequence";
- break;
- default: // not a managed type
- if (node->unbounded ())
- *os << "TAO_Unbounded_Sequence<";
- else
- *os << "TAO_Bounded_Sequence<";
- break;
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- delete visitor;
-
- // find out if the sequence is of a managed type and if it is bounded or not
- if (node->managed_type () == be_sequence::MNG_STRING)
- {
- if (!node->unbounded ())
- {
- *os << "<" << node->max_size () << ">";
- }
- }
- else
- {
- if (node->unbounded ())
- {
- *os << ">";
- }
- else
- {
- *os << ", " << node->max_size () << ">";
- }
- }
-
- os->gen_endif_AHETI();
-
- return 0;
-}
-
-
-int
-be_visitor_sequence_ch::instantiate_sequence (be_sequence *node)
-{
- be_type *bt;
-
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_instantiate_template_name - "
- "Bad element type\n"), -1);
- }
-
- // generate the appropriate sequence type
- switch (node->managed_type ())
- {
- case be_sequence::MNG_PSEUDO:
- case be_sequence::MNG_OBJREF:
- if (node->unbounded ())
- this->gen_unbounded_obj_sequence (node);
- else
- this->gen_bounded_obj_sequence (node);
- break;
- case be_sequence::MNG_STRING: // sequence of strings
- if (!node->unbounded ())
- this->gen_bounded_str_sequence (node);
- // else
- // inheriting from the right class is enough
- break;
- default: // not a managed type
- if (node->unbounded ())
- {
-#if 1
- // TAO provides extensions for octet sequences, first find out
- // if the base type is an octet (or an alias for octet)
- be_predefined_type *predef = 0;
- if (bt->base_node_type () == AST_Type::NT_pre_defined)
- {
- be_typedef* alias =
- be_typedef::narrow_from_decl (bt);
-
- if (alias == 0)
- {
- predef =
- be_predefined_type::narrow_from_decl (bt);
- }
- else
- {
- predef = be_predefined_type::narrow_from_decl
- (alias->primitive_base_type ());
- }
- }
- if (predef != 0)
- {
- if (predef->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#else
- // @@ This needs to be fixed. (Michael)
- be_predefined_type * bpt =
- be_predefined_type::narrow_from_decl (node->base_type());
- if (bpt)
- {
- if (bpt->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#endif
- }
- else
- this->gen_bounded_sequence (node);
- break;
- }
-
- return 0;
-}
-
-
-int be_visitor_sequence_ch::visit_sequence (be_sequence *node)
-{
- be_type *bt; // type node
- TAO_OutStream *os = this->ctx_->stream ();
-
- // first create a name for ourselves
- if (node->create_name (this->ctx_->tdef ()) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "failed creating name\n"), -1);
- }
-
- if (node->cli_hdr_gen () || node->imported ())
- return 0;
-
- // instantiation
-
- if (this->instantiate_sequence (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen. for the primitive type sequence\n"), -1);
- }
-
- // end of instantiation
-
- // generate the ifdefined macro for the sequence type
- os->gen_ifdef_macro (node->flatname ());
-
- os->indent (); // start with the current indentation level
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- *os << "// *************************************************************"
- << be_nl
- << "// " << node->local_name () << be_nl
- << "// *************************************************************"
- << be_nl << be_nl;
-
- // generate a typedef to a parametrized sequence
- *os << "class " << idl_global->export_macro ()
- << " " << node->local_name () << " : public ";
-
- if (this->gen_base_sequence_class (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen for base sequence class\n"), -1);
- }
-
- *os << "{" << be_nl
- << "public:" << be_idt_nl
- << node->local_name () << " (void); // default ctor" << be_nl;
- // for unbounded sequences, we have a different set of constructors
- if (node->unbounded ())
- {
- *os << node->local_name () << " (CORBA::ULong max); // uses max size"
- << be_nl;
- }
-
- *os << node->local_name () << " (" << be_idt_nl;
- if (node->unbounded ())
- {
- // unbounded seq takes this extra parameter
- *os << "CORBA::ULong max, " << be_nl;
- }
- *os << "CORBA::ULong length, " << be_nl;
- // 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);
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- delete visitor;
- *os << " *buffer, " << be_nl
- << "CORBA::Boolean release=0" << be_uidt_nl
- << ");" << be_nl;
- *os << node->local_name () << " (const " << node->local_name ()
- << " &); // copy ctor" << be_nl;
- *os << "~" << node->local_name () << " (void); // dtor\n";
-
- // TAO provides extensions for octet sequences, first find out if
- // the base type is an octet (or an alias for octet)
- be_predefined_type *predef = 0;
- if (bt->base_node_type () == AST_Type::NT_pre_defined)
- {
- be_typedef* alias =
- be_typedef::narrow_from_decl (bt);
-
- if (alias == 0)
- {
- predef = be_predefined_type::narrow_from_decl (bt);
- }
- else
- {
- predef = be_predefined_type::narrow_from_decl
- (alias->primitive_base_type ());
- }
- }
- // Now generate the extension...
- if (predef != 0 && predef->pt () == AST_PredefinedType::PT_octet
- && node->unbounded ())
- {
- *os << "\n"
- << "#if defined(TAO_NO_COPY_OCTET_SEQUENCES)" << be_nl
- << node->local_name () << " (" << be_idt << be_idt_nl
- << "CORBA::ULong length," << be_nl
- << "const ACE_Message_Block* mb" << be_uidt_nl
- << ")" << be_uidt_nl
- << " : " << node->instance_name ()
- << " (length, mb) {}" << "\n"
- << "#endif /* TAO_NO_COPY_OCTET_SEQUENCE */\n\n";
- }
-
- os->decr_indent ();
- *os << "};" << be_nl;
-
- // define a _ptr type. This is just an extension for convenience
- *os << "typedef " << node->local_name () << " *"
- << node->local_name () << "_ptr;\n";
-
- if (!this->ctx_->tdef ())
- {
- // by using a visitor to declare and define the TypeCode, we have the
- // added advantage to conditionally not generate any code. This will be
- // based on the command line options. This is still TO-DO
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_TYPECODE_DECL);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (node->accept (visitor) == -1))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "TypeCode declaration failed\n"
- ), -1);
- }
- }
-
- os->gen_endif (); // endif macro
-
- // generate the ifdefined macro for the var type
- os->gen_ifdef_macro (node->flatname (), "_var");
-
- // generate the var and out types
- if (this->gen_var_defn (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen for _var failed\n"), -1);
- }
-
- os->gen_endif ();
-
- // generate the ifdefined macro for the _out type
- os->gen_ifdef_macro (node->flatname (), "_out");
-
- if (this->gen_out_defn (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen for _out failed\n"),
- -1);
- }
- os->gen_endif ();
- node->cli_hdr_gen (1);
-
- return 0;
-}
-
-// generate the _var definition for ourself
-int
-be_visitor_sequence_ch::gen_var_defn (be_sequence *node)
-{
- TAO_OutStream *os; // output stream
- char namebuf [NAMEBUFSIZE]; // names
- be_type *bt; // base type
-
- ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (namebuf, "%s_var", node->local_name ()->get_string ());
-
- os = this->ctx_->stream ();
-
- *os << "// *************************************************************"
- << be_nl;
- *os << "// class " << node->name () << "_var" << be_nl;
- *os << "// *************************************************************\n\n";
-
- // retrieve base type
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_var_defn - "
- "Bad base type\n"),
- -1);
- }
-
- // generate the var definition (always in the client header).
- // Depending upon the data type, there are some differences which we account
- // for over here.
-
- os->indent (); // start with whatever was our current indent level
- *os << "class " << idl_global->export_macro ()
- << " " << namebuf << be_nl;
- *os << "{" << be_nl;
- *os << "public:\n";
- os->incr_indent ();
- // default constr
- *os << namebuf << " (void); // default constructor" << be_nl;
- // constr
- *os << namebuf << " (" << node->local_name () << " *);" << be_nl;
- // copy constructor
- *os << namebuf << " (const " << namebuf <<
- " &); // copy constructor" << be_nl;
- // destructor
- *os << "~" << namebuf << " (void); // destructor" << be_nl;
- *os << be_nl;
- // assignment operator from a pointer
- *os << namebuf << " &operator= (" << node->local_name () << " *);" << be_nl;
- // assignment from _var
- *os << namebuf << " &operator= (const " << namebuf <<
- " &);" << be_nl;
-
- // arrow operator
- *os << node->local_name () << " *operator-> (void);" << be_nl;
- *os << "const " << node->local_name () << " *operator-> (void) const;" << be_nl;
- *os << be_nl;
-
- // other extra types (cast operators, [] operator, and others)
-
- // cast operator
- *os << "operator const " << node->local_name () << " &() const;" << be_nl;
- *os << "operator " << node->local_name () << " &();" << be_nl;
- *os << "operator " << node->local_name () << " &() const;" << be_nl;
-
- // overloaded [] operator. The const version is not required for sequences
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_var_defn - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_sequence::"
- "gen_var_defn - "
- "[] ret type gen failed\n"),
- -1);
- }
- delete visitor;
-
- *os << "operator[] (CORBA::ULong index);" << be_nl;
-
- *os << "// in, inout, out, _retn " << be_nl;
- // the return types of in, out, inout, and _retn are based on the parameter
- // passing rules and the base type
- *os << "const " << node->local_name () << " &in (void) const;" << be_nl;
- *os << node->local_name () << " &inout (void);" << be_nl;
- *os << node->local_name () << " *&out (void);" << be_nl;
- *os << node->local_name () << " *_retn (void);" << be_nl;
-
- // generate an additional member function that returns the underlying pointer
- *os << node->local_name () << " *ptr (void) const;\n";
-
- *os << "\n";
- os->decr_indent ();
-
- // generate the private section
- *os << "private:\n";
- os->incr_indent ();
- *os << node->local_name () << " *ptr_;\n";
-
- os->decr_indent ();
- *os << "};\n\n";
-
- return 0;
-}
-
-// generate the _out definition
-int
-be_visitor_sequence_ch::gen_out_defn (be_sequence *node)
-{
- TAO_OutStream *os; // output stream
- char namebuf [NAMEBUFSIZE]; // to hold the _out name
- be_type *bt; // base type
-
- ACE_OS::memset (namebuf, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (namebuf, "%s_out", node->local_name ()->get_string ());
- os = this->ctx_->stream ();
-
- // retrieve base type
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_out_defn - "
- "Bad base type\n"),
- -1);
- }
-
- // generate the out definition (always in the client header)
- os->indent (); // start with whatever was our current indent level
-
- *os << "class " << idl_global->export_macro () << " "
- << namebuf << be_nl;
- *os << "{" << be_nl;
- *os << "public:\n";
- os->incr_indent ();
-
- // No default constructor
-
- // constructor from a pointer
- *os << namebuf << " (" << node->local_name () << " *&);" << be_nl;
- // constructor from a _var &
- *os << namebuf << " (" << node->local_name () << "_var &);" << be_nl;
- // constructor from a _out &
- *os << namebuf << " (const " << namebuf << " &);" << be_nl;
- // assignment operator from a _out &
- *os << namebuf << " &operator= (const " << namebuf << " &);" << be_nl;
- // assignment operator from a pointer &, cast operator, ptr fn, operator
- // -> and any other extra operators
- // assignment
- *os << namebuf << " &operator= (" << node->local_name () << " *);" << be_nl;
- // operator ()
- *os << "operator " << node->local_name () << " *&();" << be_nl;
- // ptr fn
- *os << node->local_name () << " *&ptr (void);" << be_nl;
- // operator ->
- *os << node->local_name () << " *operator-> (void);" << be_nl;
-
- // overloaded [] operator only for sequence. The const version is not
- // required
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CH);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_out_defn - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_sequence::"
- "gen_var_defn - "
- "[] ret type gen failed\n"),
- -1);
- }
- delete visitor;
- *os << "operator[] (CORBA::ULong index);" << be_nl;
- *os << "\n";
- os->decr_indent ();
- *os << "private:\n";
- os->incr_indent ();
-
- *os << node->local_name () << " *&ptr_;" << be_nl;
- *os << "// assignment from T_var not allowed" << be_nl;
- *os << "void operator= (const " << node->local_name () << "_var &);\n";
-
- os->decr_indent ();
- *os << "};\n\n";
-
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp
deleted file mode 100644
index 2c2bc7bb184..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ci.cpp
+++ /dev/null
@@ -1,574 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_ci.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client inline file
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, sequence_ci, "$Id$")
-
-
-// ***********************************************************
-// sequence visitor for inline generation
-// ***********************************************************
-
-
-be_visitor_sequence_ci::be_visitor_sequence_ci (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_ci::~be_visitor_sequence_ci (void)
-{
-}
-
-int
-be_visitor_sequence_ci::visit_sequence (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- if (node->cli_inline_gen () || node->imported ())
- return 0;
-
- // instantiation
-
- if (this->instantiate_sequence (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "codegen. for the primitive type sequence\n"),
- -1);
- }
-
- // end of instantiation
-
- // generate the ifdefined macro for the sequence type
- os->gen_ifdef_macro (node->flatname ());
-
- // all we do is generate the _var and _out implementations
- if (this->gen_var_impl (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "codegen for _var failed\n"), -1);
- }
-
- if (this->gen_out_impl (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "codegen for _out failed\n"), -1);
- }
-
- // generate the endif macro for the sequence type
- os->gen_endif ();
- node->cli_inline_gen (1);
-
- return 0;
-}
-
-int
-be_visitor_sequence_ci::instantiate_sequence (be_sequence *node)
-{
- be_type *bt;
-
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "gen_instantiate_template_name - "
- "Bad element type\n"), -1);
- }
-
- // generate the appropriate sequence type
- switch (node->managed_type ())
- {
- case be_sequence::MNG_PSEUDO:
- case be_sequence::MNG_OBJREF:
- if (node->unbounded ())
- this->gen_unbounded_obj_sequence (node);
- else
- this->gen_bounded_obj_sequence (node);
- break;
- case be_sequence::MNG_STRING: // sequence of strings
- if (!node->unbounded ())
- this->gen_bounded_str_sequence (node);
- // else
- // inheriting from the right class is enough
- break;
- default: // not a managed type
- if (node->unbounded ())
- {
-#if 1
- // TAO provides extensions for octet sequences, first find out
- // if the base type is an octet (or an alias for octet)
- be_predefined_type *predef = 0;
- if (bt->base_node_type () == AST_Type::NT_pre_defined)
- {
- be_typedef* alias =
- be_typedef::narrow_from_decl (bt);
-
- if (alias == 0)
- {
- predef =
- be_predefined_type::narrow_from_decl (bt);
- }
- else
- {
- predef = be_predefined_type::narrow_from_decl
- (alias->primitive_base_type ());
- }
- }
- if (predef != 0)
- {
- if (predef->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#else
- // @@ This needs to be fixed. (Michael)
- be_predefined_type * bpt =
- be_predefined_type::narrow_from_decl (node->base_type());
- if (bpt)
- {
- if (bpt->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#endif
- }
- else
- this->gen_bounded_sequence (node);
- break;
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_ci::gen_var_impl (be_sequence *node)
-{
- TAO_OutStream *os; // output stream
- char fname [NAMEBUFSIZE]; // to hold the full and
- char lname [NAMEBUFSIZE]; // local _var names
- be_type *bt; // base type
-
-
- ACE_OS::memset (fname, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (fname, "%s_var", node->fullname ());
-
- ACE_OS::memset (lname, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (lname, "%s_var", node->local_name ()->get_string ());
-
- os = this->ctx_->stream ();
-
- // retrieve base type
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- // generate the var implementation in the inline file
- os->indent (); // start with whatever was our current indent level
-
- *os << "// *************************************************************"
- << be_nl;
- *os << "// Inline operations for class " << fname << be_nl;
- *os << "// *************************************************************\n\n";
-
- // default constr
- *os << "ACE_INLINE" << be_nl
- << fname << "::" << lname
- << " (void) // default constructor" << be_nl
- << " " << ": ptr_ (0)" << be_nl
- << "{}\n\n";
-
- // constr from a _ptr
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::" << lname << " (" << node->name () << " *p)" << be_nl;
- *os << " : ptr_ (p)" << be_nl;
- *os << "{}\n\n";
-
- // copy constructor
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::" << lname << " (const " << fname <<
- " &p) // copy constructor" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "if (p.ptr_)" << be_nl;
- *os << " this->ptr_ = new " << node->name () << "(*p.ptr_);" << be_nl;
- *os << "else" << be_nl;
- *os << " this->ptr_ = 0;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // destructor
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::~" << lname << " (void) // destructor" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "delete this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // assignment operator from a pointer
- os->indent ();
- *os << "ACE_INLINE " << fname << " &" << be_nl;
- *os << fname << "::operator= (" << node->name () <<
- " *p)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "delete this->ptr_;" << be_nl;
- *os << "this->ptr_ = p;" << be_nl;
- *os << "return *this;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // assignment operator from _var
- os->indent ();
- *os << "ACE_INLINE " << fname << " &" << be_nl;
- *os << fname << "::operator= (const " << fname <<
- " &p) // deep copy" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "if (this != &p)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "delete this->ptr_;" << be_nl;
- *os << "this->ptr_ = new " << node->name () << " (*p.ptr_);\n";
- os->decr_indent ();
- *os << "}" << be_nl;
- *os << "return *this;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // two arrow operators
- os->indent ();
- *os << "ACE_INLINE const " << node->name () << " *" << be_nl;
- *os << fname << "::operator-> (void) const" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " *" << be_nl;
- *os << fname << "::operator-> (void)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // other extra methods - 3 cast operator ()
- os->indent ();
- *os << "ACE_INLINE " << be_nl;
- *os << fname << "::operator const " << node->name () <<
- " &() const // cast" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return *this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "ACE_INLINE " << be_nl;
- *os << fname << "::operator " << node->name () << " &() // cast " << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return *this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "ACE_INLINE " << be_nl;
- *os << fname << "::operator " << node->name () << " &() const// cast " << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return *this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // operator []
- os->indent ();
- *os << "ACE_INLINE ";
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_var_impl - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_var_impl - "
- "[] ret type gen failed\n"),
- -1);
- }
- delete visitor;
-
- *os << be_nl;
- *os << fname << "::operator[] (CORBA::ULong index)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_->operator[] (index);\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // in, inout, out, and _retn
- os->indent ();
- *os << "ACE_INLINE const " << node->name () << " &" << be_nl;
- *os << fname << "::in (void) const" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return *this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " &" << be_nl;
- *os << fname << "::inout (void)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return *this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "// mapping for variable size " << be_nl;
- *os << "ACE_INLINE " << node->name () << " *&" << be_nl;
- *os << fname << "::out (void)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "delete this->ptr_;" << be_nl;
- *os << "this->ptr_ = 0;" << be_nl;
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " *" << be_nl;
- *os << fname << "::_retn (void)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << node->name () << " *tmp = this->ptr_;" << be_nl;
- *os << "this->ptr_ = 0;" << be_nl;
- *os << "return tmp;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // the additional ptr () member function
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " *" << be_nl;
- *os << fname << "::ptr (void) const" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- return 0;
-}
-
-int
-be_visitor_sequence_ci::gen_out_impl (be_sequence *node)
-{
- TAO_OutStream *os; // output stream
- char fname [NAMEBUFSIZE]; // to hold the full and
- char lname [NAMEBUFSIZE]; // local _out names
- be_type *bt; // base type
-
-
- ACE_OS::memset (fname, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (fname, "%s_out", node->fullname ());
-
- ACE_OS::memset (lname, '\0', NAMEBUFSIZE);
- ACE_OS::sprintf (lname, "%s_out", node->local_name ()->get_string ());
-
- os = this->ctx_->stream ();
-
- // retrieve base type
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_out_impl - "
- "Bad element type\n"), -1);
- }
-
- // generate the out implementation in the inline file
-
- os->indent (); // start with whatever was our current indent level
-
- *os << "// *************************************************************"
- << be_nl;
- *os << "// Inline operations for class " << fname << be_nl;
- *os << "// *************************************************************\n\n";
-
- // constr from a pointer
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::" << lname << " (" << node->name () << " *&p)" << be_nl;
- *os << " : ptr_ (p)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "this->ptr_ = 0;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // constructor from _var &
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::" << lname << " (" << node->name () <<
- "_var &p) // constructor from _var" << be_nl;
- *os << " : ptr_ (p.out ())" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "delete this->ptr_;" << be_nl;
- *os << "this->ptr_ = 0;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // copy constructor
- os->indent ();
- *os << "ACE_INLINE" << be_nl;
- *os << fname << "::" << lname << " (const " << fname <<
- " &p) // copy constructor" << be_nl;
- *os << " : ptr_ (ACE_const_cast (" << fname
- << "&,p).ptr_)" << be_nl;
- *os << "{}\n\n";
-
- // assignment operator from _out &
- os->indent ();
- *os << "ACE_INLINE " << fname << " &" << be_nl;
- *os << fname << "::operator= (const " << fname <<
- " &p)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "this->ptr_ = ACE_const_cast (" << fname
- << "&,p).ptr_;" << be_nl;
- *os << "return *this;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // assignment from _var is not allowed by a private declaration
-
- // assignment operator from pointer
- os->indent ();
- *os << "ACE_INLINE " << fname << " &" << be_nl;
- *os << fname << "::operator= (" << node->name () <<
- " *p)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "this->ptr_ = p;" << be_nl;
- *os << "return *this;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // other extra methods - cast operator ()
- os->indent ();
- *os << "ACE_INLINE " << be_nl;
- *os << fname << "::operator " << node->name () <<
- " *&() // cast" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // ptr function
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " *&" << be_nl;
- *os << fname << "::ptr (void) // ptr" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // operator ->
- os->indent ();
- *os << "ACE_INLINE " << node->name () << " *" << be_nl;
- *os << fname << "::operator-> (void)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_;\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- // sequence has an additional method
- os->indent ();
- *os << "ACE_INLINE ";
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQELEM_RETTYPE_CI);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_out_impl - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ci::"
- "gen_out_impl - "
- "[] ret type gen failed\n"),
- -1);
- }
- delete visitor;
-
- *os << be_nl;
- *os << fname << "::operator[] (CORBA::ULong index)" << be_nl;
- *os << "{\n";
- os->incr_indent ();
- *os << "return this->ptr_->operator[] (index);\n";
- os->decr_indent ();
- *os << "}\n\n";
-
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
deleted file mode 100644
index 47d9d6f8a37..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequences in the client stubs file
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-#include "idl.h"
-#include "idl_extern.h"
-#include "be.h"
-
-#include "be_visitor_sequence.h"
-
-ACE_RCSID(be_visitor_sequence, sequence_cs, "$Id$")
-
-
-// ************************************************************
-// Root visitor for client stub class
-// ************************************************************
-
-be_visitor_sequence_cs::be_visitor_sequence_cs (be_visitor_context *ctx)
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_cs::~be_visitor_sequence_cs (void)
-{
-}
-
-// XXXASG - this method is same as that in the _ch visitor. So we need some
-// abstraction for this
-
-int
-be_visitor_sequence_cs::gen_base_sequence_class (be_sequence *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
- be_type *bt;
-
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "gen_base_sequence_class - "
- "Bad element type\n"), -1);
- }
-
- os->gen_ifdef_AHETI();
-
- // this is the instantiation branch
- *os << node->instance_name ();
-
- os->gen_else_AHETI();
-
- // generate the appropriate sequence type
- switch (node->managed_type ())
- {
- case be_sequence::MNG_OBJREF:
- if (node->unbounded ())
- *os << "TAO_Unbounded_Object_Sequence<";
- else
- *os << "TAO_Bounded_Object_Sequence<";
- break;
- case be_sequence::MNG_PSEUDO:
- if (node->unbounded ())
- *os << "TAO_Unbounded_Pseudo_Sequence<";
- else
- *os << "TAO_Bounded_Pseudo_Sequence<";
- break;
- case be_sequence::MNG_STRING:
- if (node->unbounded ())
- *os << "TAO_Unbounded_String_Sequence";
- else
- *os << "TAO_Bounded_String_Sequence";
- break;
- default: // not a managed type
- if (node->unbounded ())
- *os << "TAO_Unbounded_Sequence<";
- else
- *os << "TAO_Bounded_Sequence<";
- break;
- }
-
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BASE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- delete visitor;
-
- // find out if the sequence is of a managed type and if it is bounded or not
- if (node->managed_type () == be_sequence::MNG_STRING)
- {
- if (!node->unbounded ())
- {
- *os << "<" << node->max_size () << ">";
- }
- }
- else
- {
- if (node->unbounded ())
- {
- *os << ">";
- }
- else
- {
- *os << ", " << node->max_size () << ">";
- }
- }
-
- os->gen_endif_AHETI();
-
- return 0;
-}
-
-int be_visitor_sequence_cs::visit_sequence (be_sequence *node)
-{
- // generate the constructors
- be_type *bt; // type node
- TAO_OutStream *os = this->ctx_->stream ();
-
- if (node->cli_stub_gen () || node->imported ())
- return 0;
-
- // instantiation
-
- if (this->instantiate_sequence (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen. for the primitive type sequence\n"), -1);
- }
-
- // end of instantiation
-
- // generate the ifdefined macro for the sequence type
- os->gen_ifdef_macro (node->flatname ());
-
- os->indent (); // start with the current indentation level
-
- // 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 ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad element type\n"), -1);
- }
-
- *os << "// *************************************************************"
- << be_nl
- << "// " << node->name () << be_nl
- << "// *************************************************************"
- << be_nl << be_nl;
-
- // default constructor
- *os << node->name () << "::" << node->local_name () << " (void)" << be_nl
- << "{}" << be_nl;
-
- // for unbounded sequences, we have a different set of constructors
- if (node->unbounded ())
- {
- *os << node->name () << "::" << node->local_name ()
- << " (CORBA::ULong max) // uses max size" << be_nl
- << " : ";
-
- // pass it to the base constructor
- if (this->gen_base_sequence_class (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class\n"), -1);
- }
-
-
- *os << " (max)" << be_nl
- << "{}" << be_nl;
- }
-
- // constructor with the buffer
- *os << node->name () << "::" << node->local_name () << " (";
- if (node->unbounded ())
- {
- *os << "CORBA::ULong max, "; // unbounded seq takes this extra parameter
- }
- *os << "CORBA::ULong length, ";
- // generate the base type for the buffer
- be_visitor_context ctx (*this->ctx_);
- ctx.state (TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CS);
- be_visitor *visitor = tao_cg->make_visitor (&ctx);
- if (!visitor)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "Bad visitor\n"), -1);
- }
-
- if (bt->accept (visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
- delete visitor;
- *os << " *buffer, CORBA::Boolean release)" << be_nl
- << " : ";
- // pass it to the base constructor
- if (this->gen_base_sequence_class (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class\n"), -1);
- }
- *os << " (";
- if (node->unbounded ())
- {
- *os << "max, ";
- }
- *os << "length, buffer, release)" << be_nl
- << "{}" << be_nl;
-
- // copy constructor
- *os << node->name () << "::" << node->local_name ()
- << " (const " << node->local_name ()
- << " &seq) // copy ctor" << be_nl
- << " : ";
- // pass it to the base constructor
- if (this->gen_base_sequence_class (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class\n"), -1);
- }
- *os << " (seq)" << be_nl
- << "{}" << be_nl;
-
- // destructor
- *os << node->name () << "::~" << node->local_name ()
- << " (void) // dtor" << be_nl
- << "{}\n\n";
-
- if (!this->ctx_->tdef ())
- {
- // by using a visitor to declare and define the TypeCode, we have the
- // added advantage to conditionally not generate any code. This will be
- // based on the command line options. This is still TO-DO
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_TYPECODE_DEFN);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (node->accept (visitor) == -1))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "TypeCode definition failed\n"
- ), -1);
- }
- }
-
- os->gen_endif ();
- node->cli_stub_gen (1);
-
- return 0;
-}
-
-int
-be_visitor_sequence_cs::instantiate_sequence (be_sequence *node)
-{
- be_type *bt;
-
- bt = be_type::narrow_from_decl (node->base_type ());
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "gen_instantiate_template_name - "
- "Bad element type\n"), -1);
- }
-
- // generate the appropriate sequence type
- switch (node->managed_type ())
- {
- case be_sequence::MNG_PSEUDO:
- case be_sequence::MNG_OBJREF:
- if (node->unbounded ())
- this->gen_unbounded_obj_sequence (node);
- else
- this->gen_bounded_obj_sequence (node);
- break;
- case be_sequence::MNG_STRING: // sequence of strings
- if (!node->unbounded ())
- this->gen_bounded_str_sequence (node);
- // else
- // inheriting from the right class is enough
- break;
- default: // not a managed type
- if (node->unbounded ())
- {
-#if 1
- // TAO provides extensions for octet sequences, first find out
- // if the base type is an octet (or an alias for octet)
- be_predefined_type *predef = 0;
- if (bt->base_node_type () == AST_Type::NT_pre_defined)
- {
- be_typedef* alias =
- be_typedef::narrow_from_decl (bt);
-
- if (alias == 0)
- {
- predef =
- be_predefined_type::narrow_from_decl (bt);
- }
- else
- {
- predef = be_predefined_type::narrow_from_decl
- (alias->primitive_base_type ());
- }
- }
- if (predef != 0)
- {
- if (predef->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#else
- // @@ This needs to be fixed. (Michael)
- be_predefined_type * bpt =
- be_predefined_type::narrow_from_decl (node->base_type());
- if (bpt)
- {
- if (bpt->pt() != AST_PredefinedType::PT_octet)
- this->gen_unbounded_sequence (node);
- }
- else
- this->gen_unbounded_sequence (node);
-#endif
- }
- else
- this->gen_bounded_sequence (node);
- break;
- }
-
- return 0;
-}
-