[Rcpp-devel] modules feature added (rev 3814)

Romain Francois romain at r-enthusiasts.com
Tue Oct 23 15:55:01 CEST 2012


Hello,

I've added the possibility for exposed classes to expose a method that 
returns a pointer of the class. That is not easy to explain in a 
sentence, here is an example code:

class Foo{
         public:
             Foo( double x_, double y_) : x(x_), y(y_){}

             Foo* clone(){
                 return new Foo( x, y) ;
             }

             double x, y ;

     } ;

The "clone" method return a Foo*, and so previously it could not be 
exposed to R with modules.

Now, with commit 3814, we can write:

class_<Foo>("Foo" )
             .constructor<double,double>()
             .method( "clone", &Foo::clone )

             .field( "x", &Foo::x )
             .field( "y", &Foo::y )

         ;

And on the R side:

 > x <- new( Foo, 2.4, 3.5 )
 > y <- x$clone()

Thos are not the same objects (not the same internal pointer)
 > x
C++ object <0x1006e1e20> of class 'Foo' <0x1006ccb60>
 > y
C++ object <0x10330cc00> of class 'Foo' <0x1006ccb60>

Romain

-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
R Graph Gallery: http://gallery.r-enthusiasts.com
blog:            http://romainfrancois.blog.free.fr
|- http://bit.ly/xbKv0R : Crawling facebook with R
|- http://bit.ly/v3WB8S : ... And now for solution 17, still using Rcpp
`- http://bit.ly/uaQDGr : int64: 64 bit integer vectors for R



More information about the Rcpp-devel mailing list