summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-09-16 16:59:29 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-09-16 16:59:29 +0000
commit7eafc6e80fe9ce61498a93a24c663810ceafc893 (patch)
treed7fb6e27e8c97a055754155eedc3c33dec0dffba /TAO/TAO_IDL
parenta38be6244a2e89c3b54c5337a7e6058dd3546f5e (diff)
downloadATCD-7eafc6e80fe9ce61498a93a24c663810ceafc893.tar.gz
ChangeLogTag: Thu Sep 16 11:49:32 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_arg_traits.cpp35
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_traits.cpp33
3 files changed, 39 insertions, 38 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
index bbd8afc91f9..0eea91ba50e 100644
--- a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp
@@ -486,7 +486,40 @@ be_visitor_arg_traits::visit_array (be_array *node)
// This should be generated even for imported nodes. The ifdef guard prevents
// multiple declarations.
- os->gen_ifdef_macro (node->flat_name (), "arg_traits");
+// os->gen_ifdef_macro (node->flat_name (), "arg_traits");
+
+ // Generate the array traits specialization definitions,
+ // guarded by #ifdef on unaliased array element type and length.
+
+ ACE_CString unique;
+ be_type *bt = be_type::narrow_from_decl (node->base_type ());
+ AST_Decl::NodeType nt = bt->node_type ();
+
+ if (nt == AST_Decl::NT_typedef)
+ {
+ be_typedef *td = be_typedef::narrow_from_decl (bt);
+ unique = td->primitive_base_type ()->flat_name ();
+ }
+ else
+ {
+ unique = bt->flat_name ();
+ }
+
+ char buf[NAMEBUFSIZE];
+
+ for (unsigned long i = 0; i < node->n_dims (); ++i)
+ {
+ ACE_OS::memset (buf,
+ '\0',
+ NAMEBUFSIZE);
+ ACE_OS::sprintf (buf,
+ "_%ld",
+ node->dims ()[i]->ev ()->u.ulval);
+ unique += buf;
+ }
+
+ unique += "_traits";
+ os->gen_ifdef_macro (unique.fast_rep ());
*os << be_nl << be_nl
<< "ACE_TEMPLATE_SPECIALIZATION" << be_nl
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
index 2fa4e527ac7..fbb5e7613cd 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp
@@ -101,11 +101,12 @@ int be_visitor_args_paramlist::visit_argument (be_argument *node)
*os << " _tao_forany_" << node->local_name () << " (";
*os << this->type_name (bt, "_dup");
*os << " (";
- // This is to placate some compilers which have
- // trouble with IN args that are multidimensional arrays.
- //if (node->n_dims () > 1) cant do this here since dont have a be_array node
+
if (this->direction () != AST_Argument::dir_IN)
- *os << "(const ::" << bt->name () << "_slice *) ";
+ {
+ *os << "(const ::" << bt->name () << "_slice *) ";
+ }
+
*os << "this->";
*os << node->local_name () << "_));" << be_nl;
*os << "(*parameter_list)[len].argument <<= _tao_forany_" ;
diff --git a/TAO/TAO_IDL/be/be_visitor_traits.cpp b/TAO/TAO_IDL/be/be_visitor_traits.cpp
index d7233422e98..159e95ef9bd 100644
--- a/TAO/TAO_IDL/be/be_visitor_traits.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_traits.cpp
@@ -388,39 +388,6 @@ be_visitor_traits::visit_array (be_array *node)
TAO_OutStream *os = this->ctx_->stream ();
- // Generate the array traits specialization definitions,
- // guarded by #ifdef on unaliased array element type and length.
-
- ACE_CString unique;
- be_type *bt = be_type::narrow_from_decl (node->base_type ());
- AST_Decl::NodeType nt = bt->node_type ();
-
- if (nt == AST_Decl::NT_typedef)
- {
- be_typedef *td = be_typedef::narrow_from_decl (bt);
- unique = td->primitive_base_type ()->flat_name ();
- }
- else
- {
- unique = bt->flat_name ();
- }
-
- char buf[NAMEBUFSIZE];
-
- for (unsigned long i = 0; i < node->n_dims (); ++i)
- {
- ACE_OS::memset (buf,
- '\0',
- NAMEBUFSIZE);
- ACE_OS::sprintf (buf,
- "_%ld",
- node->dims ()[i]->ev ()->u.ulval);
- unique += buf;
- }
-
- unique += "_traits";
-// os->gen_ifdef_macro (unique.fast_rep ());
-
*os << be_nl << be_nl
<< "ACE_TEMPLATE_SPECIALIZATION" << be_nl
<< "struct " << be_global->stub_export_macro () << " Array_Traits<"