[omniORB] Probable bug in omniidl3 with POA and tie interfaces

Alex Shabarshoff shura@uc.ru
Fri, 14 Jan 2000 13:01:48 +0300


Short problem description:

The interface.idl file looks like:

module A {
  interface Caller;
  interface Processor {
    void Process( in Caller arg );
  };
  interface Caller {
    void DoSome( in Processor arg );
  };
};

When i compile this file with "omniidl3 -tp interface.idl", I get a
header file like this:

_CORBA_MODULE A
_CORBA_MODULE_BEG
  class Caller {
   ...
  }
_CORBA_MODULE_END

_CORBA_MODULE POA_A
_CORBA_MODULE_BEG

  template <class T>
  class Processor_tie : public virtual Processor
  {
    ...
    void Process(Caller_ptr arg) { pd_obj->Process(arg); }
    ...
  }
_CORBA_MODULE_END

So, the compiler complains at "void Process" line. The problem is that the
idl-compiler forgot to attach the module name to Caller_ptr. This line
probably should look like this:

    void Process(A::Caller_ptr arg) { pd_obj->Process(arg); }

This problem appears with tie interfaces only.
Thanks.

       Alex Shabarshoff.
       Union Card Processing Company.
       Moscow, Russia.