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

Romain Francois romain at r-enthusiasts.com
Tue Oct 23 18:13:53 CEST 2012


I continued this, and now we can also expose free functions returning 
pointers. For example:

Foo* make_foo(){ return new Foo(3, 4) ; }

See svn version of RcppBDT for a real example.

Romain

Le 23/10/12 15:55, Romain Francois a écrit :
> 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