Hi,
The PDL source has some XS code that looks like basically this:
SV *
at_c(x,position)
pdl* x
PDL_Long * pos = NO_INIT
CODE:
// code that does stuff
OUTPUT:
RETVAL
And that format has been working quite well for quite some time - and still works with ExtUtils-ParseXS-2.2210.
But, with the latest ExtUtils-ParseXS-3.03 that produces the error "Could not find a typemap for C type 'PDL_Long *'".
It seems that having the
PDL_Long * pos declaration *before* the
CODE block is now sending the message that the PDL_Long * type needs to be bound to perl via a typemap entry. (Perhaps it should *always* have been sending that message ? ... I don't know.)
I can fix the problem by altering the code to:
SV *
at_c(x,position)
pdl* x
CODE:
PDL_Long * pos;
// code that does stuff
OUTPUT:
RETVAL
Is that the right thing to do ?
Or is ExtUtils-ParseXS-3.03 doing something it shouldn't ?
Btw, I don't know what
NO_INIT is. It doesn't seem to be defined in the PDL code, so I guess it's some XS symbol.
I should also mention that PDL_Long is just a typedef for int (in pdl.h).
Cheers,
Rob