diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-16 21:48:44 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-03-16 21:48:44 +0000 |
commit | 6c5006df26b9596d22e915419d7253fac998f286 (patch) | |
tree | 1453554787df082463c0685ce1ac39db553eb887 /TAO/TAO_IDL | |
parent | aa175275ba8e503887095850ec44a8e23dafc694 (diff) | |
download | ATCD-6c5006df26b9596d22e915419d7253fac998f286.tar.gz |
ChangeLogTag:Mon Mar 16 15:27:21 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface.cpp | 38 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_module.cpp | 9 |
2 files changed, 31 insertions, 16 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp index f19b0f51388..3662e0d4761 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp @@ -703,19 +703,18 @@ be_visitor_interface_ch::visit_interface (be_interface *node) // the _is_a method os->indent (); *os << "virtual CORBA::Boolean _is_a (const CORBA::Char *type_id, " - << "CORBA::Environment &env);\n"; + << "CORBA::Environment &env);" + << "virtual const char* " + << "_interface_repository_id (void) const;" << be_uidt_nl; // generate the "protected" constructor so that users cannot instantiate // us - os->decr_indent (); - *os << "protected:\n"; - os->incr_indent (); - *os << node->local_name () << " (void); // default constructor" << be_nl + *os << "protected:" << be_idt_nl + << node->local_name () << " (void); // default constructor" << be_nl << node->local_name () << " (STUB_Object *objref, " << "TAO_ServantBase *_tao_servant = 0, " << "CORBA::Boolean _tao_collocated = 0);" << be_nl - << "virtual ~" << node->local_name () << " (void);\n"; - os->decr_indent (); + << "virtual ~" << node->local_name () << " (void);" << be_uidt_nl; // private copy constructor and assignment operator. These are not // allowed, hence they are private. @@ -735,15 +734,15 @@ be_visitor_interface_ch::visit_interface (be_interface *node) { // we have a scoped name os->indent (); - *os << "static CORBA::TypeCode_ptr " << node->tc_name - ()->last_component () << ";\n\n"; + *os << "static CORBA::TypeCode_ptr " + << node->tc_name ()->last_component () << ";\n\n"; } else { // we are in the ROOT scope os->indent (); - *os << "extern CORBA::TypeCode_ptr " << node->tc_name - ()->last_component () << ";\n\n"; + *os << "extern CORBA::TypeCode_ptr " + << node->tc_name ()->last_component () << ";\n\n"; } node->cli_hdr_gen (I_TRUE); @@ -881,9 +880,14 @@ be_visitor_interface_cs::visit_interface (be_interface *node) << be_idt_nl << "return " << node->name () << "::_nil ();" << be_uidt_nl; - *os << "if (!obj->_is_collocated () || !obj->_servant())" << be_nl + *os << "if (!obj->_is_collocated ()" << be_idt << be_idt << be_idt_nl + << " || !obj->_servant()" << be_nl + << " || obj->_servant()->_downcast (\"" + << node->repoID () << "\") == 0" << be_uidt_nl + << ")" << be_uidt << be_uidt_nl << "{" << be_idt_nl; - *os << node->name () << "_ptr new_obj = new " << node->name () << "(obj->_get_parent ());" << be_nl + *os << node->name () << "_ptr new_obj = new " + << node->name () << "(obj->_get_parent ());" << be_nl << "return new_obj;" << be_uidt_nl << "} // end of if" << be_nl; @@ -948,6 +952,14 @@ be_visitor_interface_cs::visit_interface (be_interface *node) os->decr_indent (); *os << "}\n\n"; + os->indent (); + *os << "const char* " << node->name () + << "::_interface_repository_id (void) const" + << be_nl + << "{" << be_idt_nl + << "return \"" << node->repoID () << "\";" << be_uidt_nl + << "}\n\n"; + // generate the typecode information here os->indent (); // start from current indentation level *os << "static const CORBA::Long _oc_" << node->flatname () << "[] =" << diff --git a/TAO/TAO_IDL/be/be_visitor_module.cpp b/TAO/TAO_IDL/be/be_visitor_module.cpp index de1da46861e..5b7107f9886 100644 --- a/TAO/TAO_IDL/be/be_visitor_module.cpp +++ b/TAO/TAO_IDL/be/be_visitor_module.cpp @@ -577,7 +577,8 @@ be_visitor_module_ch::visit_module (be_module *node) os->indent (); // start from whatever indentation level we were at // now generate the class definition - *os << "class " << node->local_name () << be_nl + *os << "class " << idl_global->export_macro () + << " " << node->local_name () << be_nl << "{" << be_nl << "public:\n"; os->incr_indent (0); @@ -630,10 +631,12 @@ be_visitor_module_sh::visit_module (be_module *node) // name only if we are the outermost module if (!node->is_nested ()) // we are outermost module - *os << "class POA_" << node->local_name () << be_nl; + *os << "class " << idl_global->export_macro () + << " POA_" << node->local_name () << be_nl; else // we are inside another module - *os << "class " << node->local_name () << be_nl; + *os << "class " << idl_global->export_macro () + << " " << node->local_name () << be_nl; *os << "{" << be_nl << "public:" |