[omniORB] Recursive sequences

Robert Gartler gartler at knapp.com
Wed Feb 22 15:45:23 GMT 2012


Hi!

I have a problem with omniORB 4.1.6 and omniORBpy 3.6.

I used to use anonymous sequences to build recursions:

         struct ReservationTreeNode {
             string zoneName;
             sequence<ReservationTreeNode> children;
         };

But when I used omniidl to build the python bindings, omniidl complained:
Warning: Anonymous sequences for recursive structures are deprecated. 
Use a forward declaration instead.

So I did what I was told and changed my IDL to use named sequences:

         struct ReservationTreeNode;
         typedef sequence<ReservationTreeNode> ReservationTreeNodeList;
         struct ReservationTreeNode {
             string zoneName;
             ReservationTreeNodeList children;
         };

Now omniidl is happy, but the following python line doesn't work anymore 
once the content_type is a ReservationTreeNodeList:

tc.content_type().kind()

....
   File "/home/gartler/knapp/lager/bin/gcs_lib.py", line 78, in 
printSequence
     print_map[tc.content_type().kind()](
   File "/usr/local/lib/python2.7/site-packages/omniORB/tcInternal.py", 
line 716, in content_type
     return createTypeCode(self._d[1], self)
   File "/usr/local/lib/python2.7/site-packages/omniORB/tcInternal.py", 
line 431, in createTypeCode
     return createTypeCode(d[1][0], parent)
   File "/usr/local/lib/python2.7/site-packages/omniORB/tcInternal.py", 
line 365, in createTypeCode
     raise CORBA.INTERNAL()
CORBA.INTERNAL(0x0, CORBA.COMPLETED_NO)
Exception:  CORBA.INTERNAL(0x0, CORBA.COMPLETED_NO)

Does anybody have an idea on how to solve this?

Cheers,
  Robert

-- 
Ing. Robert Gartler, BSc
Head of SRC and Guardian Development
-------------------------------------------------------
KNAPP AG
Günter-Knapp-Strasse 5-7
A-8075 Hart bei Graz, Austria




More information about the omniORB-list mailing list