diff options
author | bala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-22 20:53:09 +0000 |
---|---|---|
committer | bala <bala@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-04-22 20:53:09 +0000 |
commit | 44b81cd111b358fa4d8ee055f719d8824679efd1 (patch) | |
tree | b325bb726be5c711dfe09e642820f85ea7c01e02 /TAO/TAO_IDL/be/be_visitor_argument | |
parent | cc6af3602c9ebafccde48c64ce53e26f19eb5e4c (diff) | |
download | ATCD-44b81cd111b358fa4d8ee055f719d8824679efd1.tar.gz |
ChangeLogTag:Tue Apr 22 14:58:33 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_argument')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp | 15 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_argument/post_invoke_cs.cpp | 17 |
2 files changed, 29 insertions, 3 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp b/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp index 45384a20aee..e96f7a34285 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/arglist.cpp @@ -199,6 +199,21 @@ int be_visitor_args_arglist::visit_predefined_type (be_predefined_type *node) break; } } + else if (pt == AST_PredefinedType::PT_value) + { + switch (this->direction ()) + { + case AST_Argument::dir_IN: + *os << this->type_name (node) << " *"; + break; + case AST_Argument::dir_INOUT: + *os << this->type_name (node) << " *&"; + break; + case AST_Argument::dir_OUT: + *os << this->type_name (node, "_out"); + break; + } + } else if (pt == AST_PredefinedType::PT_pseudo || pt == AST_PredefinedType::PT_object) { diff --git a/TAO/TAO_IDL/be/be_visitor_argument/post_invoke_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/post_invoke_cs.cpp index 36f9eabcbcf..114c4bb0308 100644 --- a/TAO/TAO_IDL/be/be_visitor_argument/post_invoke_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_argument/post_invoke_cs.cpp @@ -85,15 +85,26 @@ be_visitor_args_post_invoke_cs::visit_interface (be_interface *node) { case AST_Argument::dir_INOUT: { + *os << be_nl; + // Assign the narrowed obj reference. if (node->is_defined ()) { - *os << "CORBA::release (" << arg->local_name () << ");" << be_nl; + *os << "CORBA::release (" << arg->local_name () << ");"; } else { - *os << "tao_" << node->flat_name () << "_release (" - << arg->local_name () << ");" << be_nl; + AST_Decl *parent = ScopeAsDecl (node->defined_in ()); + + if (parent != 0 && parent->node_type () != AST_Decl::NT_root) + { + *os << parent->name () << "::"; + } + + *os << "tao_" << node->local_name () << "_life::tao_release (" + << be_idt << be_idt_nl + << arg->local_name () << be_uidt_nl + << ");" << be_uidt; } } break; |