summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_array/array_ci.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_traits.cpp33
-rw-r--r--TAO/TAO_IDL/be_include/be_visitor_traits.h2
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);
};