Neil,
I was playing with Inline::Struct today and noticed that it doesn't support
nested structs. Here's a script to illustrate the point:
use Inline C => <<'END' => STRUCTS => 1;
struct POINT {int x; int y;};
struct RECT {POINT a; POINT b;};
END
my $a = Inline::Struct::POINT(1,2);
my $b = Inline::Struct::POINT(3,4);
printf("a: [%d, %d]\n", $a->x, $a->y);
printf("b: [%d, %d]\n", $b->x, $b->y);
my $r = Inline::Struct::RECT($a,$b);
printf("a: [%d, %d], b: [%d, %d]\n",
$r->a->x, $r->a->y,
$r->b->x, $r->b->y);
__END__
results in:
>struct.pl
a: [1, 2]
b: [3, 4]
Can't locate object method "new" via package
"Inline::Struct::RECT" at C:\TEMP\struct.pl line 11.
I'm guessing, but it appears that a typemap entry for POINT doesn't exist
when it is time to parse RECT, and so RECT's struct definition isn't
recognized. Do you think this is what is happening?
I think I remember you originally intended to support nested structs. So I'm
hoping this will make it into a future release. Let me know if there is
anything I can do to help.
Garrett