diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-16 16:59:29 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-09-16 16:59:29 +0000 |
commit | 7eafc6e80fe9ce61498a93a24c663810ceafc893 (patch) | |
tree | d7fb6e27e8c97a055754155eedc3c33dec0dffba /TAO/TAO_IDL | |
parent | a38be6244a2e89c3b54c5337a7e6058dd3546f5e (diff) | |
download | ATCD-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.cpp | 35 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/paramlist.cpp | 9 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_traits.cpp | 33 |
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<" |