diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-03-09 20:08:25 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-03-09 20:08:25 +0000 |
commit | 51938bff5f00942ef7ff52e85eabcb2a2baa9b10 (patch) | |
tree | ef79d3be58cbf836cbbeff202414146f6a706269 | |
parent | c2c8a8151b87ce545a8454f9234328a977966c93 (diff) | |
download | ATCD-51938bff5f00942ef7ff52e85eabcb2a2baa9b10.tar.gz |
ChangeLogTag: Tue Mar 9 20:06:25 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 15 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp | 12 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp | 21 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp | 26 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp | 22 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp | 23 |
6 files changed, 98 insertions, 21 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 0bffd4d6885..92ae32a7652 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,18 @@ +Tue Mar 9 20:06:25 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp: + + Added code generation of IDL local interfaces related to + the generated IDL connector. + + * TAO_IDL/be/be_visitor_component/context_svh.cpp: + * TAO_IDL/be/be_visitor_component/context_ex_idl.cpp: + * TAO_IDL/be/be_visitor_component/servant_svs.cpp: + * TAO_IDL/be/be_visitor_component/context_svs.cpp: + + Fixed memory leaks and made minor formatting changes + to generated code. + Tue Mar 9 18:29:06 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp: diff --git a/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp b/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp index 909703f641c..17a6437e11f 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp @@ -115,6 +115,8 @@ be_visitor_context_ex_idl::visit_uses (be_uses *node) if (be_global->ami4ccm_call_back ()) { + os_ << be_nl; + if (node->is_multiple ()) { os_ << IdentifierHelper::orig_sn (node_->name ()).c_str () @@ -125,12 +127,18 @@ be_visitor_context_ex_idl::visit_uses (be_uses *node) { ACE_CString original_op_name ( impl->name ()->last_component ()->get_string ()); - ACE_CString new_op_name = ACE_CString ("AMI_") + original_op_name; + ACE_CString new_op_name = + ACE_CString ("AMI_") + original_op_name; UTL_ScopedName *op_name = static_cast<UTL_ScopedName *> (impl->name ()->copy ()); op_name->last_component ()->replace_string (new_op_name.c_str ()); - os_ << be_nl << "::" << IdentifierHelper::orig_sn (op_name).c_str () + + os_ << "::" << IdentifierHelper::orig_sn (op_name).c_str () << " get_connection_sendc_" << lname << " ();"; + + op_name->destroy (); + delete op_name; + op_name = 0; } } diff --git a/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp b/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp index b2a93d58e36..42c3a470ee1 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp @@ -141,7 +141,8 @@ be_visitor_context_svh::visit_uses (be_uses *node) if (be_global->ami4ccm_call_back ()) { - os_ << be_nl << "virtual "; + os_ << be_nl << be_nl + << "virtual "; if (is_multiple) { @@ -182,6 +183,10 @@ be_visitor_context_svh::visit_uses (be_uses *node) { os_ << "void);"; } + + op_name->destroy (); + delete op_name; + op_name = 0; } } @@ -232,13 +237,21 @@ be_visitor_context_svh::visit_uses (be_uses *node) { ACE_CString original_op_name ( node->uses_type ()->name ()->last_component ()->get_string ()); - ACE_CString new_op_name = ACE_CString ("AMI_") + original_op_name; + ACE_CString new_op_name = + ACE_CString ("AMI_") + original_op_name; UTL_ScopedName *op_name = - static_cast<UTL_ScopedName *> (node->uses_type ()->name ()->copy ()); + static_cast<UTL_ScopedName *> ( + node->uses_type ()->name ()->copy ()); op_name->last_component ()->replace_string (new_op_name.c_str ()); - os_ << be_nl << "// Simplex sendc_" << port_name << " connection." << be_nl + + os_ << be_nl << be_nl + << "// Simplex sendc_" << port_name << " connection." << be_nl << "::" << op_name << "_var" << be_nl << "ciao_uses_sendc_" << port_name << "_;"; + + op_name->destroy (); + delete op_name; + op_name = 0; } } diff --git a/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp b/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp index d70db594b20..548691d2c5b 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp @@ -425,7 +425,8 @@ be_visitor_context_svs::visit_emits (be_emits *node) } void -be_visitor_context_svs::gen_uses_simplex (AST_Type *obj, const char *port_name) +be_visitor_context_svs::gen_uses_simplex (AST_Type *obj, + const char *port_name) { const char *fname = obj->full_name (); @@ -434,27 +435,31 @@ be_visitor_context_svs::gen_uses_simplex (AST_Type *obj, const char *port_name) << node_->local_name () << "_Context::get_connection_" << port_name << " (void)" << be_nl << "{" << be_idt_nl - << "return ::" << fname << "::_duplicate (" << be_idt_nl + << "return" << be_idt_nl + << "::" << fname << "::_duplicate (" << be_idt_nl << "this->ciao_uses_" << port_name << "_.in ());" - << be_uidt << be_uidt_nl + << be_uidt << be_uidt << be_uidt_nl << "}"; if (be_global->ami4ccm_call_back ()) { ACE_CString original_op_name ( obj->name ()->last_component ()->get_string ()); - ACE_CString new_op_name = ACE_CString ("AMI_") + original_op_name; + ACE_CString new_op_name = + ACE_CString ("AMI_") + original_op_name; UTL_ScopedName *op_name = static_cast<UTL_ScopedName *> (obj->name ()->copy ()); op_name->last_component ()->replace_string (new_op_name.c_str ()); + os_ << be_nl << be_nl << "::" << op_name << "_ptr" << be_nl << node_->local_name () << "_Context::get_connection_sendc_" << port_name << " (void)" << be_nl << "{" << be_idt_nl - << "return ::" << op_name << "::_duplicate (" << be_idt_nl + << "return" << be_idt_nl + << "::" << op_name << "::_duplicate (" << be_idt_nl << "this->ciao_uses_sendc_" << port_name << "_.in ());" - << be_uidt << be_uidt_nl + << be_uidt << be_uidt << be_uidt_nl << "}"; os_ << be_nl << be_nl @@ -487,9 +492,14 @@ be_visitor_context_svs::gen_uses_simplex (AST_Type *obj, const char *port_name) << "{" << be_idt_nl << "throw ::Components::NoConnection ();" << be_uidt_nl << "}" << be_uidt_nl << be_nl - << "return this->ciao_uses_sendc_" << port_name - << "_._retn ();" << be_uidt_nl + << "return" << be_idt_nl + << "this->ciao_uses_sendc_" << port_name + << "_._retn ();" << be_uidt << be_uidt_nl << "}"; + + op_name->destroy (); + delete op_name; + op_name = 0; } os_ << be_nl << be_nl diff --git a/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp b/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp index 5f042b92d99..5930cd9c000 100644 --- a/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp @@ -1308,25 +1308,29 @@ be_visitor_connect_block::visit_uses (be_uses *node) { ACE_CString reply_handler_local_name; reply_handler_local_name += "AMI_"; - reply_handler_local_name += node->uses_type ()->name ()->last_component ()->get_string(); + reply_handler_local_name += + node->uses_type ()->name ()->last_component ()->get_string (); UTL_ScopedName *reply_handler_name = static_cast<UTL_ScopedName *> (node->uses_type ()->name ()->copy ()); reply_handler_name->last_component ()->replace_string ( - reply_handler_local_name.c_str () - ); + reply_handler_local_name.c_str ()); os_ << be_nl << be_nl << "if (ACE_OS::strcmp (name, \"sendc_" << port_name << "\") == 0)" << be_idt_nl << "{" << be_idt_nl - << "::" << IdentifierHelper::orig_sn (reply_handler_name).c_str () << "_var _ciao_conn =" << be_idt_nl - << "::" << IdentifierHelper::orig_sn (reply_handler_name).c_str () << "::_narrow (connection);" - << be_uidt_nl << be_nl; + << "::" + << IdentifierHelper::orig_sn (reply_handler_name).c_str () + << "_var _ciao_conn =" << be_idt_nl + << "::" + << IdentifierHelper::orig_sn (reply_handler_name).c_str () + << "::_narrow (connection);" << be_uidt_nl << be_nl; // @@todo: placeholder for connection logic os_ << "/// " << (is_multiple ? "Multiplex" : "Simplex") << " connect." << be_nl - << (is_multiple ? "return " : "") << "this->context_->connect_sendc_" + << (is_multiple ? "return " : "") + << "this->context_->connect_sendc_" << port_name << " (_ciao_conn.in ());"; if (! is_multiple) @@ -1337,6 +1341,10 @@ be_visitor_connect_block::visit_uses (be_uses *node) os_ << be_uidt_nl << "}" << be_uidt; + + reply_handler_name->destroy (); + delete reply_handler_name; + reply_handler_name = 0; } return 0; diff --git a/TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp b/TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp index 2d7228a53a4..c6ec177c09b 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp @@ -27,6 +27,9 @@ int be_visitor_ami4ccm_conn_ex_idl::visit_interface (be_interface *node) { Identifier *oln = node->original_local_name (); + AST_Decl *scope = ScopeAsDecl (node->defined_in ()); + bool global = (scope->node_type () == AST_Decl::NT_root); + const char *smart_scope = (global ? "" : "::"); os_ << be_nl << be_nl << "connector AMI_" << oln << "_Connector" << be_nl @@ -35,6 +38,26 @@ be_visitor_ami4ccm_conn_ex_idl::visit_interface (be_interface *node) << "provides AMI_" << oln << " provides_" << oln << ";" << be_uidt_nl << "};"; + + os_ << be_nl << be_nl + << "local interface CCM_AMI_CONN_" << oln << be_idt_nl + << ": ::Components::EnterpriseComponent" << be_uidt_nl + << "{" << be_idt_nl + << smart_scope << scope->full_name () << "::CCM_AMI_" + << oln << " get_provides_" << oln << " ();" << be_uidt_nl + << "};"; + + os_ << be_nl << be_nl + << "local interface CCM_AMI_CONN_" << oln + << "_Context" << be_idt_nl + << ": ::Components::SessionContext" << be_uidt_nl + << "{" << be_idt_nl + << "::" << node->full_name () + << " get_connection_uses_" << oln << " ();" << be_nl + << smart_scope << scope->full_name () << "::AMI_" + << oln << " get_connection_provides_" << oln + << " ();" << be_uidt_nl + << "};"; return 0; } |