summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-03-09 20:08:25 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-03-09 20:08:25 +0000
commit51938bff5f00942ef7ff52e85eabcb2a2baa9b10 (patch)
treeef79d3be58cbf836cbbeff202414146f6a706269
parentc2c8a8151b87ce545a8454f9234328a977966c93 (diff)
downloadATCD-51938bff5f00942ef7ff52e85eabcb2a2baa9b10.tar.gz
ChangeLogTag: Tue Mar 9 20:06:25 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog15
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp12
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp21
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp26
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp22
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/ami4ccm_conn_ex_idl.cpp23
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;
}