diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-16 18:30:18 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-16 18:30:18 +0000 |
commit | 15eddf33c77f515d000d3a13d37ef1bd70cf29be (patch) | |
tree | 9de7bf75388d3536d6d6240dfd1a87eb825ad2d9 /TAO/TAO_IDL/be/be_visitor_interface.cpp | |
parent | 92e640e82c72a321ade2c816b5946cca5dfd0153 (diff) | |
download | ATCD-15eddf33c77f515d000d3a13d37ef1bd70cf29be.tar.gz |
ChangeLogTag:Thu Apr 16 13:28:59 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface.cpp | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp index b8f13291a1d..9606fbbf8a5 100644 --- a/TAO/TAO_IDL/be/be_visitor_interface.cpp +++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp @@ -1756,20 +1756,22 @@ int be_visitor_interface_collocated_ss::visit_interface (be_interface *node) os->decr_indent (0); os->incr_indent (); -#if defined (ACE_WIN32) - // @@ TODO MSVC++ compiler has some kind of issue (read - // *bug*) wrt nested classes in constructors, if the fully - // qualified name is used it gets all confused. Quite to my - // dismay the work around is to use a non-qualified name for - // the base class! - // I wish I never have to know why the symbol table for - // MSVC++ can get so confused ;-) (coryan) - *os << ": " << node->local_name () - << " (stub, servant, CORBA::B_TRUE)," << be_nl; -#else - *os << ": " << node->name () - << " (stub, servant, CORBA::B_TRUE)," << be_nl; -#endif /* ACE_WIN32 */ + + if (node->defined_in ()) + { + be_decl* scope = + be_scope::narrow_from_scope (node->defined_in())->decl (); + + *os << ": ACE_NESTED_CLASS (" + << scope->name () << "," + << node->local_name () + << ") (servant, stub, CORBA::B_TRUE)," << be_nl; + } + else + { + *os << ": " << node->name () + << " (servant, stub, CORBA::B_TRUE)," << be_nl; + } // @@ We should call the constructor for all base classes, since we // are using multiple inheritance. @@ -1780,20 +1782,21 @@ int be_visitor_interface_collocated_ss::visit_interface (be_interface *node) { be_interface* parent = be_interface::narrow_from_decl (node->inherits()[i]); -#if defined (ACE_WIN32) - // @@ TODO MSVC++ compiler has some kind of issue (read - // *bug*) wrt nested classes in constructors, if the fully - // qualified name is used it gets all confused. Quite to my - // dismay the work around is to use a non-qualified name for - // the base class! - // I wish I never have to know why the symbol table for - // MSVC++ can get so confused ;-) (coryan) - *os << " " << parent->local_coll_name () << " (servant, stub)," - << be_nl; -#else - *os << " " << parent->full_coll_name () << " (servant, stub)," - << be_nl; -#endif /* ACE_WIN32 */ + if (parent->defined_in ()) + { + be_decl* scope = + be_scope::narrow_from_scope (parent->defined_in())->decl (); + + *os << " ACE_NESTED_CLASS (" + << scope->name () << "," + << parent->local_coll_name () + << ") (servant, stub)," << be_nl; + } + else + { + *os << " " << parent->full_coll_name () + << " (servant, stub)," << be_nl; + } } } |