summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_sequence/gen_bounded_obj_sequence_ch.cpp
diff options
context:
space:
mode:
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.cpp24
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;";
}