From morg@n@em@||box @end|ng |rom gm@||@com  Mon Nov  4 20:40:50 2019
From: morg@n@em@||box @end|ng |rom gm@||@com (Morgan Morgan)
Date: Mon, 4 Nov 2019 19:40:50 +0000
Subject: [Rd] Questions on the R C API
Message-ID: <CAL0QV_MtU9Qa7umGg9AZtrvstPARFYR0bhEFwEqJPuZLTcpDqw@mail.gmail.com>

Hi All,

I have some questions regarding the R C API.

Let's assume I have a function which is defined as follows:

R file:

myfunc <- function(a, b, ...) .External(Cfun, a, b, ...)

C file:

SEXP Cfun(SEXP args) {
  args = CDR(args);
  SEXP a = CAR(args); args = CDR(args);
  SEXP b = CAR(args); args = CDR(args);
  /* continue to do something with remaining arguments in "..." using the
same logic as above*/

  return R_NilValue;
}

1/ Let's suppose that in my c function I change the value of a inside the
function but I want to reset it to what it was when I did SEXP a =
CAR(args); . How can I do that?

2/Is there a method to set "args" at a specific position so I can access a
specific value of my choice? If yes, do you have an simple example?

3/ Let's suppose now, I call the function in R. Is there a way to avoid the
function to evaluate its arguments before going to the C call? Do I have to
do it at the R level or can it be done at the C level?

Thank you very much in advance.
Best regards
Morgan

	[[alternative HTML version deleted]]



[Rd] Questions on the R C API
Morgan Morgan