summaryrefslogtreecommitdiff
path: root/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO_IDL/be/be_visitor_interface/interface_cs.cpp')
-rw-r--r--TAO_IDL/be/be_visitor_interface/interface_cs.cpp100
1 files changed, 59 insertions, 41 deletions
diff --git a/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
index ad466d52b82..0cfcf428e3d 100644
--- a/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+++ b/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
@@ -47,15 +47,15 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
AST_Component *c = AST_Component::narrow_from_decl (node);
TAO_OutStream *os = this->ctx_->stream ();
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
+ *os << be_nl_2 << "// TAO_IDL - Generated from" << be_nl
<< "// " << __FILE__ << ":" << __LINE__;
if (node->is_defined ())
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "// Traits specializations for " << node->name () << ".";
- *os << be_nl << be_nl
+ *os << be_nl_2
<< node->name () << "_ptr" << be_nl
<< "TAO::Objref_Traits<" << node->name () << ">::duplicate ("
<< be_idt << be_idt_nl
@@ -64,16 +64,27 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "return " << node->name () << "::_duplicate (p);" << be_uidt_nl
<< "}";
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "void" << be_nl
<< "TAO::Objref_Traits<" << node->name () << ">::release ("
<< be_idt << be_idt_nl
<< node->name () << "_ptr p)" << be_uidt << be_uidt_nl
- << "{" << be_idt_nl
- << "::CORBA::release (p);" << be_uidt_nl
- << "}";
+ << "{" << be_idt_nl;
- *os << be_nl << be_nl
+ // Workaround for broken HP V7.4-004 on OpenVMS IA83
+ if (node->has_mixed_parentage ())
+ {
+ *os << "::CORBA::AbstractBase_ptr abs = p;" << be_nl
+ << "::CORBA::release (abs);" << be_uidt_nl;
+ }
+ else
+ {
+ *os << "::CORBA::release (p);" << be_uidt_nl;
+ }
+
+ *os << "}";
+
+ *os << be_nl_2
<< node->name () << "_ptr" << be_nl
<< "TAO::Objref_Traits<" << node->name () << ">::nil (void)"
<< be_nl
@@ -81,7 +92,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "return " << node->name () << "::_nil ();" << be_uidt_nl
<< "}";
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "::CORBA::Boolean" << be_nl
<< "TAO::Objref_Traits<" << node->name () << ">::marshal ("
<< be_idt << be_idt_nl
@@ -90,14 +101,14 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "{" << be_idt_nl
<< "return ";
- if (node->is_abstract () || c != 0)
- {
- *os << "cdr << p;";
- }
- else
- {
- *os << "::CORBA::Object::marshal (p, cdr);";
- }
+ if (node->is_abstract () || c != 0)
+ {
+ *os << "cdr << p;";
+ }
+ else
+ {
+ *os << "::CORBA::Object::marshal (p, cdr);";
+ }
*os << be_uidt_nl
<< "}";
@@ -105,7 +116,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
if (c == 0 && be_global->gen_ostream_operators ())
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "std::ostream &" << be_nl
<< node->name () << "::_tao_stream_v (std::ostream &strm) const"
<< be_nl
@@ -117,7 +128,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
if (node->has_mixed_parentage ())
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "void" << be_nl
<< "CORBA::release ("
<< node->name ()
@@ -127,7 +138,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "::CORBA::release (abs);" << be_uidt_nl
<< "}";
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "::CORBA::Boolean" << be_nl
<< "CORBA::is_nil ("
<< node->name ()
@@ -142,7 +153,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
(be_global->gen_direct_collocation() || be_global->gen_thru_poa_collocation ()))
{
// Generate the proxy broker factory function pointer definition.
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "// Function pointer for collocation factory initialization."
<< be_nl
<< "TAO::Collocation_Proxy_Broker * " << be_nl
@@ -166,7 +177,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
if (node->is_local ())
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< node->name () << "::" << node->local_name ()
<< " (void)" << be_nl
<< "{}";
@@ -174,7 +185,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
if (! node->is_abstract () && ! node->is_local ())
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< node->name () << "::" << node->local_name ()
<< " (void)" << be_nl;
@@ -197,7 +208,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
(be_global->gen_direct_collocation()
|| be_global->gen_thru_poa_collocation ()))
{
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "void" << be_nl
<< node->name () << "::" << node->flat_name ()
<< "_setup_collocation ()" << be_nl
@@ -248,10 +259,10 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << be_uidt_nl << "}";
}
- *os << be_nl << be_nl
+ *os << be_nl_2
<< node->name () << "::~" << node->local_name ()
<< " (void)" << be_nl;
- *os << "{}" << be_nl << be_nl;
+ *os << "{}" << be_nl_2;
bool gen_any_destructor =
be_global->any_support ()
@@ -268,7 +279,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "static_cast<"
<< node->local_name () << " *> (_tao_void_pointer);" << be_uidt_nl
<< "::CORBA::release (_tao_tmp_pointer);" << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
}
if (node->has_mixed_parentage ())
@@ -278,7 +289,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "{" << be_idt_nl
<< "this->::CORBA::Object::_add_ref ();"
<< be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
}
// The _narrow method
@@ -302,6 +313,13 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
-1);
}
+ // The _nil method
+ *os << node->full_name () << "_ptr" << be_nl
+ << node->full_name () << "::_nil (void)"
+ << be_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}" << be_nl_2;
// The _duplicate method
*os << node->full_name () << "_ptr" << be_nl
@@ -314,7 +332,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "obj->_add_ref ();" << be_uidt_nl
<< "}" << be_uidt_nl << be_nl
<< "return obj;" << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
// The _tao_release method
if (c == 0)
@@ -325,7 +343,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "_ptr obj)" << be_nl
<< "{" << be_idt_nl
<< "::CORBA::release (obj);" << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
}
*os << "::CORBA::Boolean" << be_nl
@@ -337,7 +355,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "if (" << be_idt << be_idt_nl;
int status = node->gen_is_a_ancestors (os);
-
+
if (status == -1)
{
ACE_ERROR_RETURN ((LM_ERROR,
@@ -346,7 +364,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
ACE_TEXT ("gen_is_a_ancestors() failed\n")),
-1);
}
-
+
*os << ")" << be_uidt_nl
<< "{" << be_idt_nl
<< "return true; // success using local knowledge" << be_uidt_nl
@@ -364,7 +382,7 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
}
*os << "}" << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
*os << "const char* " << node->full_name ()
<< "::_interface_repository_id (void) const"
@@ -373,10 +391,10 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< "return \"" << node->repoID ()
<< "\";" << be_uidt_nl
<< "}";
-
+
bool is_loc = node->is_local ();
- *os << be_nl << be_nl
+ *os << be_nl_2
<< "::CORBA::Boolean" << be_nl
<< node->name () << "::marshal (TAO_OutputCDR &"
<< (is_loc ? " /* " : "") << "cdr"
@@ -460,7 +478,7 @@ be_visitor_interface_cs::gen_xxx_narrow (const char *pre,
<< "_ptr> (_tao_objref)"
<< be_uidt_nl
<< ");" << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
return true;
}
@@ -468,7 +486,7 @@ be_visitor_interface_cs::gen_xxx_narrow (const char *pre,
!node->is_abstract ())
{
*os << node->full_name () << " *proxy = 0;"
- << be_nl << be_nl
+ << be_nl_2
<< "proxy = TAO::Narrow_Utils<"
<< node->local_name () << ">::" << pre << " (";
@@ -491,7 +509,7 @@ be_visitor_interface_cs::gen_xxx_narrow (const char *pre,
<< "return TAO_" << node->flat_name ()
<< "_PROXY_FACTORY_ADAPTER::instance ()->create_proxy (proxy);"
<< be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
}
else
{
@@ -524,7 +542,7 @@ be_visitor_interface_cs::gen_xxx_narrow (const char *pre,
*os << "0" << be_uidt_nl;
}
*os << ");" << be_uidt << be_uidt << be_uidt_nl
- << "}" << be_nl << be_nl;
+ << "}" << be_nl_2;
}
return true;
@@ -553,7 +571,7 @@ be_visitor_interface_cs::visit_extended_port (be_extended_port *node)
/// line to tell what scope we are actually in.
this->ctx_->interface (
be_interface::narrow_from_scope (node->defined_in ()));
-
+
/// Will ignore everything but porttype attributes.
int status = this->visit_scope (node->port_type ());
@@ -582,7 +600,7 @@ be_visitor_interface_cs::visit_mirror_port (be_mirror_port *node)
/// line to tell what scope we are actually in.
this->ctx_->interface (
be_interface::narrow_from_scope (node->defined_in ()));
-
+
/// Will ignore everything but porttype attributes.
int status = this->visit_scope (node->port_type ());