[omniORB] C++ mapping of out parameters (omniORB 3.00 pre1)

David Riddoch djr@uk.research.att.com
Wed, 29 Sep 1999 12:26:03 +0100 (GMT)


Hi Christof,


Yes -- I think you're right.  The mapping for CORBA 2.1 says you use the
types given in the table "Basic Argument and Result Passing".  For CORBA
2.2 and later it says that T_out types should be used for out arguments.
I guess we just missed this change.

My opinion is that it is totally unnecassary, and causes pain to everyone
because you (the application writers) will have to change the signatures
of many of your methods in your implementation.  I think I'll leave the
old signatures there as an option to omniidl.

NB. I'm making the changes to the omniORB3 tree.  I can't say when or if
they will also be available for 2.8.


Cheers,
David



On Tue, 28 Sep 1999, Christof Meerwald wrote:

> Given the following IDL:
> 
> interface test
> {
>   typedef sequence<octet> OctetSeq;
> 
>   void method(out OctetSeq out_param);
> };
> 
> 
> I'm wondering why omniidl produces the following C++ header file:
> 
> 
> class _impl_test :
>   public virtual omniServant
> {
> public:
>   virtual ~_impl_test();
> 
>   virtual void method(test::OctetSeq*& out_param) = 0;
>   // shouldn't this be:
>   // virtual void method(test::OctetSeq_out out_param) = 0;
> 
> // ...
> };
> 
> 
> class POA_test :
>     public virtual _impl_test,
>     public virtual PortableServer::ServantBase
> {
> // ...
> 
> 
> 
> bye, Christof
> 
> -- 
> Don't hate yourself in the morning... sleep until noon!
> 
> 
>