summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-29 20:09:23 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-29 20:09:23 +0000
commit165f7bad4d949fed144b70bbc414fd07decbf735 (patch)
treef3a3c8cd638bcc844ae5d9e3d72cd738b4c4096e
parente1793d558417dc28adc99c944b090cf720b5b2e3 (diff)
downloadATCD-165f7bad4d949fed144b70bbc414fd07decbf735.tar.gz
ChangeLogTag: Fri Aug 29 15:05:33 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog_ref9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp4
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp84
3 files changed, 20 insertions, 77 deletions
diff --git a/TAO/ChangeLog_ref b/TAO/ChangeLog_ref
index 0aeeb19d1dd..4696aff76a2 100644
--- a/TAO/ChangeLog_ref
+++ b/TAO/ChangeLog_ref
@@ -1,3 +1,12 @@
+Fri Aug 29 15:05:33 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/be/be_visitor_interface/interface_ch.cpp:
+ * TAO_IDL/be/be_visitor_interface/interface_cs.cpp:
+
+ Changed the _unchecked_narrow() methods to use dynamic_cast
+ instead of _tao_QueryInterface() and removed generation of
+ _tao_QueryInterface.
+
Fri Aug 29 10:55:35 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
* tao/Collocated_Invocation.cpp (TAO):
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
index 0f8d246cb53..86cfe2de528 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ch.cpp
@@ -221,10 +221,6 @@ be_visitor_interface_ch::visit_interface (be_interface *node)
<< ");" << be_uidt_nl << be_nl;
}
- // The _tao_QueryInterface method.
- *os << "virtual void *_tao_QueryInterface (ptrdiff_t type);"
- << be_nl << be_nl;
-
// The _interface_repository_id method.
*os << "virtual const char* _interface_repository_id (void) const;";
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
index ea6ea04cec5..12a006e3878 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_cs.cpp
@@ -477,66 +477,6 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
*os << "}" << be_uidt << be_uidt_nl
<< "}" << be_nl << be_nl;
- // Generating _tao_QueryInterface method.
- *os << "void *" << node->full_name ()
- << "::_tao_QueryInterface (ptrdiff_t type)" << be_nl
- << "{" << be_idt_nl
- << "void *retv = 0;" << be_nl << be_nl
- << "if ";
-
- if (node->traverse_inheritance_graph (
- be_interface::queryinterface_helper,
- os
- ) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_interface_cs::"
- "visit_interface - "
- "_tao_QueryInterface method codegen failed\n"),
- -1);
- }
-
- *os << "(type == ACE_reinterpret_cast ("
- << be_idt << be_idt << be_idt << be_idt << be_idt << be_idt_nl
- << " ptrdiff_t," << be_nl;
-
- if (node->is_abstract ())
- {
- *os << " &CORBA::AbstractBase";
- }
- else
- {
- *os << " &CORBA::Object";
- }
-
- *os << "::_tao_class_id)" << be_uidt_nl
- << " )" << be_uidt << be_uidt << be_uidt << be_uidt_nl
- << "{" << be_idt_nl
- << "retv =" << be_idt_nl
- << "ACE_reinterpret_cast (" << be_idt << be_idt_nl
- << "void *," << be_nl
- << "ACE_static_cast (";
-
- if (node->is_abstract ())
- {
- *os << "CORBA::AbstractBase_ptr";
- }
- else
- {
- *os << "CORBA::Object_ptr";
- }
-
- *os << ", this)" << be_uidt_nl
- << ");" << be_uidt << be_uidt << be_uidt_nl
- << "}" << be_uidt_nl << be_nl;
-
- *os << "if (retv != 0)" << be_idt_nl
- << "{" << be_idt_nl
- << "this->_add_ref ();" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl
- << "return retv;" << be_uidt_nl
- << "}" << be_nl << be_nl;
-
*os << "const char* " << node->full_name ()
<< "::_interface_repository_id (void) const"
<< be_nl
@@ -759,7 +699,8 @@ be_visitor_interface_cs::gen_concrete_unchecked_narrow (be_interface *node,
if (be_global->gen_smart_proxies ())
{
*os << "return TAO_" << node->flat_name ()
- << "_PROXY_FACTORY_ADAPTER::instance ()->create_proxy (default_proxy);"
+ << "_PROXY_FACTORY_ADAPTER::instance ()->"
+ << "create_proxy (default_proxy);"
<< be_uidt_nl;
}
else
@@ -775,19 +716,16 @@ be_visitor_interface_cs::gen_concrete_unchecked_narrow (be_interface *node,
*os << be_idt;
}
- // Local & lazily evaluated _unchecked_narrow.
- *os << "return" << be_idt_nl
- << "ACE_reinterpret_cast (" << be_idt << be_idt_nl
- << node->local_name () << "_ptr," << be_nl
- << "obj->_tao_QueryInterface (" << be_idt << be_idt_nl
- << "ACE_reinterpret_cast (" << be_idt << be_idt_nl
- << "ptrdiff_t," << be_nl
- << "&" << node->local_name () << "::_tao_class_id" << be_uidt_nl
- << ")" << be_uidt << be_uidt_nl
- << ")" << be_uidt << be_uidt_nl
- << ");" << be_uidt << be_uidt << be_uidt << be_uidt_nl;
+ *os << "{" << be_idt_nl
+ << node->name () << "_ptr p =" << be_idt_nl
+ << "dynamic_cast<" << node->name () << "_ptr> (obj);"
+ << be_uidt_nl << be_nl
+ << "p->_add_ref ();" << be_nl << be_nl
+ << "return p;" << be_uidt_nl
+ << "}" << be_uidt << be_uidt;
- *os << "}" << be_nl << be_nl;
+ *os << be_nl
+ << "}" << be_nl << be_nl;
}
void