[Rcpp-devel] Idiom for accessing scalars

Steve Lianoglou mailinglist.honeypot at gmail.com
Wed Jan 4 16:03:48 CET 2012


2012/1/4 Hadley Wickham <hadley at rice.edu>:
>>> And is there a standard for what you call the C++ equivalent of the R
>>> arguments?  i.e. x_ = as<int>(x) ?
>>
>> I don't think there's a "standard" per se, but I actually tend to do
>> it the other way, ie. put the trailing slash on the incoming SEXP
>> arguments so that my c(++) code is a bit less tedious:
>>
>> f<- cxxfunction(signature(x_="integer"), plugin = "Rcpp", '
>>  int x = as<int>(x_);
>>  ...
>> ')
>
> And then your thin wrapper function would be something like:
>
> my_f <- function(x) f(x_ = x)
>
> right?

Essentially yes:

my_f <- function(x) {
  if (!(is.integer(x) && length(x) == 1L)) stop("Illegal value for `x`)
  f(x_=x)
}

f <- cxxfunction(signature(x_="integer"), plugin = "Rcpp", '
  int x = as<int>(x_);
  // ...
')


-- 
Steve Lianoglou
Graduate Student: Computational Systems Biology
 | Memorial Sloan-Kettering Cancer Center
 | Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact


More information about the Rcpp-devel mailing list