[omniORB] two dimensional arrays

jshannon jshannon@falcon.cc.ku.edu
Wed, 27 Feb 2002 14:25:34 -0600


I'm trying to pass a two dimensional array of bytes from a JacOrb Server to an 
OmniOrb client, and have been unable to do so.

The pertinent idl both client and server side look like:

interface IvpBroker
{
        const short NUM_WALLS = 6; 		/* Number of walls */
        typedef double vector_array[4];	  	/* a CHenonVector  */
        typedef double complex_array[2]; 	/* a CHenonComplex */
        typedef sequence <octet> aWall;       	/* one wall        */
        typedef aWall Walls[NUM_WALLS];		/*

	Walls updateWalls("A BUNCH OF PARAMETERS");		
};

Using a Java client (for testing), I obtain a reference and use:

byte theWalls[][] = null;
theWalls = ivpBroker.updateWalls("Pass a bunch of parameters..");

All is fine; however, when I try to use a C++ client, I can't seem to at the 
values.  I have tried several approaches, and can get none to work.  The 
compiler says that that the return type from:

theWalls = hc->broker->updateWalls("parameters");

Is a 'divp::IvpBroker::Walls_slice *'  Why not a '**'???
Is all the data structure really there?
Should I cast or do I need to get the array one dimension at a time(which 
kills my performance)?

Thanks in advance...
Joe

Joe Shannonhouse
EECS Department 
University of Kansas
219 Snow Hall (785)864-7381
Lawrence, KS 66045 
shannj@eecs.ukans.edu