summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_sequence
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:11 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2006-07-24 15:50:11 +0000
commit6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (patch)
treeda50d054f9c761c3f6a5923f6979e93306c56d68 /TAO/TAO_IDL/be/be_visitor_sequence
parent0e555b9150d38e3b3473ba325b56db2642e6352b (diff)
downloadATCD-6b846cf03c0bcbd8c276cb0af61a181e5f98eaae.tar.gz
Repo restructuring
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_sequence')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp83
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp158
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp283
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp106
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp256
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp295
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp266
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp198
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_ch.cpp117
-rw-r--r--TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_cs.cpp1337
10 files changed, 0 insertions, 3099 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 9195f4c7d3e..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_ch.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// any_op_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Any operators for the Sequence
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-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 ();
- const char *macro = this->ctx_->export_macro ();
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
-
- *os << be_global->core_versioning_begin () << be_nl;
-
- // Generate the Any <<= and >>= operators.
- *os << macro;
- *os << " void"
- << " operator<<= ( ::CORBA::Any &, const ";
- *os << node->name ();
- *os << " &); // copying version" << be_nl;
- *os << macro;
- *os << " void"
- << " operator<<= ( ::CORBA::Any &, ";
- *os << node->name ();
- *os << "*); // noncopying version" << be_nl;
- *os << macro;
- *os << " ::CORBA::Boolean"
- << " operator>>= (const ::CORBA::Any &, ";
- *os << node->name ();
- *os << " *&); // deprecated" << be_nl;
- *os << macro;
- *os << " ::CORBA::Boolean"
- << " operator>>= (const ::CORBA::Any &, const ";
- *os << node->name ();
- *os << " *&);";
-
- *os << be_global->core_versioning_end () << be_nl;
-
- 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 a4699901a26..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/any_op_cs.cpp
+++ /dev/null
@@ -1,158 +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
-//
-// ============================================================================
-
-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 ();
-
- *os << be_nl << be_nl
- << "// TAO_IDL - Generated from " << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
-
- *os << be_global->core_versioning_begin () << be_nl;
-
- // Since we don't generate CDR stream operators for types that
- // explicitly contain a local interface (at some level), we
- // must override these Any template class methods to avoid
- // calling the non-existent operators. The zero return value
- // will eventually cause CORBA::MARSHAL to be raised if this
- // type is inserted into an Any and then marshaled.
- if (node->is_local ())
- {
- *os << "namespace TAO" << be_nl
- << "{" << be_idt_nl
- << "template<>" << be_nl
- << "::CORBA::Boolean" << be_nl
- << "Any_Dual_Impl_T<" << node->name ()
- << ">::marshal_value (TAO_OutputCDR &)" << be_nl
- << "{" << be_idt_nl
- << "return false;" << be_uidt_nl
- << "}";
-
- *os << be_nl << be_nl
- << "template<>" << be_nl
- << "::CORBA::Boolean" << be_nl
- << "Any_Dual_Impl_T<" << node->name ()
- << ">::demarshal_value (TAO_InputCDR &)" << be_nl
- << "{" << be_idt_nl
- << "return false;" << be_uidt_nl
- << "}" << be_uidt_nl
- << "}" << be_nl;
- }
-
- // Copying insertion.
- *os << be_nl << "// Copying insertion." << be_nl
- << "void operator<<= (" << be_idt << be_idt_nl
- << "::CORBA::Any &_tao_any," << be_nl
- << "const " << node->name () << " &_tao_elem" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
-
- << "if (0 == &_tao_elem) // Trying to de-reference NULL object" << be_idt_nl
- << "_tao_any <<= static_cast<" << node->name () << " *>( 0 ); // Use non-copying insertion of a NULL" << be_uidt_nl
- << "else" << be_idt_nl
-
- << "TAO::Any_Dual_Impl_T<" << node->name () << ">::insert_copy ("
- << be_idt << be_idt_nl
- << "_tao_any," << be_nl
- << node->name () << "::_tao_any_destructor," << be_nl
- << node->tc_name () << "," << be_nl
- << "_tao_elem" << be_uidt_nl
- << ");" << be_uidt << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // Non-copying insertion.
- *os << "// Non-copying insertion." << be_nl
- << "void operator<<= (" << be_idt << be_idt_nl
- << "::CORBA::Any &_tao_any," << be_nl
- << node->name () << " *_tao_elem" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
- << "TAO::Any_Dual_Impl_T<" << node->name () << ">::insert ("
- << be_idt << be_idt_nl
- << "_tao_any," << be_nl
- << node->name () << "::_tao_any_destructor," << be_nl
- << node->tc_name () << "," << be_nl
- << "_tao_elem" << be_uidt_nl
- << ");" << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // Extraction to non-const pointer (deprecated, just calls the other).
- *os << "// Extraction to non-const pointer (deprecated)." << be_nl
- << "::CORBA::Boolean operator>>= (" << be_idt << be_idt_nl
- << "const ::CORBA::Any &_tao_any," << be_nl
- << node->name () << " *&_tao_elem" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
- << "return _tao_any >>= const_cast<" << be_idt << be_idt_nl
- << "const " << node->name () << " *&> (" << be_nl
- << "_tao_elem" << be_uidt_nl
- << ");" << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // Extraction to const pointer.
- *os << "// Extraction to const pointer." << be_nl
- << "::CORBA::Boolean operator>>= (" << be_idt << be_idt_nl
- << "const ::CORBA::Any &_tao_any," << be_nl
- << "const " << node->name () << " *&_tao_elem" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
- << "return" << be_idt_nl
- << "TAO::Any_Dual_Impl_T<" << node->name () << ">::extract ("
- << be_idt << be_idt_nl
- << "_tao_any," << be_nl
- << node->name () << "::_tao_any_destructor," << be_nl
- << node->tc_name () << "," << be_nl
- << "_tao_elem" << be_uidt_nl
- << ");" << be_uidt << be_uidt << be_uidt_nl
- << "}";
-
- *os << be_global->core_versioning_end () << be_nl;
-
- 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 9442ec63130..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp
+++ /dev/null
@@ -1,283 +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
-//
-// ============================================================================
-
-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 ();
- AST_PredefinedType::PredefinedType pt = node->pt ();
-
- *os << "::";
-
- if (pt == AST_PredefinedType::PT_pseudo
- || pt == AST_PredefinedType::PT_object)
- {
- *os << node->name () << "_ptr";
- }
- else if (pt == AST_PredefinedType::PT_value)
- {
- *os << node->name () << " *";
- }
- 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_component (be_component *node)
-{
- return this->visit_interface (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_component_fwd (be_component_fwd *node)
-{
- return this->visit_interface_fwd (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_valuebox (be_valuebox *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 (), " *");
- }
- else
- {
- *os << node->name () << " *";
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_valuetype (be_valuetype *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 (), " *");
- }
- else
- {
- *os << node->name () << " *";
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_valuetype_fwd (be_valuetype_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 (), " *");
- }
- else
- {
- *os << node->name () << " *";
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_buffer_type::visit_eventtype (be_eventtype *node)
-{
- return this->visit_valuetype (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_eventtype_fwd (be_eventtype_fwd *node)
-{
- return this->visit_valuetype_fwd (node);
-}
-
-int
-be_visitor_sequence_buffer_type::visit_string (be_string *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- if (node->width () == (long) sizeof (char))
- {
- *os << "::CORBA::Char *";
- }
- else
- {
- *os << "::CORBA::WChar *";
- }
-
- 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_structure_fwd (be_structure_fwd *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_union_fwd (be_union_fwd *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);
-
- 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 5f7d08577c2..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_ch.cpp
+++ /dev/null
@@ -1,106 +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
-//
-// ============================================================================
-
-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 ()
- || node->is_local ())
- {
- return 0;
- }
-
- be_type *base_type = be_type::narrow_from_decl (node->base_type ());
-
- // If our base type is an anonymous sequence, generate code for it here.
- if (base_type->node_type () == AST_Decl::NT_sequence)
- {
- if (base_type->accept (this) != 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_cdr_op_ch::visit_sequence -"
- "codegen for nested anonymous sequence failed\n"),
- -1);
- }
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- be_type *bt = be_type::narrow_from_decl (node);
- be_typedef *tdef = be_typedef::narrow_from_decl (bt);
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__;
-
- // If we're an anonymous sequence, we must protect against
- // being declared more than once.
- if (!tdef)
- {
- *os << "\n\n#if !defined _TAO_CDR_OP_"
- << node->flat_name () << "_H_"
- << "\n#define _TAO_CDR_OP_" << node->flat_name () << "_H_";
- }
-
- *os << be_global->core_versioning_begin () << be_nl;
-
- *os << be_nl << be_nl
- << be_global->stub_export_macro () << " ::CORBA::Boolean"
- << " operator<< (" << be_idt << be_idt_nl
- << "TAO_OutputCDR &strm," << be_nl
- << "const " << node->name () << " &_tao_sequence" << be_uidt_nl
- << ");" << be_uidt_nl;
- *os << be_global->stub_export_macro () << " ::CORBA::Boolean"
- << " operator>> (" << be_idt << be_idt_nl
- << "TAO_InputCDR &strm," << be_nl
- << node->name () << " &_tao_sequence" << be_uidt_nl
- << ");" << be_uidt;
-
- *os << be_global->core_versioning_end () << be_nl;
-
- if (!tdef)
- {
- *os << "\n\n#endif /* _TAO_CDR_OP_"
- << node->flat_name () << "_H_ */";
- }
-
- 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 2b45fca1bbe..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// ============================================================================
-//
-// = 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
-//
-// ============================================================================
-
-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
- // typedef'd sequence. For the case of sequence of
- // anonymous sequence, see comment below.
- return this->visit_node (node);
- }
-
- if (node->cli_stub_cdr_op_gen ()
- || node->imported ()
- || node->is_local ())
- {
- return 0;
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- be_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);
-
- // If our element type is an anonymous sequence, generate code for it here.
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- int status =
- this->gen_anonymous_base_type (
- bt,
- TAO_CodeGen::TAO_ROOT_CDR_OP_CS
- );
-
- if (status == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_array_cdr_op_cs::"
- "visit_sequence - "
- "gen_anonymous_base_type failed\n"),
- -1);
- }
- }
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl;
-
- *os << "#if !defined _TAO_CDR_OP_"
- << node->flat_name () << "_CPP_" << be_nl
- << "#define _TAO_CDR_OP_" << node->flat_name () << "_CPP_"
- << be_nl;
-
- *os << be_global->core_versioning_begin () << be_nl;
-
- // Set the sub state as generating code for the output operator.
- this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
-
- *os << "::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;
-
- *os << "return TAO::marshal_sequence(strm, _tao_sequence);"
- << be_uidt_nl;
-
- *os << "}" << be_nl << be_nl;
-
- // Set the sub state as generating code for the input operator.
- this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
-
- *os << "::CORBA::Boolean operator>> (" << be_idt << be_idt_nl
- << "TAO_InputCDR &strm";
-
- *os << "," << be_nl
- << node->name () << " &_tao_sequence";
-
- *os << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- *os << "return TAO::demarshal_sequence(strm, _tao_sequence);"
- << be_uidt_nl;
-
- *os << "}";
-
- *os << be_nl << be_global->core_versioning_end ();
-
- *os << be_nl
- << "#endif /* _TAO_CDR_OP_"
- << node->flat_name () << "_CPP_ */";
-
- node->cli_stub_cdr_op_gen (1);
- return 0;
-}
-
-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_component (be_component *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_component_fwd (be_component_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_home (be_home *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_valuebox (be_valuebox *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_valuetype (be_valuetype *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_valuetype_fwd (be_valuetype_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_eventtype (be_eventtype *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_eventtype_fwd (be_eventtype_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_predefined_type (
- be_predefined_type *node
- )
-{
- return this->visit_node (node);
-}
-
-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)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_cdr_op_cs::visit_node (be_type *)
-{
- 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 abf654712a0..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_base.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_base.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for the base type of the Sequence
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-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)
- {
- if (this->ctx_->sub_state ()
- == TAO_CodeGen::TAO_ARRAY_SEQ_CH_TEMPLATE_VAR)
- {
- *os << bt->nested_type_name (this->ctx_->scope (), "_var");
- }
- else
- {
- *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_valuebox (be_valuebox *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_valuetype (be_valuetype *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_base::visit_valuetype_fwd (be_valuetype_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_structure_fwd (be_structure_fwd *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_union_fwd (be_union_fwd *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)
-{
- // Set the alias node.
- this->ctx_->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;
-}
-
-be_visitor_sequence_base_template_args::
-be_visitor_sequence_base_template_args (be_visitor_context *ctx,
- be_sequence *seq)
- : be_visitor_sequence_base (ctx),
- beseq_ (seq)
-{
- // no-op
-}
-
-
-be_visitor_sequence_base_template_args::
-~be_visitor_sequence_base_template_args (void)
-{
- //no-op
-}
-
-int
-be_visitor_sequence_base_template_args::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;
- }
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BASE_CH)
- {
- *os << bt->nested_type_name (this->ctx_->scope ()) << ",";
- *os << bt->nested_type_name (this->ctx_->scope (), "_var");
- }
- else
- {
- *os << bt->name () << ",";
- *os << bt->name () << "_var";
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_base_template_args::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;
- }
-
- if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BASE_CH)
- {
- *os << bt->nested_type_name (this->ctx_->scope ()) << ",";
- *os << bt->nested_type_name (this->ctx_->scope (), "_var");
- }
- else
- {
- *os << bt->name () << ",";
- *os << bt->name () << "_var";
- }
-
- return 0;
-}
-
-int
-be_visitor_sequence_base_template_args::visit_valuetype (be_valuetype *node)
-{
- return this->visit_interface (node);
-}
-
-int
-be_visitor_sequence_base_template_args::visit_valuetype_fwd (
- be_valuetype_fwd *node
- )
-{
- return this->visit_interface_fwd (node);
-}
-
-int
-be_visitor_sequence_base_template_args::visit_predefined_type (
- be_predefined_type *node
- )
-{
- TAO_OutStream *os = this->ctx_->stream ();
- *os << "::" << node->name ();
-
- if (beseq_->managed_type () == be_sequence::MNG_PSEUDO
- || beseq_->managed_type () == be_sequence::MNG_OBJREF)
- {
- *os << ", ::" << node->name () << "_var";
- }
-
- 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 265e0b8261e..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_ch.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequence in the client header
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-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::visit_sequence (be_sequence *node)
-{
- if (node->defined_in () == 0)
- {
- // The node is a nested sequence, and has had no scope defined.
- node->set_defined_in (DeclAsScope (this->ctx_->scope ()));
- }
-
- // 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;
- }
-
- be_type *bt = 0;
- TAO_OutStream *os = this->ctx_->stream ();
-
- // 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 == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Bad element type\n"),
- -1);
- }
-
- bt->seen_in_sequence (true);
- AST_Decl::NodeType nt = bt->node_type ();
-
- // If our base type is an anonymouse sequence, we must create a name
- // and generate a class declaration for it as well.
- if (nt == AST_Decl::NT_sequence)
- {
- // Temporarily make the context's tdef node 0 so the nested call
- // to create_name will not get confused and give our anonymous
- // sequence element type the same name as we have.
- be_typedef *tmp = this->ctx_->tdef ();
- this->ctx_->tdef (0);
-
- if (bt->accept (this) != 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "codegen for anonymous base type failed\n"),
- -1);
- }
-
- // Restore the tdef value.
- this->ctx_->tdef (tmp);
- }
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__;
-
- os->gen_ifdef_macro (node->flat_name ());
-
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "class " << node->local_name () << ";";
- }
-
- if (this->ctx_->tdef () != 0)
- {
- this->gen_varout_typedefs (node,
- bt);
- }
-
- *os << be_nl << be_nl
- << "class " << be_global->stub_export_macro () << " "
- << node->local_name () << be_idt_nl
- << ": public" << be_idt << be_idt_nl;
-
- if (node->gen_base_class_name (os, "", this->ctx_->scope ()) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "Base class name generation failed\n"),
- -1);
- }
-
- *os << be_uidt << be_uidt << be_uidt;
-
- *os << be_nl
- << "{" << be_nl
- << "public:" << be_idt;
-
- *os << be_nl
- << node->local_name () << " (void);";
-
- if (node->unbounded ())
- {
- *os << be_nl
- << node->local_name () << " ( ::CORBA::ULong max);";
- }
-
- *os << be_nl
- << node->local_name () << " (" << be_idt << be_idt;
-
- if (node->unbounded ())
- {
- *os << be_nl
- << "::CORBA::ULong max,";
- }
-
- *os << be_nl
- << "::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_sequence_buffer_type bt_visitor (&ctx);
-
- if (bt->accept (&bt_visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_ch::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "* buffer, " << be_nl
- << "::CORBA::Boolean release = false" << be_uidt_nl
- << ");" << be_uidt_nl;
- *os << node->local_name () << " (const " << node->local_name ()
- << " &);" << be_nl;
- *os << "virtual ~" << node->local_name () << " (void);";
-
- if (be_global->any_support () && !node->anonymous ())
- {
- *os << be_nl << be_nl
- << "static void _tao_any_destructor (void *);";
- }
-
- // Generate the _var_type typedef (only if we are not anonymous).
- if (this->ctx_->tdef () != 0)
- {
- *os << be_nl << be_nl
- << "typedef " << node->local_name () << "_var _var_type;"
- << be_nl
- << "typedef " << node->local_name () << "_out _out_type;"
- << be_nl << be_nl;
- }
-
- // 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\n#if (TAO_NO_COPY_OCTET_SEQUENCES == 1)" << 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
- << " : TAO::unbounded_value_sequence< ::CORBA::Octet>"
- << " (length, mb) {}" << "\n"
- << "#endif /* TAO_NO_COPY_OCTET_SEQUENCE == 1 */";
- }
-
- *os << be_uidt_nl
- << "};";
-
- os->gen_endif ();
-
- node->cli_hdr_gen (1);
- return 0;
-}
-
-void
-be_visitor_sequence_ch::gen_varout_typedefs (be_sequence *node,
- be_type *elem)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- *os << be_nl << be_nl;
-
- AST_Type::SIZE_TYPE st = elem->size_type ();
-
- *os << "typedef" << be_idt_nl
- << (st == AST_Type::FIXED ? "TAO_FixedSeq_Var_T<"
- : "TAO_VarSeq_Var_T<")
- << be_idt << be_idt_nl
- << node->local_name ();
-
- *os << be_uidt_nl
- << ">" << be_uidt_nl
- << node->local_name () << "_var;" << be_uidt;
-
- *os << be_nl << be_nl
- << "typedef" << be_idt_nl
- << "TAO_Seq_Out_T<" << be_idt << be_idt_nl
- << node->local_name () << be_uidt_nl
- << ">" << be_uidt_nl
- << node->local_name () << "_out;" << be_uidt;
-}
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 c96fb72bab1..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/sequence_cs.cpp
+++ /dev/null
@@ -1,198 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// sequence_cs.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Sequences in the client stubs file
-//
-// = AUTHOR
-// Aniruddha Gokhale
-//
-// ============================================================================
-
-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)
-{
-}
-
-int be_visitor_sequence_cs::visit_sequence (be_sequence *node)
-{
- if (node->imported () || node->cli_stub_gen ())
- {
- return 0;
- }
-
- be_type *bt = be_type::narrow_from_decl (node->base_type ());
- AST_Decl::NodeType nt = bt->node_type ();
-
- // If our base type is an anonymous sequence, generate code for it here.
- if (nt == AST_Decl::NT_sequence)
- {
- if (bt->accept (this) != 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for anonymous base type failed\n"),
- -1);
- }
-
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from " << be_nl
- << "// "__FILE__ << ":" << __LINE__;
-
- os->gen_ifdef_macro (node->flat_name ());
-
- // default constructor
- *os << be_nl << be_nl
- << node->name () << "::" << node->local_name () << " (void)" << be_nl
- << "{}";
-
- // for unbounded sequences, we have a different set of constructors
- if (node->unbounded ())
- {
- *os << be_nl << be_nl
- << node->name () << "::" << node->local_name () << " ("
- << be_idt << be_idt_nl
- << "::CORBA::ULong max" << be_uidt_nl
- << ")" << be_nl
- << ": " << be_idt;
-
- // Pass it to the base constructor.
- if (node->gen_base_class_name (os, "", this->ctx_->scope ()) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class failed\n"),
- -1);
- }
-
-
- *os << be_nl << "(max)" << be_uidt << be_uidt_nl
- << "{}";
- }
-
- // constructor with the buffer
- *os << be_nl << be_nl
- << node->name () << "::" << node->local_name () << " ("
- << be_idt << 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_);
- be_visitor_sequence_buffer_type bt_visitor (&ctx);
-
- if (bt->accept (&bt_visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << " * buffer," << be_nl
- << "::CORBA::Boolean release" << be_uidt_nl
- << ")" << be_uidt_nl
- << " : " << be_idt << be_idt;
-
- // Pass it to the base constructor.
- if (node->gen_base_class_name (os, "", this->ctx_->scope ()) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class\n"),
- -1);
- }
-
- *os << be_nl << "(";
-
- if (node->unbounded ())
- {
- *os << "max, ";
- }
-
- *os << "length, buffer, release)" << be_uidt << be_uidt_nl
- << "{}";
-
- // Copy constructor.
- *os << be_nl << be_nl
- << node->name () << "::" << node->local_name ()
- << " (" << be_idt << be_idt_nl
- << "const " << node->local_name ()
- << " &seq" << be_uidt_nl
- << ")" << be_uidt_nl
- << " : " << be_idt << be_idt;
-
- // Pass it to the base constructor.
- if (node->gen_base_class_name (os, "", this->ctx_->scope ()) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_cs::"
- "visit_sequence - "
- "codegen for base sequence class\n"),
- -1);
- }
-
- *os << be_nl << "(seq)" << be_uidt << be_uidt_nl
- << "{}";
-
- // Destructor.
- *os << be_nl << be_nl
- << node->name () << "::~" << node->local_name ()
- << " (void)" << be_nl
- << "{}";
-
-
- if (be_global->any_support () && !node->anonymous ())
- {
- *os << be_nl << be_nl
- << "void "
- << node->name () << "::_tao_any_destructor (" << be_idt << be_idt_nl
- << "void * _tao_void_pointer" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl
- << node->local_name () << " * _tao_tmp_pointer =" << be_idt_nl
- << "static_cast<" << node->local_name ()
- << " *> (_tao_void_pointer);" << be_uidt_nl
- << "delete _tao_tmp_pointer;" << be_uidt_nl
- << "}";
- }
-
- os->gen_endif ();
-
- node->cli_stub_gen (true);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_ch.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_ch.cpp
deleted file mode 100644
index cc9216fa8fb..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_ch.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// serializer_op_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for TAO::DCPS::Serializer operators for sequences.
-// This uses compiled marshaling.
-//
-// = AUTHOR
-// Scott Harris <harris_s@ociweb.com> based on code by Aniruddha Gokhale
-//
-// ============================================================================
-
-ACE_RCSID (be_visitor_sequence,
- serializer_op_ch,
- "$Id$")
-
-// ***************************************************************************
-// Sequence visitor for generating Serializer operator declarations in the client header
-// ***************************************************************************
-
-be_visitor_sequence_serializer_op_ch::be_visitor_sequence_serializer_op_ch (
- be_visitor_context *ctx
- )
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_serializer_op_ch::~be_visitor_sequence_serializer_op_ch (void)
-{
-}
-
-int
-be_visitor_sequence_serializer_op_ch::visit_sequence (be_sequence *node)
-{
- if (node->cli_hdr_serializer_op_gen ()
- || node->imported ()
- || node->is_local ())
- {
- return 0;
- }
-
- be_type *base_type = be_type::narrow_from_decl (node->base_type ());
-
- // If our base type is an anonymous sequence, generate code for it here.
- if (base_type->node_type () == AST_Decl::NT_sequence)
- {
- if (base_type->accept (this) != 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_ch::visit_sequence -"
- "codegen for nested anonymous sequence failed\n"),
- -1);
- }
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- be_type *bt = be_type::narrow_from_decl (node);
- be_typedef *tdef = be_typedef::narrow_from_decl (bt);
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__;
-
- // If we're an anonymous sequence, we must protect against
- // being declared more than once.
- if (!tdef)
- {
- *os << "\n\n#if !defined _TAO_SERIALIZER_OP_"
- << node->flat_name () << "_H_"
- << "\n#define _TAO_SERIALIZER_OP_" << node->flat_name () << "_H_";
- }
-
- *os << be_nl << be_nl;
-
- *os << be_global->stub_export_macro ()
- << " ::CORBA::Boolean _tao_is_bounded_size (" << be_idt << be_idt_nl
- << "const " << node->name () << " &" << be_uidt_nl
- << ");" << be_uidt_nl;
- *os << be_global->stub_export_macro ()
- << " size_t _dcps_max_marshaled_size (" << be_idt << be_idt_nl
- << "const " << node->name () << " &" << be_uidt_nl
- << ");" << be_uidt_nl;
- *os << be_global->stub_export_macro ()
- << " size_t _dcps_find_size (" << be_idt << be_idt_nl
- << "const " << node->name () << " &" << be_uidt_nl
- << ");" << be_uidt_nl;
-
- *os << be_nl << be_nl
- << be_global->stub_export_macro () << " ::CORBA::Boolean"
- << " operator<< (" << be_idt << be_idt_nl
- << "TAO::DCPS::Serializer &," << be_nl
- << "const " << node->name () << " &" << be_uidt_nl
- << ");" << be_uidt_nl;
- *os << be_global->stub_export_macro () << " ::CORBA::Boolean"
- << " operator>> (" << be_idt << be_idt_nl
- << "TAO::DCPS::Serializer &," << be_nl
- << node->name () << " &" << be_uidt_nl
- << ");" << be_uidt;
-
- if (!tdef)
- {
- *os << "\n\n#endif /* _TAO_SERIALIZER_OP_"
- << node->flat_name () << "_H_ */";
- }
-
- node->cli_hdr_serializer_op_gen (1);
- return 0;
-}
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_cs.cpp
deleted file mode 100644
index 103a4281f78..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_sequence/serializer_op_cs.cpp
+++ /dev/null
@@ -1,1337 +0,0 @@
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// serializer_op_cs.cpp
-//
-// = DESCRIPTION
-// Visitor for code generation of Sequences for the
-// TAO::DCPS::Serializer operators in the client stubs.
-//
-// = AUTHOR
-// Scott Harris <harris_s@ociweb.com> based on code by Aniruddha Gokhale
-//
-// ============================================================================
-
-ACE_RCSID (be_visitor_sequence,
- serializer_op_cs,
- "$Id$")
-
-// ***************************************************************************
-// Sequence visitor for generating Serializer operator declarations in the client
-// stubs file.
-// ***************************************************************************
-
-be_visitor_sequence_serializer_op_cs::be_visitor_sequence_serializer_op_cs (
- be_visitor_context *ctx
- )
- : be_visitor_decl (ctx)
-{
-}
-
-be_visitor_sequence_serializer_op_cs::~be_visitor_sequence_serializer_op_cs (void)
-{
-}
-
-int
-be_visitor_sequence_serializer_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
- // typedef'd sequence. For the case of sequence of
- // anonymous sequence, see comment below.
- return this->visit_node (node);
- }
-
- if (node->cli_stub_serializer_op_gen ()
- || node->imported ()
- || node->is_local ())
- {
- return 0;
- }
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- be_type *bt =
- be_type::narrow_from_decl (node->base_type ());
-
- if (!bt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "Bad base type\n"),
- -1);
- }
-
- // Generate the Serializer << and >> operator defns.
-
- // Save the sequence node for further use.
- this->ctx_->node (node);
-
- // If our element type is an anonymous sequence, generate code for it here.
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- int status =
- this->gen_anonymous_base_type (
- bt,
- TAO_CodeGen::TAO_ROOT_SERIALIZER_OP_CS
- );
-
- if (status == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "gen_anonymous_base_type failed\n"),
- -1);
- }
- }
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
-
- *os << "#if !defined _TAO_SERIALIZER_OP_"
- << node->flat_name () << "_CPP_" << be_nl
- << "#define _TAO_SERIALIZER_OP_" << node->flat_name () << "_CPP_"
- << be_nl << be_nl;
-
- // --- _tao_is_bounded_size ---
- this->ctx_->sub_state (TAO_CodeGen::TAO_IS_BOUNDED_SIZE);
-
- *os << "::CORBA::Boolean _tao_is_bounded_size (" << be_idt << be_idt_nl
- << "const " << node->name ()
- << " &_tao_sequence" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- this->visit_node (node);
- }
- else
- {
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- }
-
- *os << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // --- _dcps_max_marshaled_size ---
-
- this->ctx_->sub_state (TAO_CodeGen::TAO_MAX_MARSHALED_SIZE);
-
- *os << "size_t _dcps_max_marshaled_size (" << be_idt << be_idt_nl
- << "const " << node->name ()
- << " &_tao_sequence" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- this->visit_node (node);
- }
- else
- {
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- }
-
- *os << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // --- _dcps_find_size ---
- this->ctx_->sub_state (TAO_CodeGen::TAO_FIND_SIZE);
-
- *os << "size_t _dcps_find_size (" << be_idt << be_idt_nl
- << "const " << node->name ()
- << " &_tao_sequence" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- this->visit_node (node);
- }
- else
- {
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- }
-
- *os << be_uidt_nl
- << "}" << be_nl << be_nl;
-
-
- // --- operator<< ---
-
- // Set the sub state as generating code for the output operator.
- this->ctx_->sub_state (TAO_CodeGen::TAO_CDR_OUTPUT);
-
- *os << "::CORBA::Boolean operator<< (" << be_idt << be_idt_nl
- << "TAO::DCPS::Serializer &strm," << be_nl
- << "const " << node->name ()
- << " &_tao_sequence" << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- // First encode the sequence length.
- *os << "const ::CORBA::ULong _tao_seq_len = _tao_sequence.length ();"
- << be_nl << be_nl;
- *os << "if (strm << _tao_seq_len)" << be_idt_nl
- << "{" << be_idt_nl;
-
- // Now encode the sequence elements.
- *os << "// Encode all elements." << be_nl;
-
-
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- this->visit_node (node);
- }
- else
- {
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_op_cs::"
- "visit_sequence - "
- "Base type codegen failed\n"),
- -1);
- }
- }
-
- *os << "}" << be_uidt_nl << be_nl
- << "return 0;" << be_uidt_nl
- << "}" << be_nl << be_nl;
-
- // --- operator>> ---
-
- // Set the sub state as generating code for the input operator.
- this->ctx_->sub_state(TAO_CodeGen::TAO_CDR_INPUT);
-
- *os << "::CORBA::Boolean operator>> (" << be_idt << be_idt_nl
- << "TAO::DCPS::Serializer &";
-
- if (! bt->is_local ())
- {
- *os << "strm";
- }
-
- *os << "," << be_nl
- << node->name () << " &";
-
- if (! bt->is_local ())
- {
- *os << "_tao_sequence";
- }
-
- *os << be_uidt_nl
- << ")" << be_uidt_nl
- << "{" << be_idt_nl;
-
- if (! bt->is_local ())
- {
- // First retrieve the length and adjust the sequence length accordingly.
- *os << "::CORBA::ULong _tao_seq_len;" << be_nl << be_nl;
- *os << "if (strm >> _tao_seq_len)" << be_idt_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 ();
-
- if (expr == 0 || (expr != 0 && expr->ev () == 0))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_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_idt_nl
- << "{" << be_idt_nl;
- }
- }
- else
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_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 << be_nl;
-
- // Now we do a check for the sequence length to be non zero.
- // If length is 0 we return true.
- *os << "// If length is 0 we return true." << be_nl;
- *os << "if (0 >= _tao_seq_len) " << be_idt_nl
- << "{" << be_idt_nl;
- *os << "return 1;" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl;
-
- *os << "// Retrieve all the elements." << be_nl;
-
- if (bt->node_type () == AST_Decl::NT_sequence)
- {
- this->visit_node (node);
- }
- else
- {
- if (bt->accept (this) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_sequence_serializer_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_nl << "}" << be_uidt << be_uidt;
- }
-
- *os << be_nl << "}" << be_uidt_nl << be_nl;
- }
-
- *os << "return 0;" << be_uidt_nl
- << "}";
-
- *os << be_nl << be_nl
- << "#endif /* _TAO_SERIALIZER_OP_"
- << node->flat_name () << "_CPP_ */";
-
- node->cli_stub_serializer_op_gen (1);
- return 0;
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_array (be_array *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_enum (be_enum *node)
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- // 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.
-
- be_sequence *sequence = this->ctx_->be_node_as_sequence ();
-
- if (!sequence)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_enum - "
- "bad sequence node\n"),
- -1);
- }
-
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_IS_BOUNDED_SIZE:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- if (sequence->unbounded ())
- *os << "return false; /* unbounded enum sequence */";
- else
- *os << "return true; /* bounded enum sequence */";
- break;
- case TAO_CodeGen::TAO_FIND_SIZE:
- *os << "//enum types are fixed size so OK to call max_marshaled_size"
- << be_nl;
- case TAO_CodeGen::TAO_MAX_MARSHALED_SIZE:
- *os << "//sequence of enum = ulong for length + ulong for enum * length"
- << be_nl;
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size_ulong () * "
- << be_idt << be_idt_nl;
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_FIND_SIZE:
- *os << "_tao_sequence.length();" << be_uidt << be_uidt;
- break;
- case TAO_CodeGen::TAO_MAX_MARSHALED_SIZE:
- *os << "_tao_sequence.maximum();" << be_uidt << be_uidt;
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_array_serializer_op_cs::"
- "visit_enum - "
- "bad sub_state for seq length\n"),
- -1);
- }
- break;
- default:
- return this->visit_node (node);
- }
- return 0;
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_interface (be_interface *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_interface_fwd (be_interface_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_component (be_component *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_component_fwd (be_component_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_home (be_home *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_valuetype (be_valuetype *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_valuetype_fwd (be_valuetype_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_eventtype (be_eventtype *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_eventtype_fwd (be_eventtype_fwd *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_predefined_type (
- be_predefined_type *node
- )
-{
- TAO_OutStream *os = this->ctx_->stream ();
-
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_object:
- case AST_PredefinedType::PT_value:
- case AST_PredefinedType::PT_pseudo:
- case AST_PredefinedType::PT_any:
- return this->visit_node (node);
- case AST_PredefinedType::PT_void:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_predefined_type - "
- "Bad primitive type\n"),
- -1);
- default:
- 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.
-
- be_sequence *sequence = this->ctx_->be_node_as_sequence ();
-
- if (!sequence)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_predefined_type - "
- "bad sequence node\n"),
- -1);
- }
-
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_IS_BOUNDED_SIZE:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- if (sequence->unbounded ())
- *os << "return false; /* seq<predef'd> */";
- else
- *os << "return true; /* seq<predef'd,N> */";
- break;
- case TAO_CodeGen::TAO_FIND_SIZE:
- *os << "//primitive types are fixed size so OK to call max_marshaled_size"
- << be_nl;
- case TAO_CodeGen::TAO_MAX_MARSHALED_SIZE:
- switch (node->pt ())
- {
- case AST_PredefinedType::PT_octet:
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size_octet ()"
- << be_idt << be_idt_nl;
- break;
- case AST_PredefinedType::PT_char:
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size_char ()"
- << be_idt << be_idt_nl;
- break;
- case AST_PredefinedType::PT_wchar:
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size_wchar ()"
- << be_idt << be_idt_nl;
- break;
- case AST_PredefinedType::PT_long:
- case AST_PredefinedType::PT_ulong:
- case AST_PredefinedType::PT_short:
- case AST_PredefinedType::PT_ushort:
- case AST_PredefinedType::PT_float:
- case AST_PredefinedType::PT_double:
- case AST_PredefinedType::PT_longlong:
- case AST_PredefinedType::PT_ulonglong:
- case AST_PredefinedType::PT_longdouble:
- *os << "//sequence is of a fixed sized predefined type = "
- << "sizeof(ULong) + type size * length" << be_nl;
- *os << node->name () << " a_base_value;" << be_nl;
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size (a_base_value)"
- << be_idt << be_idt_nl;
- break;
- break;
- case AST_PredefinedType::PT_boolean:
- *os << "return _dcps_max_marshaled_size_ulong () + "
- << "_dcps_max_marshaled_size_boolean ()"
- << be_idt << be_idt_nl;
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_array_serializer_op_cs::"
- "visit_predefined_type - "
- "bad primitive type for _dcps_max_marshaled_size code gen\n"),
- -1);
- }
-
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_FIND_SIZE:
- *os << " * _tao_sequence.length();" << be_uidt << be_uidt;
- break;
- case TAO_CodeGen::TAO_MAX_MARSHALED_SIZE:
- *os << " * _tao_sequence.maximum();" << be_uidt << be_uidt;
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_array_serializer_op_cs::"
- "visit_predefined_type - "
- "bad sub_state for seq length\n"),
- -1);
- }
- break;
- case TAO_CodeGen::TAO_CDR_INPUT:
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- {
- /*
- * Avoiding the work to make TAO::DCPS::Serializer handle the
- * TAO_NO_COPY_OCTET_SEQUENCES optimization.
- * TBD - support this optimization -- see corresponding CDR code.
- */
- *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_serializer_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_serializer_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;
- default:
- // error
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs"
- "::visit_predefined_type - "
- "bad codegen substate\n"),
- -1);
- }
- break;
- default:
- *os << " (_tao_sequence.get_buffer (), ";
- break;
- }
-
- *os << "_tao_sequence.length ());" << be_uidt_nl;
-
- } // end TAO_CDR_INPUT/OUTPUT case
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_predefined_type - outter "
- "bad sub state\n"),
- -1);
- } // end outter switch
-
- return 0;
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_string (be_string *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_structure (be_structure *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_union (be_union *node)
-{
- return this->visit_node (node);
-}
-
-int
-be_visitor_sequence_serializer_op_cs::visit_typedef (be_typedef *node)
-{
- this->ctx_->alias (node);
- be_type *bt = node->primitive_base_type ();
-
- if (!bt || (bt->accept (this) == -1))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_typedef - "
- "Bad primitive type\n"),
- -1);
- }
-
- this->ctx_->alias (0);
- return 0;
-}
-
-int
-be_visitor_sequence_serializer_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_serializer_op_cs::"
- "visit_node - "
- "bad sequence node\n"),
- -1);
- }
-
- be_visitor_context ctx (*this->ctx_);
- be_visitor_sequence_base visitor (&ctx);
-
- // 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 ();
-
- if (expr == 0 || (expr != 0 && expr->ev () == 0))
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad sequence dimension\n"),
- -1);
- }
-
- AST_Decl::NodeType nt = bt->node_type ();
- be_typedef *td = 0;
-
- if (nt == AST_Decl::NT_typedef)
- {
- td = be_typedef::narrow_from_decl (bt);
- nt = td->base_node_type ();
- }
-
-switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_IS_BOUNDED_SIZE:
- if (node->unbounded ())
- {
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << "return false; /* unbounded sequence */";
- }
- else
-
- switch (nt)
- {
- case AST_Decl::NT_enum:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << "return true; // bounded seqence of enums";
- break;
- case AST_Decl::NT_union:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << "// Always return false for a union because " << be_nl
- << "// _dcps_max_marshaled_size may produce an access violation."
- << be_nl
- << "return false; // seq of union " << bt->name () << be_uidt;
- break;
- case AST_Decl::NT_sequence:
- case AST_Decl::NT_struct:
- // its a type that should be defined in the generated code.
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << bt->name () << " a_base_value;" << be_nl;
- *os << "return _tao_is_bounded_size (a_base_value);";
- break;
- case AST_Decl::NT_array:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << bt->name () << " a_base_value;" << be_nl;
- *os << bt->name () << "_forany tmp(a_base_value);" << be_nl;
- *os << "return _tao_is_bounded_size (tmp);" << be_uidt_nl;
- break;
- case AST_Decl::NT_string:
- case AST_Decl::NT_wstring:
- {
- be_string *str =
- be_string::narrow_from_decl (
- td == 0 ? bt : td->primitive_base_type ()
- );
-
- if (!str)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad string node\n"),
- -1);
- }
-
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- if (str->max_size ()->ev ()->u.ulval == 0)
- {
- // Unbounded string
- *os << "return false; /* bounded seq of unbounded strings */";
- }
- else
- {
- *os << "return true; /* bounded seq of bounded strings */";
- }
- }
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - is_bounded_size - "
- "unsupported sequence base type\n"),
- -1);
- break;
- }
- break;
- case TAO_CodeGen::TAO_MAX_MARSHALED_SIZE:
- switch (nt)
- {
- case AST_Decl::NT_enum:
- *os << "// sequence of enums" << be_nl
- << "return _dcps_max_marshaled_size_ulong () + " << be_idt_nl
- << "_tao_sequence.maximum() * " << be_nl
- << "_dcps_max_marshaled_size_ulong ();" << be_uidt;
- break;
- case AST_Decl::NT_union:
- *os << "ACE_UNUSED_ARG(_tao_sequence);" << be_nl;
- *os << "// do not try getting the _dcps_max_marshaled_size" << be_nl
- << "// doing so may produce an access violation" << be_nl
- << "return 100000; // seq of union " << bt->name () << be_uidt;
- break;
- case AST_Decl::NT_sequence:
- case AST_Decl::NT_struct:
- // its a type that should be defined in the generated code.
- *os << bt->name () << " a_base_value;" << be_nl
- << "return _dcps_max_marshaled_size_ulong () + " << be_idt_nl
- << "_tao_sequence.maximum() * " << be_nl
- << "_dcps_max_marshaled_size (a_base_value);" << be_uidt;
- break;
- case AST_Decl::NT_array:
- *os << bt->name () << " a_base_value;" << be_nl;
- *os << bt->name() << "_forany tmp(a_base_value);" << be_nl;
- *os << "return _dcps_max_marshaled_size_ulong () + " << be_idt_nl
- << "_tao_sequence.maximum() * " << be_nl;
- *os << "_dcps_max_marshaled_size (tmp);" << be_uidt_nl;
-
- break;
- case AST_Decl::NT_string:
- case AST_Decl::NT_wstring:
- {
- be_string *str =
- be_string::narrow_from_decl (
- td == 0 ? bt : td->primitive_base_type ()
- );
-
- if (!str)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad string node\n"),
- -1);
- }
-
- u_long max_size = str->max_size ()->ev ()->u.ulval;
- if (max_size == 0)
- *os << "// bounded seq of unbounded strings" << be_nl;
- else
- *os << "// bounded seq of bounded strings" << be_nl;
-
- char buff[15];
- ACE_OS::sprintf(buff, "%ld", max_size);
- *os << "return _dcps_max_marshaled_size_ulong () + " << be_nl
- << " _tao_sequence.maximum() * ";
- *os << "(_dcps_max_marshaled_size_ulong () + " << buff << ");";
-
- }
- break;
- case AST_Decl::NT_interface:
- *os << "//DCPS - Sequence of interfaces is not supported" << be_nl;
- *os << "return 77777;" << be_nl;
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - is_bounded_size - "
- "unsupported sequence base type\n"),
- -1);
- break;
- }
- break;
- case TAO_CodeGen::TAO_FIND_SIZE:
- {
- *os << "//iterate over the sequence to find the current size" << be_nl
- << "size_t the_length = _dcps_max_marshaled_size_ulong ();" << be_nl
- << "for ( ::CORBA::ULong i = 0; i < _tao_sequence.length(); "
- << "++i)" << be_idt_nl
- << "{" << be_idt_nl;
-
- switch (nt)
- {
- case AST_Decl::NT_enum:
- *os << "the_length += _dcps_max_marshaled_size_ulong (); // enum" << be_uidt_nl;
- break;
- case AST_Decl::NT_union:
- case AST_Decl::NT_sequence:
- case AST_Decl::NT_struct:
- // its a type that should be defined in the generated code.
- *os << "the_length += _dcps_find_size (_tao_sequence[i]);" << be_uidt_nl;
- break;
- case AST_Decl::NT_array:
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_var tmp_var (" << be_idt << be_idt_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_dup (_tao_sequence[i])" << be_uidt_nl
- << ");" << be_uidt_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_forany tmp (tmp_var.inout ());" << be_nl;
- *os << "the_length += _dcps_find_size (tmp);" << be_uidt_nl;
-
- break;
- case AST_Decl::NT_string:
- case AST_Decl::NT_wstring:
- *os << "the_length += _dcps_max_marshaled_size_ulong () + "
- << "ACE_OS::strlen (_tao_sequence[i]);" << be_uidt_nl;
- break;
- case AST_Decl::NT_interface:
- *os << "//DCPS - Sequence of interfaces is not supported" << be_nl;
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - is_bounded_size - "
- "unsupported sequence base type\n"),
- -1);
- break;
- }
-
-
- *os << "}" << be_uidt_nl
- << "return the_length;";
- }
- break;
- case TAO_CodeGen::TAO_CDR_INPUT:
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- {
- // Initialize a boolean variable.
- *os << "::CORBA::Boolean _tao_marshal_flag = true;" << be_nl << be_nl;
-
-
- if (expr->ev ()->et == AST_Expression::EV_ulong)
- {
- *os << "for ( ::CORBA::ULong i = 0; i < _tao_seq_len"
- << " && _tao_marshal_flag; "
- << "++i)" << be_idt_nl
- << "{" << be_idt_nl;
- }
- else
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad sequence dimension value\n"),
- -1);
- }
-
- switch (this->ctx_->sub_state ())
- {
- case TAO_CodeGen::TAO_CDR_INPUT:
- switch (nt)
- {
- case AST_Decl::NT_array:
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_forany tmp (";
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_alloc ());" << be_nl;
- *os << "_tao_marshal_flag = (strm >> tmp);" << be_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_copy (_tao_sequence[i], tmp.in ());" << be_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_free (tmp.inout ());" << be_uidt_nl;
-
- break;
- case AST_Decl::NT_string:
- case AST_Decl::NT_wstring:
- {
- be_string *str =
- be_string::narrow_from_decl (
- td == 0 ? bt : td->primitive_base_type ()
- );
-
- if (!str)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad string node\n"),
- -1);
- }
-
- if (str->max_size ()->ev ()->u.ulval == 0)
- {
- // Unbounded.
- *os << node->name ()
- << "::value_type * buffer = _tao_sequence.get_buffer();"
- << be_idt_nl;;
- *os << "_tao_marshal_flag = (strm >> buffer[i]);"
- << be_uidt_nl;
- }
- else
- {
- if (str->width () == (long) sizeof (char))
- {
- *os << "_tao_marshal_flag = (strm >> "
- << "::ACE_InputCDR::to_string (_tao_sequence[i].out (), ";
- }
- else
- {
- *os << "_tao_marshal_flag = (strm >> "
- << "::ACE_InputCDR::to_wstring (_tao_sequence[i].out (), ";
- }
-
- *os << str->max_size ()->ev ()->u.ulval << "));"
- << be_uidt_nl;
- }
- }
- break;
- case AST_Decl::NT_interface:
- case AST_Decl::NT_interface_fwd:
- case AST_Decl::NT_valuetype:
- case AST_Decl::NT_valuetype_fwd:
- *os << "//DCPS does not support interfaces and value types";
-
- 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 (
- td == 0 ? bt : td->primitive_base_type ()
- );
-
- if (!pt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad predefined type node\n"),
- -1);
- }
-
- switch (pt->pt ())
- {
- case AST_PredefinedType::PT_pseudo:
- case AST_PredefinedType::PT_object:
- case AST_PredefinedType::PT_value:
- *os << "_tao_marshal_flag = (strm >> _tao_sequence[i].out ());";
- break;
- case AST_PredefinedType::PT_char:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm >> ::ACE_InputCDR::to_char (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_wchar:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm >> ::ACE_InputCDR::to_wchar (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_boolean:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm >> ::ACE_InputCDR::to_boolean (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_octet:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm >> ::ACE_InputCDR::to_octet (_tao_sequence[i]));"
- << be_uidt;
- break;
- default:
- *os << "_tao_marshal_flag = (strm >> _tao_sequence[i]);";
- break;
- }
- }
-
- break;
- default:
- *os << "_tao_marshal_flag = (strm >> _tao_sequence[i]);";
-
- break;
- }
-
- *os << be_uidt_nl
- << "}";
-
- break;
- case TAO_CodeGen::TAO_CDR_OUTPUT:
- switch (nt)
- {
- case AST_Decl::NT_array:
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_var tmp_var (" << be_idt << be_idt_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_dup (_tao_sequence[i])" << be_uidt_nl
- << ");" << be_uidt_nl;
-
- if (bt->accept (&visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "base type visit failed\n"),
- -1);
- }
-
- *os << "_forany tmp (tmp_var.inout ());" << be_nl;
- *os << "_tao_marshal_flag = (strm << tmp);";
-
- break;
- case AST_Decl::NT_interface:
- case AST_Decl::NT_interface_fwd:
- *os << "//DCPS does not support interfaces";
-
- break;
- case AST_Decl::NT_string:
- case AST_Decl::NT_wstring:
- *os << "_tao_marshal_flag = (strm << _tao_sequence[i]);";
- break;
- case AST_Decl::NT_valuetype:
- case AST_Decl::NT_valuetype_fwd:
- *os << "//DCPS does not support value types";
-
- break;
- case AST_Decl::NT_pre_defined:
- {
- //SHH harris_s@ociweb.com - I am not sure you can every get here
- // predefined types are handled by be_visitor_sequence_serializer_op_cs::visit_predefined_type
- be_predefined_type *pt =
- be_predefined_type::narrow_from_decl (
- td == 0 ? bt : td->primitive_base_type ()
- );
-
- if (!pt)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad predefined type node\n"),
- -1);
- }
-
- switch (pt->pt ())
- {
- case AST_PredefinedType::PT_pseudo:
- case AST_PredefinedType::PT_object:
- case AST_PredefinedType::PT_value:
- *os << "_tao_marshal_flag = (strm << _tao_sequence[i].in ());";
- break;
- case AST_PredefinedType::PT_char:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm << ::ACE_OutputCDR::from_char (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_wchar:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm << ::ACE_OutputCDR::from_wchar (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_boolean:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm << ::ACE_OutputCDR::from_boolean (_tao_sequence[i]));"
- << be_uidt;
- break;
- case AST_PredefinedType::PT_octet:
- *os << "_tao_marshal_flag =" << be_idt_nl
- << "(strm << ::ACE_OutputCDR::from_octet (_tao_sequence[i]));"
- << be_uidt;
- break;
- default:
- *os << "_tao_marshal_flag = (strm << _tao_sequence[i]);";
- break;
- }
- }
-
- break;
- default:
- *os << "_tao_marshal_flag = (strm << _tao_sequence[i]);";
-
- break;
- }
-
- *os << be_uidt_nl
- << "}";
-
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad sub state\n"),
- -1);
- }
-
- *os << be_uidt_nl << be_nl;
- *os << "return _tao_marshal_flag;" << be_uidt_nl;
- }
- break;
- default:
- // Error.
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_sequence_serializer_op_cs::"
- "visit_node - "
- "bad sub state\n"),
- -1);
- break;
-} //outer switch
-
-
- return 0;
-}