[omniORB] minor idl or msvc compiler bug ?
    Barthel Marco (MPA/DS) 
    Marco.Barthel at tenovis.com
       
    Fri Nov 28 12:16:05 GMT 2003
    
    
  
Hi All, Hi Duncan,
we run into some trouble if we compile the following idl-file (omniORB 4.0.3 and older)
module cc
{
  module base
  {
    interface Data{};
  };
};
#pragma prefix "cc/base"
interface Data : cc::base::Data {};
#pragma prefix ""
We use this because we want to move to Java, had no modules in the past and do not want to touch C++ Code massively.
results in stub-code is like this:
04 class POA_Data :
05   public virtual _impl_Data,
06   public virtual POA_cc::base::Data
07 {
08 public:
09   virtual ~POA_Data();
10 
11   inline Data_ptr _this() {
12     return (Data_ptr) _do_this(Data::_PD_repoId);
13   }
14 };
MS-VC 6.0/7.1 can't compile the stubs because it can't find "Data::_PD_repoId" from line 12. The Compiler only searches the "POA_cc::base" namespace of the base class and can't find Data::_PD_repoId which is in the global namespace.
When I change the name of the base-interface from Data to LData the stubs compile - I do not understand why - can someone explain ?
When I change line 12 to
12     return (Data_ptr) _do_this(::Data::_PD_repoId);
by explicity refering to the global scope(added "::")  it compiles.  Do I mess up things with my change ?
If not, it would be nice if the change to the backend could be added to a future release.
Thanks.
-marco
    
    
More information about the omniORB-list
mailing list