[omniORB] idl compile error

Sai-Lai Lo S.Lo@orl.co.uk
02 Oct 1998 14:34:27 +0100


>>>>> Seong-Gu Kim writes:

> interface MobilityAgent {
> ...

>    BIBStatus refreshFlowBundle(in long fbi,
>      inout EndPointList host_A[2],
>      inout EndPointList host_B[2],
>      inout double msr_time) raises (Reject);
>   ...
> };
> #endif
> Here I am using array (host_A[2],host_B[2]), but it makes the error. I tried
> to put in module for #include files. But it didn't work.
> In EndPoint.idl, there are also arrays, which are in structures, but it is
> fine.

> Please teach me what is wrong.

Since CORBA specification 2.0, it is invalid to have array declarator in
the operation parameter list. Any IDL compiler which still accepts such a
construct is non-compliant. I leave it to you to verify this with the BNF
rules of OMG IDL.

Try this:

typedef EndPointList EndPointListTuple[2];

BIBStatus refreshFlowBundle(in long fbi,
                            inout EndPointListTuple host_A,
                            inout EndPointListTuple host_B,
                            inout double msr_time) raises (Reject);

Sai-Lai


-- 
Dr. Sai-Lai Lo                          |       Research Scientist
                                        |
E-mail:         S.Lo@orl.co.uk          |       Olivetti & Oracle Research Lab
                                        |       24a Trumpington Street
Tel:            +44 223 343000          |       Cambridge CB2 1QA
Fax:            +44 223 313542          |       ENGLAND