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&.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.