Hi,

I have an issue whith nested structures.

I made some "dummy" structures in c:


typedef struct vec3 {
     double data[3];
} vec3;

typedef struct position {
     int i;
     vec3 vec;
} position;
And a "dummy" function to fill it:
void fillStruct(position *position)
{
    position -> i = 19;
    (position -> vec).data[0] = 1;
    (position -> vec).data[1] = 2;
    (position -> vec).data[2] = 3;
}

But I can't make the nested structure work.
The "i" is correctly set to 19 but I have values that doesn't make any
sense in the vec3 structure.

In Pharo
I declared the Double3 type for the array inside Vec3:
Double3 := FFITypeArray ofType: 'double' size: 3

Vec3>>fieldsDesc
    ^ #(
    Double3 v;
)

And the position:
Position>>fieldsDesc
    ^ #(
    int i;
    Vec3 vec;
)

The ffi call:
^ self ffiCall: #(void fillStruct(Position *position)) module: 'Test.dll'

Sorry for the long / messy mail :p

Any clues ?

Cheers,
Merwan

Reply via email to