diff options
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp | 8 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_traits.cpp | 33 | ||||
-rw-r--r-- | TAO/TAO_IDL/be_include/be_visitor_traits.h | 2 |
4 files changed, 43 insertions, 8 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp index 6bd241611c7..e73457d8bc4 100644 --- a/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp +++ b/TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp @@ -189,7 +189,7 @@ int be_visitor_array_ci::visit_array (be_array *node) os->gen_ifdef_macro (unique.fast_rep ()); *os << be_nl << be_nl - << "ACE_TEMPLATE_METHOD_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << "void" << be_nl << "TAO::Array_Traits<" << fname << ", " @@ -202,7 +202,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_METHOD_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << fname << "_slice *" << be_nl << "TAO::Array_Traits<" << fname << ", " @@ -215,7 +215,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_METHOD_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << "void" << be_nl << "TAO::Array_Traits<" << fname << ", " @@ -229,7 +229,7 @@ int be_visitor_array_ci::visit_array (be_array *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_METHOD_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "ACE_INLINE" << be_nl << fname << "_slice *" << be_nl << "TAO::Array_Traits<" << fname << ", " diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp index 1f5f6b02c58..d4e605ec0d6 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp @@ -65,7 +65,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "// Traits specializations for " << node->name () << "."; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::tao_duplicate (" << be_idt << be_idt_nl @@ -76,7 +76,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "void" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::tao_release (" << be_idt << be_idt_nl @@ -87,7 +87,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << node->name () << "_ptr" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::tao_nil (void)" << be_nl @@ -96,7 +96,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << "}"; *os << be_nl << be_nl - << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION " << be_nl + << "ACE_TEMPLATE_CLASS_MEMBER_SPECIALIZATION" << be_nl << "CORBA::Boolean" << be_nl << "TAO::Objref_Traits<" << node->name () << ">::tao_marshal (" << be_idt << be_idt_nl diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp index 4a842ea2c1a..dd4663c1dbd 100644 --- a/TAO/TAO_IDL/be/be_visitor_traits.cpp +++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp @@ -24,6 +24,7 @@ #include "be_eventtype_fwd.h" #include "be_component.h" #include "be_component_fwd.h" +#include "be_array.h" #include "be_typedef.h" #include "be_helper.h" #include "be_extern.h" @@ -258,6 +259,38 @@ be_visitor_traits::visit_eventtype_fwd (be_eventtype_fwd *node) } int +be_visitor_traits::visit_array (be_array *node) +{ + if (node->cli_traits_gen ()) + { + return 0; + } + + TAO_OutStream *os = this->ctx_->stream (); + + *os << be_nl << be_nl + << "ACE_TEMPLATE_SPECIALIZATION" << be_nl + << "struct " << be_global->stub_export_macro () << " Array_Traits<" + << node->name () << ", " << node->name () << "_slice>" << be_nl + << "{" << be_idt_nl + << "static void tao_free (" << be_idt << be_idt_nl + << node->name () << "_slice * _tao_slice" << be_uidt_nl + << ");" << be_uidt_nl + << "static " << node->name () << "_slice * tao_dup (" + << be_idt << be_idt_nl + << "const " << node->name () << "_slice * _tao_slice" << be_uidt_nl + << ");" << be_uidt_nl + << "static void tao_copy (" << be_idt << be_idt_nl + << node->name () << "_slice * _tao_to," << be_nl + << "const " << node->name () << "_slice * _tao_from" << be_uidt_nl + << ");" << be_uidt_nl + << "static " << node->name () << "_slice * tao_alloc (void);" << be_uidt_nl + << "};"; + + return 0; +} + +int be_visitor_traits::visit_typedef (be_typedef *node) { this->ctx_->alias (node); diff --git a/TAO/TAO_IDL/be_include/be_visitor_traits.h b/TAO/TAO_IDL/be_include/be_visitor_traits.h index adf8ef6d066..4a35d1fdd56 100644 --- a/TAO/TAO_IDL/be_include/be_visitor_traits.h +++ b/TAO/TAO_IDL/be_include/be_visitor_traits.h @@ -47,6 +47,8 @@ public: virtual int visit_eventtype (be_eventtype *node); virtual int visit_eventtype_fwd (be_eventtype_fwd *node); + + virtual int visit_array (be_array *node); virtual int visit_typedef (be_typedef *node); }; |