diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
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 index f804c829f80..47bedc70227 100644 --- 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 @@ -20,7 +20,7 @@ // // ============================================================================ -#include "be.h" +#include "be.h" #include "be_visitor_sequence.h" @@ -113,6 +113,7 @@ be_visitor_sequence_ch::gen_bounded_obj_sequence (be_sequence *node) && prim && prim->pt () == AST_PredefinedType::PT_pseudo && ACE_OS::strcmp (prim->local_name ()->get_string (), "Object") != 0; + int is_valuetype = 0; // operator[] if (is_pseudo_object) @@ -121,7 +122,12 @@ be_visitor_sequence_ch::gen_bounded_obj_sequence (be_sequence *node) } else { - *os << "TAO_Object_Manager<"; + be_interface *bf = be_interface::narrow_from_decl (pt); + is_valuetype = bf->is_valuetype (); + if (is_valuetype) + *os << "TAO_Valuetype_Manager<"; + else + *os << "TAO_Object_Manager<"; } *os << bt->name () << "," @@ -171,16 +177,16 @@ be_visitor_sequence_ch::gen_bounded_obj_sequence (be_sequence *node) << "CORBA::ULong ol" << be_uidt_nl << ");" << be_uidt_nl << be_nl; - if (!is_pseudo_object) + if (! (is_pseudo_object || is_valuetype)) { // Pseudo objects do not require these 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 - << "TAO_default_environment ()" - << be_uidt << be_uidt_nl - << ");" << be_uidt_nl; + << "void* target," << be_nl + << "CORBA_Object *src," << be_nl + << "CORBA_Environment &ACE_TRY_ENV = " << be_idt_nl + << "TAO_default_environment ()" + << be_uidt << be_uidt_nl + << ");" << be_uidt_nl; *os << "virtual CORBA_Object* _upcast (void *src) const;"; } |