Peter Dalgaard BSA writes:
Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> writes:
What I need is to call runif() (more precisely, `runif(1, 0, 1)') from
inside a C function. Is this possible using call_S? If so, how?
Hmm ... Stupid counter-question: Did you study the zfun() function in
$RHOME/demos/dynload/zero.c ? Looks pretty straightforward to me,
except that I have no offhand guess what the 0L argument to call_S is
good for. Peeking at the source should cure that.
I did. I hoped that something like
static char *func = "runif";
double unif_rand() {
return(result[0]);
}
might work, but it does not ...
Aha. I see, call_R seems to want an SEXP parameter, not a character
pointer. So some way of converting "runif" into the relevant SEXPREC
seems to be needed. Something like mkChar() <um, no, that doesn't seem
to be the way to make a "SEXPsymbol"..> followed by findFun(). Or just
pass it as a parameter to .C