[Rcpp-devel] Code review for xtensor R bindings

Dirk Eddelbuettel edd at debian.org
Wed Jun 7 01:27:21 CEST 2017


On 6 June 2017 at 17:06, Dirk Eddelbuettel wrote:
| The general idea when working with R objects is that
| 
|   -- on the way in from R to the C++ functions we construct object such that
|      the existing memory (from R) is used; one example is how RcppArmadillo
|      uses the 'advanced' constructors of Armadillo allowing to operate
|      without copies; hence R managed memory is used while C++ functions are
|      called; in general this side of the conversion is the templates as<>()
|      converters;
|      
|   -- on the way back we use the *alloc functions from the C-level API of R to
|      construct objects that use memory from R's pool, once we return these
|      objects to R as SEXP they are indistinguishable to R from its own; these
|      are the wrap() functions (and I think we may make on occassion make "one
|      final copy" at his level, but I'd have to double-check).     

Actually, let me rephrase: "in most cases not involving native R types" do we
make one copy at the return.

The general approach is iterator based, see internal/wrap.h. But there is a
lot of template magic...

Dirk

| I haven't had a chance to look at what Wes is doing with Apache Arrow, and
| what is happening with xtensor -- so thanks for getting the ball rolling.
| 
| Dirk
|      
| -- 
| http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
| _______________________________________________
| 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

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list