in reply to Inline CPP function not found

Does it run if you switch double& to double? If so, it's a lack of entry in the typemap to handle double&.

Update: I managed to get Inline::CPP installed (with a patch from a bug report), and confirmed that the problem is indeed that double& isn't handled. I was able to make the code work using the following:

int f(double a, double b, double c, SV* x, SV* y, SV* z) { int error = -2; SvUPGRADE(x,SVt_NV); SvNV_set(x,a+42); SvNOK_on(x); SvSETMAGIC(x); SvUPGRADE(y,SVt_NV); SvNV_set(y,b+42); SvNOK_on(y); SvSETMAGIC(y); SvUPGRADE(z,SVt_NV); SvNV_set(z,c+42); SvNOK_on(z); SvSETMAGIC(z); return error; }

It may also be possible to keep the original prototype by creating a typemap entry for double&.

Replies are listed 'Best First'.
Re^2: Inline CPP function not found
by markov (Scribe) on May 16, 2011 at 21:29 UTC
    Very useful, thank you. With a wrapper I can call the original function with it.