diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp | 67 |
1 files changed, 46 insertions, 21 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp index ae3536245da..434e5706ed8 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/buffer_type.cpp @@ -18,21 +18,17 @@ // // ============================================================================ -#include "idl.h" -#include "idl_extern.h" -#include "be.h" - -#include "be_visitor_sequence.h" - -ACE_RCSID(be_visitor_sequence, buffer_type, "$Id$") - +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_sequence_buffer_type::be_visitor_sequence_buffer_type ( + be_visitor_context *ctx + ) : be_visitor_decl (ctx) { } @@ -49,14 +45,23 @@ be_visitor_sequence_buffer_type::visit_node (be_type *node) be_type *bt; if (this->ctx_->alias ()) - bt = this->ctx_->alias (); + { + bt = this->ctx_->alias (); + } else - bt = node; + { + bt = node; + } if (this->ctx_->state () == TAO_CodeGen::TAO_SEQUENCE_BUFFER_TYPE_CH) - *os << bt->nested_type_name (this->ctx_->scope ()); + { + *os << bt->nested_type_name (this->ctx_->scope ()); + } else - *os << bt->name (); + { + *os << bt->name (); + } + return 0; } @@ -64,10 +69,16 @@ 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"; + { + *os << node->name () << "_ptr"; + } else - *os << node->name (); + { + *os << node->name (); + } + return 0; } @@ -81,10 +92,16 @@ 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"); + { + *os << node->nested_type_name (this->ctx_->scope (), "_ptr"); + } else - *os << node->name () << "_ptr"; + { + *os << node->name () << "_ptr"; + } + return 0; } @@ -92,10 +109,16 @@ 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"); + { + *os << node->nested_type_name (this->ctx_->scope (), "_ptr"); + } else - *os << node->name () << "_ptr"; + { + *os << node->name () << "_ptr"; + } + return 0; } @@ -161,7 +184,8 @@ be_visitor_sequence_buffer_type::visit_array (be_array *node) int be_visitor_sequence_buffer_type::visit_typedef (be_typedef *node) { - this->ctx_->alias (node); // set the alias node + this->ctx_->alias (node); + if (node->primitive_base_type ()->accept (this) == -1) { ACE_ERROR_RETURN ((LM_ERROR, @@ -170,6 +194,7 @@ be_visitor_sequence_buffer_type::visit_typedef (be_typedef *node) "accept on primitive type failed\n"), -1); } + this->ctx_->alias (0); return 0; } |