[Rcpp-devel] R classes extending C++ classes
John Chambers
jmc at stat.stanford.edu
Tue Apr 24 19:05:35 CEST 2012
The two limitations mentioned below, export patterns and loading warning
from CMD check, should have been fixed in the current versions of
r-devel and 2.15 patched. The "global variables" note remains, but it's
been remarked often in other contexts as well.
John
On 4/20/12 9:46 AM, John Chambers wrote:
> As of a recent version of Rcpp on r-forge (rev. 3582 or later), there
> is a new facility for defining an R class extending a C++ class
> extracted from a module.
>
> The main tool is setRcppClass in package Rcpp. See its documentation.
>
> Also in the unittests directory of package Rcpp is an example package,
> testRcppClass, that has some typical applications.
>
> The general idea is that setRcppClass() defines a reference class
> built around a particular C++ class, with optionally additional fields
> and methods defined in R.
>
> The R methods can refer to C++ fields and methods.
>
> The general goal is to be able to use R for prototyping new features
> that could then be implemented in C++ if they are useful and need
> performance.
>
> The new code relies on load-time actions, introduced in R 2.15.0,
> because information about the C++ class is not available until the
> compiled code is linked with the R process. Load time actions allow a
> package to include setRcppClass() calls in its source code in the same
> way other class/method definitions would be. But the action all
> really happens at load time. In particular, any extensions to these
> classes have to be done at load time as well, using load actions or
> setRcppClass() calls.
>
> This is all new stuff and still experimental. There are a couple of
> known limitations, plus probably unknown glitches. For now, objects
> from modules need to be explicitly exported if your package wants to
> export them. (Classes are exported either explicitly or by pattern).
>
> Also, when running your package through CMD check, you may get bizarre
> complaints about loading the package with only base attached. And you
> will very likely get notes about code for any reference class methods
> that refer to field names, which codetools can't distinguish from
> global variables.
>
> John
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
More information about the Rcpp-devel
mailing list